zoukankan      html  css  js  c++  java
  • day10

    函数的动态参数:对于传入的实参数量不固定,万能参数,动态参数,*args,**kwargs

    *:  在函数定义的时候聚合,在*位置参数聚合

      在函数调用的时候打散,在*位置参数打散

    l1 = [1, 2, 3, 4]
    l2 = [a, b, c, 'alex']
    def funcl(*args):
        print(args)
    funcl(*l1,*l2)
    

     形参的位置参数:

    位置参数,*args,默认参数,**kwargs顺序不能错乱,会报错

    def funcl(a,b,*args,sex='男',**kwargs)
        print(a,b)
        print(sex)
        print(*args)
        print(**kwargs)
    funcl(10,20,34,55,6,77,87,45,sex='nv',name='alex',age=10)
    

      python中名称空间分为三种:

    全局名称空间:所定义的值会在内存里开辟出一个空间,这个空间是存放着值跟变量的id

    count = 0
    def funcl():
        count += 1
    print(count)
    funcl()
    #显示报错信息:UnboundLocalError: local variable 'count' referenced before assignment 

    因为count=0是在全局名称空间中的,而局部名称空间只能引用,不能修改,而count+=1则是把count的值修改了

    局部名称空间:所定义的函数,虽然系统会开辟出一个空间,但仅仅是存放这个函数的整体的,至于函数内部,系统并不关心,只有在调用时才会临时开辟出一个空间,当函数结束时,所开辟的空间也会一并消失

    def funcl():
        count = 3
        print(count)
    funcl()
    

      此时count输出的是3,而如果print放在函数外面,将会报错,并提示count没有被定义

    def funcl():
        count = 3
    funcl()
    print(count)
    

      内置名称空间:对于内置函数来说,len,print....本身的出现就会在系统里开辟了空间

    作用域:就是作用范围,按照生效范围,可以分为全局作用域和局部作用域

    全局作用域分为:全局名称空间,内置名称空间,整个文件的任意位置都可以被引用,全局有效

    局部作用域:局部作用空间,只能在局部范围内引用

    取值顺序:局部名称空间  ------->全局名称空间----->内置名称空间      单向从小到大范围

    加载顺序:内置名称空间---->全局名称空间(当程序执行时)------>内置名称空间(当函数被调用时)

    global:

    1,在局部名称空间中声明一个全局变量

    def func1():
        global name
        name = 'alex'
    func1()
    print(name)
    

    2.在局部名称空间可以对全局变量进行修改

    count = 0
    def funcl():
        global count
        count += 1
    funcl()
    print(count)
    

     nonlocal:不能修改全局变量,在局部作用域中,对父级作用域的变量,进行引用或修改,并且修改的那层,从哪层及以下的变量全部发生改变

    def func1():
        count = 666
        def inner():
            print(count)
            def func2():
                nonlocal count
                count += 1
                print('func2',count)
            func2()
            print('inner',count)
        inner()
        print('func1',count)
    func1()
  • 相关阅读:
    Flutter 详解 Key
    Flutter 状态管理之BLoC
    将博客搬至CSDN
    swift 创建tableView并实现协议
    oc swift 混编 特技
    ios字符串计算高度总结
    想了解浏览器内核,看这一篇就够了
    字符编码GBK、GB2312和UTF-8的区别与联系
    开发中常用npm包随用随记
    Nodejs随学随记(杂)
  • 原文地址:https://www.cnblogs.com/beriuta/p/9489551.html
Copyright © 2011-2022 走看看