首页 > 其他 > 详细

Day10

时间:2018-03-29 18:18:37      阅读:186      评论:0      收藏:0      [点我收藏+]

1、动态参数

*args 动态参数,万能参数

args接受的就是实参对应的所有位置参数,并将其放在元祖中

形参对应顺序

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

def func(a,b,c,d,*args,e=):
    print(a)
    print(b)
    print(c)
    print(d)
    print(args)
    print(e)
func(1,2,3,4,5,6,7,e=)

#**kwargs:动态传参,将所有的关键字参数(无意义的)放到一个字典中

def func(a,b,c,**kwargs):
    print(kwargs)
func(1,2,r=4,b1=5,c1=6,c=7)
def func(a,b,c,d,*args,e=,**kwargs):
    print(a)
    print(b)
    print(c)
    print(d)
    print(args)
    print(e)
    print(kwargs)
func(1,2,3,4,5,6,7,v=3,m=7,h=9,e=)

最终顺序:位置参数,*args,默认参数,**kwargs

*魔法运用

def func(*args):
    print(args)
l1=[1,2,30]
l2=[1,2,33,21,45,66]
func(*l1,*l2)
def func(**kwargs):
    print(kwargs)
dic1={name1:alex,age1:33}
dic2={name:老男孩,age:56}
func(**dic1,**dic2)

在函数的调用执行时,

  *可迭代对象,代表打散(list,tuple,str,dict(键))将元素一一添加到args

  **字典,代表打散,将所有键值对放到一个kwargs字典中

在函数定义时,*args,**kwargs代表的是聚合

2、名称空间,临时名称空间

名称空间(命名空间),临时名称空间,内置名称空间

全局名称空间,名称空间,命名空间,全局命名空间

局部命名空间,临时名称空间,临时命名空间,局部名称空间

内置名称空间,所有的内置函数等存储的空间

input(),print(),len内置函数

加载顺序:

  内置名称空间--->全局名称空间--->(函数执行时)局部名称空间

取值顺序:

  函数执行时:局部名称空间--->全局名称空间--->内置名称空间

当执行函数的时候,他会在内存中开辟一个临时名称空间,存放函数体内的所有变量与值的关系

随着函数的执行完毕,临时空间自动关闭

3、函数的嵌套

函数被调用的时候执行,代码从上至下依次执行,调用函数:函数里面从上至下依次执行

def func1():
     print(333)
     func2()
     print(666)

def func2():
     print(444)
     func3()

def func3():
     print(555)

func1()
print(222)  #111 333 444 555 666 222

globals(),locals()

a = 2
b = 3
def func1():
    c = 5
    d = 6
    print(globals())  # 全局变量放在一个字典中
    return locals()  # {‘c‘: 5, ‘d‘: 6}
print(func1())
# print(globals())  # 全局名称空间:所有变量
# print(locals())  # 局部名称空间:所有变量

4、关键字global,nonlocal

global

1、在局部空间内,声明一个全局变量

def func1():
    global name
    name=老男孩
    print(name)
func1()
print(name)

2、在局部空间内改变一个全局变量

a=4
def func1():
    global a
    a=5
func1()
print(a)

nonlocal

1、不能修改全局变量

a=4
def func1():
    nonlocal a
    a=5
func1()
print(a)   #SyntaxError: no binding for nonlocal ‘a‘ found

在局部作用域中,对父级作用域(或者更外层作用域非全局作用域)的变量进行引用和修改,并且引用的哪层,从那层及以下此变量全部发生改变

a=4
def func1():
    b=6
    def func2():
        b=666
        print(b)   #666
    func2()
    print(b) #6
func1()

 

 









Day10

原文:https://www.cnblogs.com/a352735549/p/8671229.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!