• Day-10 函数的进阶


    一、动态传参
    1、形参:
    1.位置参数
    2.默认参数
    3.动态参数
    1. *args:动态接收位置参数
    2. **kwargs:动态接收关键字参数
    def chi(*food):
        print("我要吃", food)
    chi("大米饭", "小米饭")
    结果:
    我要吃 ('大米饭', '小米饭') # 多个参数传递进去. 收到的内容是元组tuple
                *, **:在形参位置:聚合
    在实参位置:打散
    def fun(*args):
     print(args)
    lst = [1, 4, 7]
    fun(lst[0], lst[1], lst[2])
    fun(*lst) # 可以使用*把一个列表按顺序打散
    s = "臣妾做不到"
    fun(*s) # 字符串也可以打散, (可迭代对象)

    顺序: 位置,*args,默认值,**kwargs
    2、实参:
    1.位置参数
    2.关键字参数
    3.混合参数

    二、名称空间和作用域
    名称空间:保存名字用的(变量,函数,类)
    1.内置名称空间:Python自己,print,input,len
    2.全局名称空间:你写的代码从上到下
    3.局部名称空间:函数,类,方法,其他模块,对象
    加载顺序:内置命名空间, 全局命名空间, 局部命名空间(函数被执行的时候)
    取值顺序:局部命名空间, 全局命名空间, 内置命名空间

    作用域:
    全局作用域
    内置 + 全局
    局部作用域
    局部名称空间
    从局部找全局可以,但是从全局找局部是不可以的

    globals() 查看全局作用域中的名字
    locals() 查看当前作用域中的名字

    三、函数的嵌套(难点)
    每一层都会产生独自的名称空间
    只要遇见了()就是函数的调用,如果没有()就不是函数的调用

    四、 nonlocal,global
    global:在局部引入全局的内容,可以升华一个变量为全局变量
    nonlocal:在局部,引入上一层名称空间中的变量,如果没有,继续上一层.......
  • 相关阅读:
    简单的冒泡排序算法(java)
    寻找两个数组中的公共元素Java程序代码
    利用快速排序求两集合交集
    一种简单的吉布斯采样modify中应用
    递归生成小于某个数的所有集合
    卡拉曼算法简答程序
    模态对话框退出DoModal过程中需注意的陷阱
    是否可以使用空对象指针调用成员函数及访问成员变量
    windows c++如何使窗口动态改变位置
    windows的滚动条使用
  • 原文地址:https://www.cnblogs.com/minusone/p/9879896.html
Copyright © 2020-2023  润新知