zoukankan      html  css  js  c++  java
  • day12_01闭包函数

    1、函数对象

    比如说定义一个对象

    def func():  #func = 内存地址

      pass

    print(func)  #结果<function func at 0x00000226A64DB160>

    func()  #函数名()是函数的调用

    func  #就是一个变量名

    2、函数的嵌套定义

    def outter():
        def warpper():
            pass
        pass

    3、名称空间与作用域

    名称空间两大点

    (1)名字的访问顺序:LEGB

    L:代表当前所在的位置,函数内所在的位置

    E:外层函数和全局之间的位置

    G:全局

    B:内置

    (2)名称空间的嵌套定义关系是函数定义阶段扫描语法生成的,与调用位置无关

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

        特点:全局存活,全局有效

    局部作用域:局部名称空间

        特点:临时存活,局部有效

    global关键字:用在局部,修改全局的不可变类型的值

      ps:难道就不能修改可变类型的值吗?

      可变类型直接改就ok了。不用globa关键字

    废话少说,上号!

    案例1
    dic = {'username':None}
    
    def login():
      #dic = 123    #结果:开头是啥样,结果就啥样
        dic['username'] = 'likk'
    login()
    print(dic)    #结果{'username': None}
    案例2
    x = 100
    def login():
        global x
        x = 200
    login()
    peint(x)    #结果是200  你不信CTRL+V!!
    关键字nonlocal
    def f1():
        x = 100
        def f2():
            #global x    #结果:开始x等于多少,现在也等于多少 x=100
            nonlocal x
            x = 200
        f2()
        print(x)
    f1()

    两个案例的结果再一起发布一下,别再说我懒啦!

    案例1 {'username': None}
    案例2 200

    *与**

    *在形参中:会接收溢出的位置实参,然后将其存成元组,然后赋值给紧跟其后的变量名

    **在形参中:**会接收溢出的关键字实参,然后将其存成字典,然后赋值给紧跟其后的变量名

    *在实参中:*后跟的必须是一个可以被for循环遍历的类型,*会将实参打散成位置实参

    **在实参中:**后跟的必须是一个字典,**会将实参打散成关键字实参

    b话少说,上号!

    dic = {'x':1,'y':2,'k':'lik'}
    def index(*args,**kwargs):
        print(*args)
        print(**kwargs)
    
    def outter(*args,**kwargs):
        index(*args,**kwargs)
    outter((1,2,3,4,5),dic)

    结果

    (1, 2, 3, 4, 5) {'x': 1, 'y': 2, 'k': 'lik'}
  • 相关阅读:
    EntityFramework优缺点
    领导者与管理者的区别
    七个对我最好的职业建议(精简版)
    The best career advice I’ve received
    Difference between Stored Procedure and Function in SQL Server
    2015年上半年一次通过 信息系统项目管理师
    Difference between WCF and Web API and WCF REST and Web Service
    What’s the difference between data mining and data warehousing?
    What is the difference between a Clustered and Non Clustered Index?
    用new创建函数的过程发生了什么
  • 原文地址:https://www.cnblogs.com/HuaR-/p/14593667.html
Copyright © 2011-2022 走看看