1. 程式人生 > >python 動態傳參,名稱空間和作用域,函數的嵌套,global和nonlocal

python 動態傳參,名稱空間和作用域,函數的嵌套,global和nonlocal

turn 聚合 改變 名稱空間 class pytho 不能 inner 創建

一、動態傳參

  1.位置參數動態傳參

  def func(*args): *表示動態傳參

  * 在這裏表示接受位置參數的動態傳參,接收到的是元組。

def fun(*args):
    print(args)
    
fun(‘aaa‘,3,5,6,‘ccc‘)
#  結果(‘aaa‘, 3, 5, 6, ‘ccc‘)

  

  2.關鍵字的動態傳參

  def func(**kwargs):

    函數體(代碼塊)

  func(n=7,m="aa"):

  **表示接收關鍵字參數的動態傳參,接收到的是字典。

def fun(**kwargs):
    print(kwargs)

fun(name="Tom",age="男",hobby="女")
# 結果 {‘name‘: ‘Tom‘, ‘age‘: ‘男‘, ‘hobby‘: ‘女‘}

    順序:位置參數 => *arg(arguments)(位參動態傳參) => 默認值 => **kwargs(關鍵字參數)

       以上參數可以隨意搭配使用

  3.函數的註釋

  def fun():

    """

    註釋,說明這個函數用來幹什麽

    ”“”

  print(fun.__doc__) #document文檔

def fun(a,b):
    """
    註釋,說明這個函數用來幹什麽
    :param a:
    :param b:
    :return:
    """
    return
fun(5,6)
print(fun.__doc__)  #打印出函數的註釋

  

  4.接收所有參數

  def fun(*args,**kwargs): #無敵傳參

    pass

  *,** 實參位置是打散

  *,** 形參位置是聚合

def fun(*args,**kwargs):
    print(args,kwargs)
li = [‘r‘,‘n‘,‘g‘,‘w‘,‘i‘,‘n‘]
dic = {‘name‘: ‘uzi‘,‘age‘:‘男‘,‘hobby‘:‘adc‘}
fun(*li,**dic)
# 結果 (‘r‘, ‘n‘, ‘g‘, ‘w‘, ‘i‘, ‘n‘) {‘name‘: ‘uzi‘, ‘age‘: ‘男‘, ‘hobby‘: ‘adc‘}

  

二、命名空間與作用域

  1.全局作用域:

    全局命名空間,內置命名空間

  2.局部作用域:

    局部命名空間

   globals() 可以查看全局作用域中的內容

  locals() 查看當前作用域中的內容

a = 5  # 全局變量
def fun():
    a = 10      #局部變量
    print(locals())

print(globals())
fun()

  

  函數的嵌套

    函數可以相互嵌套

a = 1
def fun():
    a = 5        
    def inner():
        a = 10   
        print(a)
    inner()
    print(a)
print(a)
fun()

  

  global

    1.可以把全局中的內容引入到函數的內部

    2.在全局創建一個變量

    (在函數內部想改變外部的值時會引用,全局變量本身就不安全,不能隨意修改)

a = 1
def fun():
    global a
    a += 5
    print(a)  #  6
print(a)   #  1
fun()
print(a)   #  6

  

  nonlocal

    尋找外層函數中離他最近的那個變量

a = 1
def fun():
    a = 5
    def inner():
        nonlocal a
        a += 5
        print(a)    # 10
    print(a)        # 5
    inner()
    print(a)        # 10

print(a)            # 1
fun()
print(a)            # 1

  

  

python 動態傳參,名稱空間和作用域,函數的嵌套,global和nonlocal