• Python之路Day10


    函数的进阶

    动态参数

    • def eat(*args,**kwargs):  #函数定义阶段,*聚合(打包)
         print(args)  #tuple
         print(kwargs)  #dict
         print(*kwargs)  #dict的键
         print(*args)  #函数体中的* 打散(解包)
      • 动态位置参数(args只是约定俗成的,其实可以改变)

    • 位置参数>动态位置参数>默认参数>动态默认参数

    • **kwargs -- 输出的是字典

    • 动态位置参数:限制性位置参数,位置参数接受后额外的参数动态位置参数进行接收,获取的是一个元组

    • 动态关键字参数:先执行默认参数,默认参数接受后额外的默认参数动态默认参数进行接收

    • 实参:字典中的键不能使用数字

    函数的注释

    • ._doc_ -- 查看注释

    • ._name_ -- 查看函数的名字

    名称空间

    • 内置空间

      • Python解释器自带的空间

    • 全局空间

      • Py文件中顶格写的就是全局空间

    • 局部空间

      • 函数体中就是局部空间

    • 加载顺序:内置空间>全局空间>局部空间

    • 取值顺序:局部>全局>内置

    • 作用域:保护数据的安全性

      • 全局作用域:全局+内置

      • 局部作用域:局部

    函数嵌套

    • 不管在什么位置,只要是函数名+()就是在调用一个函数

    global nonlocal

    global
    • 修改全局

    • a=100
      def func():
          global a
          a=a-50
          print(a)
      print(a)
      func()
      print(a)
      结果:100
           50
           50
      

        

    nonlocal
    • 修改局部,修改距离nonlocal最近的一层,如果没有则向上一层查找,只限在局部

    • a=10
      def func():
          a=5
          def foo():
              a=3
              def f1():
                  nonlocal a
                  a=a+5
                  print(a)
              f1()
              print(a)
          foo()
          print(a)
      func()
      print(a)
      

        

    •  

  • 相关阅读:
    一个人的热闹
    关于Java单向链表头结点与头指针傻傻分不清
    Scanner输入的问题
    String、StringBuffer和StringBuilder的区别:
    偷吃的老人
    ubuntu 安装redis
    Ubuntu 安装 nginx
    谁再说不熟悉 Linux 命令,就把这个给他扔过去!
    ubuntu 安装mysql并设置密码
    题解 UOJ #99. 【集训队互测2015】普罗达科特
  • 原文地址:https://www.cnblogs.com/zlx960303/p/11954147.html
Copyright © 2020-2023  润新知