函数参数
1. 形参:定义函数时的参数
2. 实参:调用函数时传入的参数(位置实参:按顺序传入,关键字实参:直接指定参数)
注意:当传入的参数为数值时为值传递,当传入的参数是list、dict时为引用传递,对参数修改会影响原始数据
值传递:
def fun(arg):
arg = 2
if __name__ == "__main__":
a = 1
fun(a)
print(a) # a = 1
引用:
def fun(arg):
arg[0] = 2
if __name__ == "__main__":
a = [ 1 ]
fun(a)
print(a) # a = 2
函数参数默认值
1. 当传入参数时覆盖默认参数,否则使用默认参数
2. 定义函数时,默认参数要放在不是默认参数的右边
函数可变参数:0个或多个参数
1. *args传入的参数为元组(把参数打包成元组再传入,元素个数不确定)
2. **arg传入的参数为字典
注意:可变参数要放在不可变参数的右边,否则不可变参数被包含进可变参数里面
def fun(*arg, **arg2):
print(type(arg))
print(type(arg2))
for i in arg:
print(i)
for i in arg2.keys():
print(i, arg2[i])
if __name__ == "__main__":
a = 1
fun(1, 2, 3, a=1, b=2)
返回值
1. 默认返回None
2. 可返回任意类型
在函数内定义函数
1. 这个内部函数只能在内部使用
def fun(arg):
def fun2(arg):
print(arg)
print(arg)
函数作为参数
1. 类似于C语言的回调
def call_back_fun(*arg):
for i in arg:
print(i)
def fun(callBackFun, *arg):
callBackFun(arg)
if __name__ == "__main__":
a = 1
b = 2
fun(call_back_fun, a, b)