zoukankan      html  css  js  c++  java
  • 10 函数动态参数和命名空间

    函数
    一. 动态传参
    1.只接收位置传参 * 默认*args
    def func(*args):
    pass
    return args #返回一个元组
    1.接受所有的 位置参数
    2.返回一个元组()
    2.只接收关键字传参 ** 默认**kwargs
    def func(**kwargs):
    pass
    return kwargs #返回一个字典
    3.传参的顺序:
    位置参数>*args>关键字参数>**kwargs
    4.*,** 在形参用时,聚合作用;在实参用时,打散作用
    def func(*args,**kwargs):
    print(args,kwargs)
    list1=[1,2,3,4,"r"]
    dic={"a":1,"b":2}
    func(*list1,**dic)
    二.命名空间
    1.全局命名空间:我们在py文件中,函数外申明的变量都属于全局命名空间
    2.局部命名空间:在函数中生成的变量会放在局部命名空间
    3.内置命名空间:存放在python解释器为我们提供名字,list,tuple,str,int 这些都是内置命名空间

    加载顺序:
    1.内置命名空间
    2.全局命名空间
    3.局部命名空间
    取值顺序:
    1.局部命名空间
    2.全局命名空间
    3.内置命名空间
    作用命名空间:
    全局作用域:全局命名空间+内置命名空间
    局部作用域:局部命名空间
    三.locals()和globals()
    1.locals() 查看当前作用域中的名字(相对的)
    b=1
    def chi():
    a=3
    print(locals()) #查看局部作用域中的内容
    print(locals()) #查看当前作用域中的名字

    2.globals() 只查看全局作用域中(内置+全局)的内容
    a=1
    def chi():
    pass
    print(globals()) #查看全局作用域中(内置+全局)的内容

    四.global 和 nonlocal
    1.global
    1.可以改变全局变量
    a=1
    def chi():
    global a #直接从全局把变量a引进 可以修改全局变量
    a=10
    chi()
    print(a) #10
    2.变量在全局不存在时,可以创建全局变量
    def chi():
    global a #全局变量中没有定义a时,可以用global a 创建全局变量
    a=12
    chi()
    print(a)
    2.nonlocal
    1.在局部, 引入上一次名字空间中的名字,如果上一层没有继续引入上一层......
    2.不能引入全局中的变量
    def outer():
    a=3
    def inner():
    nonlocal a
    print(a)
    print(a)
    inner()
    print(a)
    outer()
    #写函数,传入一个参数n,返回n的阶乘
    例如:cal(7)  计算7*6*5*4*3*2*1
    
    def cal(n):
        j=1
        for i in range(1,n+1):
            j=j*i
        return j
    print(cal(4))
    

      

  • 相关阅读:
    NPOI 的使用心得
    uploadfiy 动态传递Form 参数
    积分系统总结
    easyui dataBox 增加一天,减少一天
    easyui datagrid footer 页脚问题
    sql server 视图 的一个例子
    sql server int 列 NULLIF,isnull 判断是0还是1 ,如果是0就变成1
    easyui 小知识
    获取 日期 最后一天
    my97 日期控件
  • 原文地址:https://www.cnblogs.com/knighterrant/p/9879767.html
Copyright © 2011-2022 走看看