• 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))
    

      

  • 相关阅读:
    现代软件工程 第一章 概论 第4题——邓琨
    现代软件工程 第一章 概论 第9题——邓琨
    现代软件工程 第一章 概论 第7题——张星星
    现代软件工程 第一章 概论 第5题——韩婧
    hdu 5821 Ball 贪心(多校)
    hdu 1074 Doing Homework 状压dp
    hdu 1074 Doing Homework 状压dp
    hdu 1069 Monkey and Banana LIS变形
    最长上升子序列的初步学习
    hdu 1024 Max Sum Plus Plus(m段最大子列和)
  • 原文地址:https://www.cnblogs.com/knighterrant/p/9879767.html
Copyright © 2020-2023  润新知