zoukankan      html  css  js  c++  java
  • Day10 函数的动态参数,注释,名称空间,作用域和函数嵌套

    def func(a):
    print(a)

    func(1)

    args
    def func(
    args): #args 是万能(接受任意多个)的位置参数,在定义函数的时候叫聚合
    print(args)

    func(1,2,3,4,5,6,7)

    def func(a,b,args): #args聚合
    print(a,b,*args) # *args 打散 #元组(接受的位置参数)

    func(1,2,3,4,5,6,0)
    位置参数>动态位置参数>默认参数

    def func(*args,a = 1,b = 2):
    print(a,b,args) #元组(接受的位置参数)
    func(12,14,15,16,10)

    def func (a,b,**kwargs):
    print(a,b,kwargs) # 字典(接受的关键字的参数)
    func(1,2,c=1,d=2)

    def func(a,b,args,c=1,d=2,**kwargs):
    print(a,b,
    args,c,d,kwargs) #kwargs #字典(接受关键字的参数)#*kwargs可以拿到键
    func(1,2,3,4,c=8,d=10,e='alex',f='wusir')

    def func(args,**kwargs): #万能传参
    print(
    kwargs,*args)
    func(1,2,3,a=1,b=2,d=4)

    参数优先级
    1.位置参数> 动态位置参数>默认参数(关键字参数)>动态关键字参数
    2.位置参数,动态位置参数
    3.动态位置参数(args),关键字参数(c=1),动态关键字参数(kwargs)

    函数的注释
    在每行代码下写上注释
    """

    """

    名称空间
    内置空间:print input len()
    全局空间:当前py文件需要开辟的空间存放在全局空间
    局部空间:函数中开辟的空间就是局部空间

    加载顺序
    内置空间>全局空间>局部空间

    a = 10
    def func():
    a = 5
    print(a)
    func()

    取值顺序
    局部空间>全局空间>内置空间(找不到就报错)

    作用域
    全局作用域:内置空间+全局空间
    局部作用域:局部空间

    函数的嵌套:
    def func():
    print(1)
    def f1():
    print(2)
    return f1()
    func()
    不管在什么位置,只要是函数名+()就是在调用此函数
    函数调用执行后,函数体中开辟的空间就自动销毁

    def func():
    a = 1
    def foo():
    b =2
    print(b)
    print(a)

        def f1():
            print(b)
        return f1()
    return foo()
    

    func()

    函数的互相引用
    def func():
    a = 1
    foo()
    print(a)

    def foo():
    b = 2
    print(b)
    print(func()) #答:1,2 func(c)返回NONE

    def a():
    a1 =1
    c()
    print(c)
    def b():
    b1 =1
    print(b1)
    def c():
    c1 = 3
    print(a)
    def run():
    a()
    run() # 同一级的函数不能向另一个索要数据

    def func():
    a = 1
    def b():
    print(a)
    def foo():
    b = 1
    def z():
    print(func)
    print(b)
    ret = z()
    func()
    return ret
    def run():
    foo()
    print(run()) 答:1.func的地址 2.1 3.none

    def func(a):
    foo(a)
    def foo(e):
    b(e)
    def b(c):
    print(c)
    return 10
    print(func(5))答:5,没有10 ,因为b(c)哟返回值,
    foo(e)开始就没有return了,所以10 传递不到func(a)

    golbal

    a = 10
    def func():
    global a #声明修改全局变量
    a += 1
    print(a)
    func()

    a = 10
    def f1():
    a = 10
    def f2():
    a =15
    def f3():
    global a
    a += 1
    print(a)#16
    print(a)#15
    f3()
    print(a)#10
    f2()
    print(f1()) #none

    nonlocal
    a = 10
    def func():
    a = 30
    def f1():
    def foo():
    nonlocal a
    a += 1
    print(a) #31
    foo()
    print(a)#31
    f1()
    func()
    print(a)#10

    global:修改全局空间的变量对应的值
    nonlocal:在外层函数中,修改局部空间的变量值,
    完全不涉及全局空间,只修改离它最近的。
    上一层没有变量,继续向上,直到找到最外层函数。(全局空间除外)

    6.三元运算符
    a = 10
    b = 20
    c = a if a> b else b
    变量名 = 条件成立的结果 条件 条件不成立的结果

    今日总结
    1.函数的动态参数
    动态位置参数agrs 动态关键字参数**kwargs 万能传参
    定义阶段(
    args,**kwargs)聚合
    args---tuple v
    **kwargs---dict
    使用阶段(
    args,*kwargs)打散
    *args---源数据类型
    **kwargs---打散的是字典的键
    位置参数>动态位置参数>默认参数>动态关键字参数

    lst = [12,23,3,4,5,6]
    lst1 = [12,23,3,4,5,6]
    def func(*args):
    print(args)

    func(lst[0:len(lst)+1])# 笨的办法

    func(lst,lst1)#新办法

    dic={'key':1,'key1':34}
    dic1={'key2':2,'key3':45}
    def func(kwargs):
    print(*kwargs)
    func(
    dic,**dic1)#快速获取字典的键

    2.函数的注释
    """

    每次写函数的时候需要写注释

    函数名.doc

    """
    3.名称空间
    内置空间:python解释器自带的
    全局空间:当前文件(.py文件)
    局部空间:函数题开辟的空间

    加载顺序:内置>全局>局部
    取值顺序:局部>全局>内置

    作用域
    全局作用域 内置+全局
    局部作用域 局部

    4.函数嵌套
    函数中套函数
    函数嵌套调用
    函数嵌套参数的传递
    函数嵌套返回值的传递

    5.glocal nonlocal
    global:修改全局空间的变量对应的值
    nonlocal:在外层的函数中变量值,修改局部空间的

  • 相关阅读:
    docker pull报错failed to register layer: Error processing tar file(exit status 1): open permission denied
    PySocks安装使用方法
    PyInstaller Extractor安装和使用方法
    service docker start后docker stop/waiting的解决方法
    PyInstaller安装使用方法
    ubuntu安装docker-ce
    Python对wav文件的重采样
    Microsoft Speaker Recognition API
    通过google cloud API 使用 WaveNet
    NLP一些工程应用模型
  • 原文地址:https://www.cnblogs.com/zhuzhizheng/p/11232549.html
Copyright © 2011-2022 走看看