zoukankan      html  css  js  c++  java
  • 动态参数,作用域,闭包

    *args

    接收的是所有的位置参数

    **kwargs

    接收的是所有的关键字参数

    def func1(*args, **kwargs):  #*聚合成元祖  **聚合成字典
        print(*args)         # *吧元祖分散
        print(kwargs)        # kwargs不能分散
    
    func1(1, 2, 3, x=4, y=5, z=6)

        *的魔性用法

    def func3(*args,**kwargs):  # 函数的定义 *用意是聚合。
        print(args)
        print(kwargs)
    
    l1 = [1, 2, 3]
    l2 = [11, 21, 32]
    s1 = 'fjskalgf'
    s2 = 'fjskrrrf'
    tu1 = (1, 2, 3)
    tu2 = (11, 22, 33)
    func3(*l1, *tu1, *s2)

    作用域

            当函数执行时,他会通过函数名找到函数体,然后将函数体里面的变量等对应关系存放在一个
    临时开辟的空间中,随着函数的结束,临时的空间关闭,这样的空间叫做临时名称空间。

    全局作用域:内置名称空间,全局名称空间
    局部作用域:局部名称空间

    global
    1,声明一个全局变量。
    2,更改一个全局变量。
    nonlocal
    1,不能改变一个全局变量。

    判断name的先后顺序
    name = "lala"
    def func():
        def func1():
            name ="feifei"
        def func2():
            nonlocal name
            name = "minzai"
        def func3():
            global name
            name = "xiaohui"
            print(name)
        name = "huihui"
        func1()
        print(name)
        func2()
        print(name)
        func3()
        print(name)
    print(name)
    func()
    print(name)

    闭包

    内层函数对外层函数非全局变量的引用就叫闭包

    判断是不是闭包 函数名.__closure__

    闭包有什么用?

          当执行一个函数时,如果解释器判断此函数内部闭包存在,这样
    Python就一个机制,闭包的所在的临时名称空间不会随着函数的执行完毕而消失。

  • 相关阅读:
    LightOJ--1094-- Farthest Nodes in a Tree(树的直径裸题)
    poj--1383--Labyrinth(树的直径)
    C字符数组和C++字符串
    Miracl库学习
    GBDT学习
    Java编程规范
    关于JS中的数组[]的方法
    焦点离开事件
    Firebug 安装方法
    JAVASE 中的String的字符串
  • 原文地址:https://www.cnblogs.com/luchenhui/p/9041219.html
Copyright © 2011-2022 走看看