Day10

Posted a352735549

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Day10相关的知识,希望对你有一定的参考价值。

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的主要内容,如果未能解决你的问题,请参考以下文章

[code] PTA 胡凡算法笔记 DAY039

高效Web开发的10个jQuery代码片段

高效Web开发的10个jQuery代码片段

C#程序员经常用到的10个实用代码片段 - 操作系统

C#程序员经常用到的10个实用代码片段

;~ 小部分AutoHotkey源代码片段测试模板2019年10月9日.ahk