函数
一 函数的定义、语法、调用
定义
函数: 对代码块和功能的封装和定义
语法
我们使用def关键字来定义函数, 函数的定义语法:
def 函数名(): 函数体
函数名的命名规则和使用和变量基本一样
函数体:函数被执行之后要执行的代码
调用
使用函数名可以调用函数
写法:函数名()
二 函数的返回值
1.函数遇到return,此函数结束,不再继续执行
2.给函数的调用者一个访问结果
3.函数的返回值可以有多个结果
4.如果不写return,或者return后什么都不写,那么返回None
5.如果返回是多个结果,则调用者会接收一个tuple,可以直接解构成多个变量
三 函数的参数
定义
参数:函数在调用的时候制定具体的一个变量的值,就是参数
语法
def 函数名(参数列表): 函数体
参数
分类
1.实参
位置参数
按照形参的参数位置, 给形参传值
def yue(chat, address, age): # 形参 print(chat, address, age) yue("微信","北京","20")
关键字参数
按照形参的名字给形参传值
yue(chat="微信", age=18, address="北京") # 关键字参数.
混合参数
即用位置参数, 也用关键参数
# 混合参数 yue("微信", age=18, address="上海") # 正确.第一个位置赋值给chat, 后⾯的参数开始 指定关键字. yue(age="18", "微信", address="广州") # 错误, 最开始使用了关键字参数, 那么后⾯的 微信的位置就串了, 容易出现混乱
2.形参
1. 位置参数
按照位置来赋值
def yue(chat, address, age): return 0
2. 默认值参数
在函数声明的时候,就可以给出函数参数的默认值,在调用的时候可以给出具体的值,也可以不给值,使用默认值
def yue(chat, address, age=18): return 0
动态参数
1.动态接收位置参数
*args
def chi(*food): print("我要吃", food) chi("米饭", "扬州炒饭") 结果: 我要吃 ('米饭', '扬州炒饭') # 多个参数传递进去. 收到的内容是元组tuple
2.动态接收关键字参数
**kwargs
def func(**kwargs): print(kwargs) func(a=1, b=2, c=3) func(a=1, b=2) 结果: {'a': 1, 'b': 2, 'c': 3} {'a': 1, 'b': 2}
最终顺序(*): 位置参数 > *args > 默认值参数 > **kwargs
def fun(*args): print(args) lst = [1, 4, 7] fun(lst[0], lst[1], lst[2]) fun(*lst) # 可以使用*把1个列表按顺序打散 s = "臣妾做不到" fun(*s) # 字符串也可以打散, (可迭代对象)
在实参位置上给一个序列,列表,可迭代对象前面加个*表示把这个序列按顺序打散.
在形参的位置上的* 表示把接收到的参数组合成一个元组
如果是一个字典, 那么也可以打散. 不过需要用两个*
def fun(**kwargs): print(kwargs) dic = {'a':1, 'b':2} fun(**dic)