• 函数的进阶 10


    一,  函数参数--动态传参 (形参的第三种)

        动态参数分为两种: 

           1.动态接收位置参数   *args

              位置参数 按照位置进行传参   动态参数必须在位置参数后面    如果放在位置参数后面会报错,因为前面传递进去的参数都被*args参数接收了,后面的位置参数永远接收不到参数

              如果加上默认值参数则 三个参数的顺序为 : 位置参数 动态参数 默认值参数 这样位置参数能接收到参数,动态参数也能接收到,默认值参数如果不给 则默认值永远生效.

           2.动态接收关键字参数

              在Python中用**来接收动态关键字参数 接收到的是一个字典

                语句    def func(**kwargs):

                        print(kwargs)

                      func(**{key:value},**{key:value})         

                顺序的问题 在函数的调用时候如果先给出关键字参数,则整个参数列表会报错 因为这样会导致参数混乱赋值 所以位置参数必须在关键字参数前面,动态接收关键字也要在后面

            最终顺序为: 位置参数>*args>默认值参数>**kwargs

            在形参上用*  ** 表示聚合 实参位置表示打散

    二 . 命名空间

        给存放名字和值关系的空间叫一个名字 即命名空间 变量在存储的时候就是存储在这片空间中的

        命名空间的分类:

          1.全局命名空间-->直接在py文件中,函数外生命的函数都属于全局命名空间

          2.局部命名空间-->在函数中声明的变量会放在局部命名空间

          3.内置命名空间-->存放Python解释器为我们提供的名字,list,str,int这些都是内置命名空

         加载顺序: 3   1    2(函数被执行的时候)

         取值顺序: 2   1    3

         作用域: 作用域就是作用范围,按照生效范围来看分为 全局作用域和局部作用域 

            1.全局作用域 : 全局命名空间 + 内置命名空间 

            2.局部作用域: 局部命名空间

            可以通过globals()函数来查看全局作用域中的内容,也可以通过locals()来查看局部作用域中的变量和函数信息

    三 函数的嵌套

        只要遇见了()就是函数的调用,没有()就不是函数的调用

        函数的执行顺序

    四 关键字global 和 nonlocal

          global表示 不再使用局部作用域中的内容了,而该用全局作用域中的变量

          nonlocal表示 在局部作用域中 调用父级空间中的变量

           

            

  • 相关阅读:
    Mysql大文本类型
    js-原生Js汉语拼音首字母匹配城市名
    js-原生Js汉语拼音首字母匹配城市名
    Java学习从基础,中级,高级框架,所有模块整理
    python数组和字符串互相转换
    Spring,SpringMVC,MyBatis,SSM配置文件比较
    Spring,SpringMVC,MyBatis,SSM配置文件比较
    Spring,SpringMVC,MyBatis,SSM配置文件比较
    GPUImage学习总结
    图像处理技术汇总
  • 原文地址:https://www.cnblogs.com/f-g-f/p/9696629.html
Copyright © 2020-2023  润新知