文章是基于:
哔哩哔哩上的《黑马程序员python教程,8天python从入门到精通,学python看这套就够了》视频教程所做的学习笔记,仅为学习使用!!如有侵权,联系删除
目录
一、函数介绍
二、函数的定义
三、函数的参数
四、函数的返回值
(一)返回值的定义
(二)None类型
五、函数说明文档
六、函数的嵌套调用
七、变量的作用域
(一)局部变量
(二)全局变量
八、综合案例
九、函数进阶
(一)函数多返回值
(二)函数多种传参方式
1、位置参数
2、关键字参数
3、缺省/默认参数
4、不定长参数
位置传递
关键字传递
(三)匿名函数
1、函数作为参数传递
2、lambda匿名函数
是组织好的,可重复使用的,用来实现特定功能的代码段(块)
为了得到一个针对特定需求、可供重复利用的代码段
提高程序的复用性,减少重复性代码,提高开发效率
def my_len(data):
count = 0
for i in data:
count += 1
print(f"字符串{data}的长度是{count}")
my_len(str1)
my_len(str2)
my_len(str3)
思考:如果函数没有使用return语句返回数据,那么函数有返回值吗?
Python中有一个特殊的字面量:None,其类型是:
None表示:空的、无实际意义的意思
这个函数没有返回什么有意义的内容,也就是返回了空的意思。
变量作用域指的是变量的作用范围(变量在哪里可用,在哪里不可用)
定义在函数体内部的变量,即只在函数体内部生效,在函数外部访问则立即报错
作用:在函数体内部,临时保存数据,即当函数调用完成后,则销毁局部变量
使用 global关键字 可以在函数内部声明变量为全局变量,函数内外定义的同名变量现在就是同一个
"""
演示函数综合案例开发
"""
# 定义全局变量money name
money = 5000000
# 要求客户输入姓名
name = input("请输入您的姓名:")
# 定义查询函数
def query(show_header):
if show_header:# 通过传入的bool参数来决定是否输出抬头
print("-------------查询余额------------")
print(f"{name},您好,您的余额剩余:{money}元")
# 定义存款函数
def saving(num):
global money # money在函数内部定义为全局变量
money += num
print("-------------存款------------")
print(f"{name},您好,您存款{num}元成功。")
# 调用query函数查询余额
query(False)
# 定义取款函数
def get_money(num):
global money
money -= num
print("-------------取款------------")
print(f"{name},您好,您取款{num}元成功。")
# 调用query函数查询余额
query(False)
# 定义主菜单函数
def main():
print("-------------主菜单------------")
print(f"{name},您好,欢迎来到黑马银行ATM。请选择操作:")
print("查询余额\t[输入1]")
print("存款\t\t[输入2]")
print("取款\t\t[输入3]") # 通过\t制表符对齐输出
print("退出\t\t[输入4]")
# 通过函数返回值来存储用户输入的选择,通过变量接收返回值
return int(input("请输入您的选择:"))
# 设置无限循环,确保程序不退出
# 通过continue实现“查询余额、存款、取款后都会返回主菜单”
while True:
keyboard_input = main()
if keyboard_input == 1:
query(True)
continue # 通过continue继续下一次循环,一进来就是回到了主菜单
elif keyboard_input == 2:
num = int(input("您想要存多少钱?请输入:"))
saving(num)
continue
elif keyboard_input == 3:
num = int(input("您想要取多少钱?请输入:"))
get_money(num)
continue
else:
print("程序退出啦")
break # 通过break退出循环
def user_info(name, age, gender):
print(f"你的名字是{name},年龄是{age},性别是{gender}")
user_info("TOM", 20, "男")
传递的参数和定义的参数的顺序及个数必须一致
def user_info(name, age, gender):
print(f"您的名字是:{name},年龄是:{age},性别是:{gender}")
# 关键字传参
user_info(name="小明", age=20, gender="男")
# 可以不按照固定顺序
user_info(age=20, gender="男", name="小明")
# 可以和位置参数混用,位置参数必须在前,且匹配参数顺序
user_info("小明", age=20, gender="男")
def user_info(name, age, gender='男'):
print(f"您的名字是{name}, 年龄是{age}, 性别是{gender}")
user_info("汤姆", 20)
user_info("Rose" , 18, "男")
def user_info(*args):
print(args)
# ('Tom')
user_info("Tom")
# ('Tom', 18)
user_info("Tom", 18)
def user_info(**kwargs):
print(kwargs)
# {'name':'Tom', 'age':18, 'id':110}
user_info(name="Tom", age=18, id=110)
def test_func(compute):
result = compute(1, 2)# 确定compute是函数
print(type(coumpute))# 结果是
print(result)
def compute(x, y):
return x + y
test_func(compute) # 结果:3