• py 5.10


    一、形参的第三种:动态参数(*args,**kwargs)

    #一、形参的第三种:动态参数(*args,**kwargs),当实参传入的参数不止一个时,或者为了以后拓展,要用动态形参来接收更多的数据。
    #*args:接收的是所有的位置参数,形成一个元祖。
    #**kwargs:接收的是所有的关键字参数,形成一个字典。键:等号左边的变量。 值:等号右边的值
    # def func(*args,**kwargs):
    #     print(args)
    #     print(kwargs)
    # func(1,2,3,4,3,2,1,x = 8,y = 2)
    #位置关系:在形参中,(位置参数 , *args , 默认参数 , **kwargs)  关键字参数必须在位置参数后面
    # def func(a,*args,sex = '男',**kwargs):
    #     print(a)
    #     print(args)
    #     print(sex)
    #     print(kwargs)
    # func(1,4,5,6,sex = '女',x = 8 , y = 10)
    #*的魔性用法。
    # *+list或dic/tuple,表示打散列表或字典或元祖,形成最小组成单元。
    #**表示聚合,把执行函数中*打散的元素聚合起来。
    #加法计算器
    # def func(*args):
    #     sum = 0
    #     for i in args:
    #         sum = sum + int(i)
    #     return sum
    # lis = input('请输入内容:').strip().split('+')
    # print(lis)
    # print(func(*lis))
    # def func(*args,**kwargs):
    #     print(args)                     #(1,3,5,3,2,9,9,9,9)
    #     print(kwargs)                   #{'name': 'liujj','age':100,'cat' : 'xiaolang'}
    # li = [1,3,5,3,2]
    # li1 = [9,9,9,9]
    # dic = {'name': 'liujj','age':100}
    # dic1 = {'cat' : 'xiaolang'}
    # func(*li,*li1,**dic,**dic1)         #(1,3,5,3,2,9,9,9,9,name = 'liujj',age = 100 ,cat = 'xiaolang')
    # def func(*args):
    #     sum = 0
    #     for j in args:
    #         sum = sum + int(j)
    #     return sum
    #
    # li = input('请输入:').strip().split('+')
    # print(func(*li))
    
    # def func3(*args,**kwargs): #*args 接收所有的位置参数。*打散几个它都聚合在一起。**kwargs,接收所有的关键字参数,**打散几个
    #     print(args)             #它就聚合几个成为一个大字典。
    #     print(kwargs)
    #
    # l1 = [1, 2, 3]
    # msg = 'skskksks'
    # dic = {'name':'liu','age':33}
    # dic1 = {'1':'数字'}
    # func3(*l1,*msg,**dic,**dic1)  #**dic,打散的结果为键 = 值 ,成为了实参里的关键字参数,然后传给**kwargs聚合起来。
    动态参数

    二、名称空间、作用域

    #名称空间,作用域
    #名称空间存储的是变量与值的内存地址的关系。
    # 打开解释器时,内置名称空间同时被打开,执行程序时,全局名称空间打开,遇到变量和值时,将其对应关系存入。当遇到函数时,
    #将函数名存到内存中,但是里面的函数体不予理会,当遇见调用函数时,返回找到函数名,开辟一个临时名称空间(局部名称空间),
    #函数体中,遇到变量和值时将其关系存入局部名称空间内,当函数结束后,局部名称空间关闭。
    #加载顺序:内置名称空间-----》全局名称空间-----》局部名称空间
    #作用域:全局作用域:内置、全局名称空间。  局部作用域:局部名称空间
    #取值顺序:局部-----》全局------》内置。   L  E  G  B        只能往后取,不能从前面找往前取。
    # name = 'liujj'
    # print(name)
    # def func():
    #     name = 'jiasp'
    #     print(name)
    # print(222)
    # print(333)
    # func()                   #'liujj',222,333,'jiasp'
    
    # name = 'liujj'
    # print(name)
    # def func():
    #     name = 'jiasp'
    #     print(name)
    #     def func2():
    #         name = 'xiaolang'
    #         print(name)
    #     func2()
    # print(222)
    # print(333)
    # func()               #'liujj',222,333,'jiasp','xiaolang'
    
    # name = 'liujj'
    # print(name)
    # def func():
    #     name = 'jiasp'
    #     print(name)
    #
    # def func2():
    #     name = 'xiaolang'
    #     print(name)
    #     func()
    # func2()
    # print(222)
    # print(333)             #'liujj','xiaolang','jiasp',222,333
    名称空间、加载取值顺序


    三、global / nonlocal

    # #global: 更改全局变量。 将全局变量变成局部变量,将局部变量变成全局变量。
    #在局部作用域中声明一个全局变量/ 在局部作用域中更改一个全局变量
    #注意:当函数体中改的是列表(可变类型)时,不需要global/nonlocal变量,直接就会修改全局中的列表!
    # def func():
    #     global name        #name本来是局部变量,但是global以后,变成了全局都可以使用的变量。
    #     name = 'liujj'
    # func()
    # print(name)
    
    # name = 'jiasp'
    # def func():
    #     global name          #将全局变量name改进局部变量中,使其在函数中也可以打印,以下任何时候name都是局部变量里的值。
    #     print(name)
    # func()
    # print(name)
    global
    #nonlocal: 更改局部变量。与global用法相同,只不过global改的是全局,nonlocal改的是局部。
    #          只改动父级、上一层或更高的非全局作用域函数中的变量。
    #          引用哪层,以下的全部变量均被改变。
    # def func():
    #     name = 'liujj'
    #     print(name)
    #     def func2():
    #         nonlocal name
    #         name = 'jiasp'
    #         print(name)
    #     func2()
    #     print(name)          #改的必须是上一层函数体内的,如果此打印顶行则属于全局里(函数外面)的了,没法改。
    # func()
    nonlocal
  • 相关阅读:
    AVFrame 解析
    Mat与图像的基本概念
    linux基本操作
    Makefile 使用
    MySQL的安装与配置——详细过程
    k8s imagePullPolicy拉取策略
    K8S拉取Django项目创建pod
    Harbor单点仓库部署
    Django项目构建发布Harbor仓库
    K8S集群部署-二进制部署
  • 原文地址:https://www.cnblogs.com/liujjpeipei/p/9020535.html
Copyright © 2020-2023  润新知