寻找变量的值时,优先在自己的作用域中找,自己没有的话去父级作用域找
全局变量:在非函数中定义的变量。
局部变量:在函数中定义的变量。函数内部变量在函数执行完后所占空间会销毁。
潜规则:定义全局变量时,要用大写。
global关键字:
global用在函数中表示此变量不是新建的数据,而是全局变量中的那个数据(地址指向相同)
1.函数的多返回值
#函数的多返回值
def info_1():
return 1,"chne"
date,name = info_1()
print(f"日期是{date}名字是{name}")
2.函数的多种参数使用形式
不定长参数是指可以传入若干个参数,参数个数不固定
3.
函数作为参数进行传递
def test_1(add):
result = add(1,2)
print(f"结果是{result}")
def add(x,y):
return x+y
test_1(add) #进行调用
lambda定义匿名函数,
有名称的函数能根据名称使用多次,无名称的匿名函数只可以临时使用一次,且函数体只能有一行
定义格式:lambda 传入参数:函数体
例如:将上面的代码进行改写
def test_1(add):
result = add(1,2)
print(f"结果是{result}")
test_1(lambda x,y:x+y)
动态参数:一个*
def func(*a):
# 动态传参,每次可以传入任意个参数,用户传来的参数会被统一打包为元组
print(a)
func(1)
func(11,22)
func(11,22,33)
输出:
(1,)
(11, 22)
(11, 22, 33)
两个*:(也可以传入任意个参数,但是只能用关键字形式进行传参)
def func(**a):
# 动态传参,每次可以传入任意个参数,必须以关键字传参,用户传来的参数会被统一打包为字典
print(a)
func(v1=1)
func(v2=11, v3=22)
func(v4=11, v5=22,v6=33)
输出:
{'v1': 1}
{'v2': 11, 'v3': 22}
{'v4': 11, 'v5': 22, 'v6': 33}
两种方式也可以进行混合,但是关键字传参要在后边
def func(*b, **a):
# 动态传参,每次可以传入任意个参数,会分别打包为元组和列表
print(b,a)
func(1,2,3, v4=11, v5=22,v6=33)
输出:
(1, 2, 3) {'v4': 11, 'v5': 22, 'v6': 33}
潜规则:在定义动态参数时一个*用args,两个*用kwards
例:
def func(*args, **kwards):
# 动态传参,每次可以传入任意个参数,会分别打包为元组和列表
print(b,a)
func(1,2,3, v4=11, v5=22,v6=33)
接受任意参数相加后返回结果:
def func(*args):
nub = 0
for i in args:
nub += i
return nub
print(func(1,2,3))