1.函数传递的类型
普通参数
以正确数量和顺序声明的参数
def f (a,b):
print(a,b)
f(1,2) #(1,2按顺序传递到a和b中)
关键字参数
函数调用时以关键字传递,可以更改顺序.
def f(a,b):
print(a,b)
f(b=2,a=1)
默认参数
形参中设定默认值的参数,需要放在普通参数后面.
def f(a,b,c=3):
print(a,b,c)
f(1,2) #输出1,2,3
f(1,2,5) #输出1,2,5
f(a=1,b=6,c=8) #输出1,6,8
不定长参数/收集参数
一个形参可以接受多个实参.
def f(a,b,*c):
print(a,b,c)
f(1,2,3,4,5,6,7) #输出结果为1,2 (3,4,5,6,7),3-6以元组的形式被c接收
任意数量的关键字参数
def f(a,b,**c):
print(c)
f(1,2,name="老王",sex="男性") 输出结果为{'name': '老王', 'sex': '男性'} 以字典的形式被接收.
2.变量的作用域
全局变量与局部变量
定义在函数内的变量,具有局部的作用域.
定义在函数外的变量,具有全局的作用域.
a=1
def f():
b=a+1
print(b)
f()
a为全局变量,b为局部变量,a在函数f中仅可访问.
局部变量全局变量与的转换
def f():
global a #声明将a作为全局变量,若a不是全局变量,下面的函数g便无法访问.
a=1
f()
def g():
b=a+1
print(b)
g()
全局变量的修改
a=1
def f():
global a #声明将全局变量a可以在函数内部修改,若不声明会报错
a=a+8
print(a)
f()