1. 程式人生 > >day10 動態傳參

day10 動態傳參

嵌套 尋找 pri true highlight 命名空間 麻辣燙 順序 fun

一動態傳參

  1動態傳參,可以接受任意的參數

    順序: 位置參數   *args  默認值 **kwargs

  1位置參數的動態傳參 寫法*參數名 例如  *args 接受的參數是tuple

# def eat(*good): #動態傳參,可以接受多個實參
#     print(good)
# eat("可樂","麻辣燙","火鍋")
# eat("麻辣燙")   #接受的是元祖,括號裏面的元素每個用逗號隔開

  2關鍵字參數的動態傳參, 寫法 ** 參數名 例如**keargs 接受的參數是dict類型

# def eat(**kwargs): #接受的是關鍵字參數,也可接受多個傳參
#     print(kwargs)
# eat(good="麻辣燙,蓋澆飯",fruit="蘋果",drink="七喜") #字典

  3 無敵傳參

    def fun(*args,**keargs):

      pass

# def rat(*args,**kwargs):#接受的是位置參數跟關鍵字參數
#     print(args,kwargs)
# rat(1,6,65,95+9,a=6,n=6) #打印的是元祖加字典

  

  *,**的作用:

    在形參:聚合

def fun(**kwargs):  #吧打散的在聚合
    print(kwargs)
dic={"a":[1,2,3],"b":2}
fun(**dic)  # 吧字典打散

二 作用域的問題

  1.globals()獲取全局作用域的內容

  2.locals()獲取局部作用域中的內容

# a = 10
# def func():
#     global a # 這裏用的a是全局的
#     a = 20
#     print(a)
# func()
# print(a)    # 20

a = 10
def func1():
    a = 20
    print(a)
    def fun2():
        nonlocal a # 上一級, 且不能是全局
        a = 30
        print(a)
    fun2()
    print(a)

func1()
print(a)

三 函數嵌套-函數的執行流程

  所有的()表示的是函數的調用

# def fun1():
#     print(111)
#
# def fun2():
#     print(222)
#     fun1()
#
# fun2()
# print(333)

# def fun2():
#     print(222)
#     def fun3():
#         print(666)
#     print(444)
#     fun3()
#     print(888)
#
# print(33)
# fun2()
# print(555)
# def func():
#     print("哈哈哈")
# a = func # 函數可以賦值 .相當於. a和func是一回事兒
# func()
# a()

四 global和nonlocal

  1global:尋找全局作用域中的內容

# a = 10
# def func():
#     global a # 這裏用的a是全局的
#     a = 20
#     print(a)
# func()
# print(a)    # 20

  2nonlocai:尋找上一級作用域中的內容,但不能是全局的

a = 10
def func1():
    a = 20
    print(a)
    def fun2():
        nonlocal a # 上一級, 且不能是全局
        a = 30
        print(a)
    fun2()
    print(a)

func1()
print(a)

五額外追加的內容 命名空間

a = 10  # 全局
def func(): # 全局
    a = 40  # 局部
    b = 20  # 局部
    def abc():  # 局部
        d = 30 # 是局部
        print("哈哈")
        print(a, b) # 這?使?的是局部作?域
        print(locals())
    abc()

    # print(globals()) # 打印全局作用域中的內容
    # print(locals()) # 打印局部作用域中的內容,locals()打印當前這個函數局部作用與中的內容
func()

print(globals())
# print(globals()) # 打印全局作用域中的內容

  

  

day10 動態傳參