Python基础知识(day9)
day9
今日内容
- 参数
- 作用域
- 函数嵌套
内容详细
-
参数
-
任意个数
-
任意类型
# 参数科任意个数,任意类型 def func(a1, a2, a3): print(a1, a2, a3) # 调用传参必须一一对应 func(1, 'llk', True )
-
-
位置传参(调用函数并传入参数)
传参与位置一一对应
-
关键字传参
def func(a1, a2, a3): print(a1, a2, a3) # 关键字传参可以改变位置 func(a1 = 2, a3 = 99, a2 = True) # 关键字传参可以和位置传参混合使用 def func(a1,a2,a3): print(a1,a2,a3) func(1,'llk',a3 = 9) # 位置参数必须在前
-
默认参数[定义]
# func接收两个参数,调用函数传值时,已定义的值可传或不传 def func(a1,a2=99): pass func(1,2) func(1)
-
万能参数(打散)
-
*args
def func(*a1): # a1潜规则为args pass func(1,2) # a1 = (1,2) func((1,2,3)) # a1 = ((1,2,3),) func(*(1,2,3)) # a1 = (1,2,3) def funcb(a1,*args): pass funcb(1,2,3,4,5) # print -> 1(2,3,4,5)
-
只能用位置传参
-
可以接收任意个数的参数,并将参数转换成元组
-
调用函数无*
def func(*args): print(args) func(1,2,3,4)
-
调用函数有*
def func(*args): print(args) func(*(1,2,3,4))
-
-
**kwargs
-
只能关键字传参
-
可以接收任意个数的关键字参数,并将参数转换为字典
-
调用函数无**
def func(**kwargs): print(kwargs) func(k1=1,k2='llk')
-
调用函数有**
def func(**kwargs): print(kwargs) func(**{'k1':'v1','k2':'v2'}) # kwargs={'k1':'v1','k2':'v2'}
-
-
综合应用
def func(*args,**kwargs): print(args,kwargs)
-
作用域
python中
-
py文件:全局作用域
-
函数:局部作用域
a = 1 def s1(): x1 = 666 print(x1) print(a) print(b) b = 2 print(a) s1()
-
总结
-
一个函数是一个作用域
-
作用域查找数据规则:优先在本身作用域找数据,再到父级找,逐层往上,直到全局,否则报错
-
子作用域只能找到父级的值,而不能对他进行重新赋值
-
全局变量以后必须全部是大写
-