• 第1月3周4天


    1. 函数的动态参数 *args,**kwargs,形参的顺序
    2. 名称空间,临时名称空间,作用域,取值顺序,加载顺序
    3. global,nonlocal
    4. 函数的嵌套

    !!!note qi
    是否需要垃圾桶?
    收集组员信息
    !!!

    位置参数要在关键字参数前边

    实参 1.位置参数,2.关键字参数,3混合参数
    形参 1.位置参数,2.默认参数

    函数体如果一行可以放在函数名后边

    "汉字也是True"
    In [8]: "喊".isalpha()
    Out[8]: True 
    
    def func4(l):
      return l[0:2] # 返回长度不超过2
    

    所有项目的功能首先要想拓展性

    动态参数

    *args,**kwargs

    在函数定义时,在位置参数加星,代表聚合
    将所有实参的位置参数聚合到一个元组
    并将元组返回给一个星变量名

    在函数定义时,在关键字参数加两个星
    将所有实参的关键字参数聚合到一个元组
    并将元组返回给两个星变量名

    星的用法

    def func1(*args):
      print(args)
    func1(*l1,*l2) "对列表解包"
    #字典是*{'a':1,'b':2} 返回keys()
    

    $$**{'a':'b'} => a = 'b'$$

    默认参数要在位置动态参数后边,因为如果不这样收到的参数不对
    默认参数要在关键字动态参数后边,因为后者会接收所有的关键字参数,默认参数只有默认值。

    名称空间

    程序编译时cpython从上到下一次运行时发现程序中的变量与值,会在内存中开辟空间叫名称空间,命名空间,全局名称空间存储变量名与值的内存地址的对应关系

    看到函数名将函数名与函数体对应关系存放到名称空间,但函数体不加载到内存中。
    直到碰到函数的调用,执行函数。在内存中临时开辟空间,加载函数体所有数据,这个空间会在函数执行完毕后消失,临时名称空间

    1. 全局名称空间 global
    2. 局部名称空间 local
    3. 内置名称空间 内置模块 builtins

    作用域:

    全局作用域

    全局名称空间 > 内置名称空间

    局部作用域

    局部名称空间

    取值顺序

    就近原则 单向从小到大
    外部有内部没有,引用不会,改变会报错

    加载顺序

    内置名称空间> 全局名称空间 (程序执行时)> 局部名称空间()

    函数的嵌套

    global nonlocal

    局部名称空间,对全局名称空间的变量可以引用,但不能改变。

    UnboundLocalError: local variable 'count' referenced befor assignment

    如果你在局部名间对一个变量进行修改,那么解释器会认为你的变量在局部中,已经定义了。但是对于有上面的例题局部没有,所以报错

    global 作用

    1. 局部名称空间声明一个全局变量,需要变量已存在
    2. 在局部名称空间可以对全局变量进行修改

    nonlocal

    在py2没有
    外层对内层的影响是,内层可以引用外层变量,但无法改变。
    子函数对父级函数的变量修改
    此变量不能是全局变量。nonlocal 操作的是局部名称空间的变量。

  • 相关阅读:
    H5页面尺寸兼容rem
    Mysql索引、explain执行计划
    mysql物理结构
    mysql 架构
    excel 写
    好的开源项目
    批量插入大量数据
    文件下载回显
    shardingsphere 实现 springboot集成 多数据源
    前后端代码特殊符号乱码问题
  • 原文地址:https://www.cnblogs.com/yonghuierming/p/9507675.html
Copyright © 2020-2023  润新知