zoukankan      html  css  js  c++  java
  • 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:在局部,引入上一层名称空间中的变量,如果没有,继续上一层.......
  • 相关阅读:
    sed 简明教程
    简明 Vim 练级攻略
    AWK 简明教程
    TCP 的那些事儿(下)
    TCP 的那些事儿(上)
    CentOS 7系统安装配置图解教程
    Google Chrome谷歌/火狐/Safari浏览器开发者工具基本使用教程
    《Ext JS模板与组件基本框架图----组件》
    ExtJS关于组件Component生命周期
    《Ext JS模板与组件基本知识框架图----模板》
  • 原文地址:https://www.cnblogs.com/minusone/p/9879896.html
Copyright © 2011-2022 走看看