python作用域的顺序_Python全栈__动态参数、名称空间、作用域、作用域链、加载顺序、函数的嵌套、global、nonlocal...

1、动态参数

当实参数量与形参数量相等时,参数传递正常。

def func1(a, b, c):

pass

func1(1, 2, 3)

20180904193256591211.png

当实参数量与形参数量不相等时,则会报错。

def func1(a, b, c):

pass

func1(1, 2, 3, 4, 5, 6, 6)

20180904193256867589.png

用户传入到函数中的实参数量不确定时,或者为了以后扩展,此时要用到动态参数 *args **kwargs(万能参数)。

顺序:

位置参数,*args,默认参数,**kwargs

1、*args

*args是接收的是所有的位置参数。

def func(*args, **kwargs):

print(args)

print(kwargs)

func(1, 2, 3, 4)

20180904193257024821.png

注意:print()里面的args前面不能带 * 。

2、**kwargs

**kwargs接收的是所有的关键字参数。

def func(*args, **kwargs):

print(args)

print(kwargs)

func(x=4, y=5, z=6)

20180904193257156662.png

注意:print()里面的args前面不能带 * 。

def func(*args, **kwargs):

print(args)

print(kwargs)

func(1, 2, 3, x=4, y=5, z=6)

20180904193257329521.png

顺序

位置参数,默认参数

def func2(a, b, sex = ‘男‘):

print(a)

print(b)

print(sex)

func2(1, 2, ‘女‘)

20180904193257476011.png

位置参数、*args、默认参数

def func2(a, b,*args, sex = ‘男‘):

print(a)

print(b)

print(args)

print(sex)

func2(1, 2, 5,6,7,8,9, sex=‘女‘)

20180904193257649845.png

位置参数、*args、默认参数、**kwargs

def func2(a, b, *args, sex=‘男‘,age=20, **kwargs):

print(a)

print(b)

print(args)

print(sex)

print(age)

print(kwargs)

func2(1, 2, 5, 6, 7, 8, 9, x=6, y=5, name=‘alex‘)

20180904193257831493.png

加法器:

def sum1(*args):

ret = 0

for i in args:

ret += i

return ret

print(sum1(1, 2, 3,))

20180904193257954545.png

def func3(*args, **kwargs):

print(args)

print(kwargs)

l1 = [1, 2, 3]

l2 = [11, 21, 32]

func3(l1, l2)

20180904193258122520.png

def func3(*args, **kwargs):

print(args)

print(kwargs)

l1 = [1, 2, 3]

tu1 = (1, 2, 3)

tu2 = (11, 22, 33)

func3(*l1, *tu1, *tu2)

20180904193258265103.png

def func3(*args,**kwargs):

print(args)

func3(1, 2, 3, 1, 2, 3, 11, 22, 33)

20180904193258371553.png

在函数的定义中, * 是聚合的意思。

def func3(*args,**kwargs):

print(args)

print(kwargs)

l1 = [1, 2, 3]

dic ={‘name‘: ‘alex‘}

dic1 ={‘age‘: 1000}

func3(*l1, **dic, **dic1)

20180904193258471166.png

* 的魔性用法:

def func3(*args,**kwargs): # 函数的定义 *用意是聚合。

print(args)

print(kwargs)

l1 = [1, 2, 3]

tu1 = (1, 2, 3)

tu2 = (11, 22, 33)

func3(*l1, *tu1, *tu2)

20180904193258587381.png

def func3(*args,**kwargs):

print(args)

print(kwargs)

func3(1,2,3,1,2,3,11,22,33)

20180904193258693831.png

def func3(*args,**kwargs):

print(args)

print(kwargs)

l1 = [1, 2, 3]

dic ={‘name‘: ‘alex‘}

dic1 ={‘age‘: 1000}

func3(*l1, **dic, **dic1)

20180904193258814929.png

2、名称空间、作用域、作用域链、加载顺序

1、空间名称

2、作用域

3、作用域链

4、加载顺序

3、函数的嵌套

4、global、nonlocal

1、global

2、nonlocal

原文:https://www.cnblogs.com/ZN-225/p/9587944.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值