函数的名称空间

函数的名称空间

  • 内置空间:Python内置函数
  • 全局空间:当前py 文件需要开辟的空间存放在全局空间
  • 局部空间:函数中开辟 的空间就是局部空间
  • 加载顺序:内置空间 >全局空间>局部空间
  • 取值顺序:局部空间》全局空间》内置空间
  • 作用域:
    • 全局作用域:内置空间+全局空间
    • 局部作用域:局部空间

函数的嵌套

  • 函数中嵌套函数
  • 函数中嵌套调用函数
  • 函数嵌套参数的传递
  • 函数嵌套返回值的传递
  • 不管在什么位置,只要是函数名+(),就是在调用次函数
  • 函数调用执行后,函数体中开辟的空间就自行销毁了

函数的gloabal

  • 修改全局空间的变量对应的值

函数的nonlocal

  • 在外层的函数中,修改局部空间的变量的值,完全不涉及全局变量。
  • 值修改离他最近的一层,最近的一层没有变量继续向上寻找,知道找到最外层的函数

函数的注释

  • # def func(a,b):
    #     """
    #     逻辑判断...
    #     :param a: str
    #     :param b: int
    #     :return: bool
    #     """
    #     print(a,b)
    
    
    # def func1(user,password):
    #     """
    #     密码加密
    #     :param user: 用户名 str
    #     :param password: 密码 str
    #     :return: 加密的密码 MD5
    #     """
    #     print(user,password)
    
    # print(func.__doc__)
    # print(func1.__doc__)
    # print(func.__name__)
    
  • 每次写函数的时候需要注释

  • 函数名+ doc

函数名的使用

1,方式

  • 可以当做赋值给变量

  • def func():    
    print(1)
    s = func()
    print(s)
    
  • 可以当做元素放在列表中

  • def func():
        print(1)
    lis = [func,func,func]
    func()
    print(lis)
    for i in lis:
        i()
    
  • 可以当做函数的参数

  • def func(f):
        f()
    def foo():
        print(123)
    func(foo)
    
  • 函数名可以当做函数的返回值

  • def func():
        def foo():
            print(123)
        return foo
    a = func()
    a()
    
  • print(f"{{73}}")  # {73}
    print(f"{{{73}}}")  # {73}
    print(f"{{{{73}}}}")  # {{73}}
    m = 21
    # ! , : { } ;这些标点不能出现在{} 这里面。
    # print(f'{;12}')  # 报错
    # 所以使用lambda 表达式会出现一些问题。
    # 解决方式:可将lambda嵌套在圆括号里面解决此问题。
    x = 5
    print(f'{(lambda x: x*2) (x)}')  # 10
    
posted @ 2019-12-13 10:01  阿浪阿浪  阅读(188)  评论(0编辑  收藏  举报