zoukankan      html  css  js  c++  java
  • Day 11 可变长函数/函数对象/函数嵌套/名称空间和作用域

    可变长函数

    *实参

    在函数调用时传入带*的实参时,会把*后的参数循环取出,打散成位置实参

    *形参

    以元组的形式存储多余的接收的位置实参,然后将元组赋值给*后的参数

    需要注意的是:*后的参数名约定俗成为args

    **实参

    在函数调用时传入带**的实参时,会把**后的参数循环取出,打散成关键字参数

    **形参

    以字典的形式存储多余的接收的关键字实参,然后将字典赋值给**后的参数

    需要注意的是:**后的参数名约定俗成为kwargs

    函数对象

    引用

    def func():
        print('123')
    
    f = func
    print(f)
    

    <function func at 0x0024F8E8>

    容器

    def func():
        print('123')
        
    lt = [func]
    print(lt[0])
    

    <function func at 0x001CF8E8>

    参数

    def f1():
        print('123')
        
    def f2(x):
        f1()
    
    f2(f1)
    

    123

    返回值

    def f1():
        print('123')
        
    def f2(x):
        return f1()
    
    f2(f1)
    

    123

    函数的嵌套

    函数的嵌套定义

    def f1():
        def f2():
            print(1)
        f2()
    

    1

    函数的嵌套调用

    def min(x, y):
        if x > y:
            return y
        else:
            return x
    print(min(1, min(5, 6)))
    

    1

    名称空间和作用域

    内置名称空间

    存放python解释器自带的名字,如len,list

    生命周期:在解释器启动时生效,在解释器关闭时失效

    全局名称空间

    除了内置名字和局部的名字以外,其余都放在全局名称空间

    生命周期:在文件执行时生效,在文件执行结束后失效

    局部名称空间

    用于存放函数调用期间函数体产生的名字

    生命周期:在文件执行时函数调用期间时生效,在函数执行结束后失效

    加载顺序

    内置名称空间:python解释器打开的过程中内置名称空间就已经产生了

    全局名称空间:在python解释器打开后,运行文件的时候才会产生全局名称空间

    局部名称空间:在运行文件的过程中,遇到函数被调用时,就会产生局部名称空间

    顺序:内置-->全局-->局部

    查找顺序

    从文件执行的地方开始查找,查找顺序为:局部-->全局-->内置。

    全局作用域

    全局有效,全局存活

    全局作用域包括内置名称空间和全局名称空间

    局部作用域

    局部存活

    局部作用域只有局部名称空间

  • 相关阅读:
    test
    男神zyh的青睐
    HH的项链
    PAT刷题经验
    LaTeX常用数学符号
    Battle Over Cities Hard Version
    Cut
    文本生成器
    Explorer Space
    2021.04.21
  • 原文地址:https://www.cnblogs.com/2222bai/p/11558956.html
Copyright © 2011-2022 走看看