中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么理解Python動態參數、命名空間、函數嵌套、global和nonlocal

發布時間:2021-11-03 17:28:59 來源:億速云 閱讀:144 作者:iii 欄目:編程語言

本篇內容主要講解“怎么理解Python動態參數、命名空間、函數嵌套、global和nonlocal”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“怎么理解Python動態參數、命名空間、函數嵌套、global和nonlocal”吧!

  函數的動態參數

  1.1 *args 位置參數動態傳參

  def chi(*food):

  print("我要吃", food)

  chi("大米飯", "小米飯")

  結果:我要吃 ('大米飯', '小米飯') # 多個參數傳遞進去. 收到的內容是元組tuple

  1.2 **kwargs 關鍵字參數動態傳參

  def func(**kwargs):

  print(kwargs)

  func(a=1, b=2, c=3)

  func(a=1, b=2)

  結果:

  {'a': 1, 'b': 2, 'c': 3}

  {'a': 1, 'b': 2}

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

  def func(*args, **kwargs):

  pass

  形參的位置*,**: 聚合

  實參的位置*,**: 打散

  def fun(*args):

  print(args)

  lst = [1, 4, 7]

  fun(lst[0], lst[1], lst[2])

  fun(*lst) # 可以使用*把一個列表按順2. 命名空間

  在python解釋器開始執行之后, 就會在內存中開辟一個空間, 每當遇到一個變量的時候, 就把變量名和值之間的關系記錄下來, 但是當遇到函數定義的時候, 解釋器只是把函數名讀入內存, 表示這個函數存在了, 至于函數內部的變量和邏輯, 解釋器是不關心的. 也就是說一開始的時候函數只是加載進來, 僅此而已, 只有當函數被調用和訪問的時候, 解釋器才會根據函數內部聲明的變量來進行開辟變量的內部空間. 隨著函數執行完畢, 這些函數內部變量占用的空間也會隨著函數執行完畢而被清空.

  2.1 內置名稱空間 – 存放python解釋器為我們提供的名字, list, tuple, str, int 等這些都是內置命名空間

  2.2 全局名稱空間 – 我們直接在py文件中, 函數外聲明的變量都屬于全局命名空間

  2.3 局部名稱空間 – 在函數中聲明的變量會放在局部命名空間

  加載順序:內置命名空間 >>> 全局命名空間 >>> 局部命名空間(函數被執行的時候)

  取值順序: 局部命名空間 >>> 全局命名空間 >>> 內置命名空間

  作用域:

  作用域: 作用域就是作用范圍, 按照生效范圍來看分為 全局作用域和局部作用域

  全局作用域: 包含內置命名空間和全局命名空間. 在整個文件的任何位置都可以使用(遵循從上到下逐行執行).

  局部作用域: 在函數內部可以使用.

  1. 全局作用域: 內置+全局

  2. 局部作用域: 局部(函數被調用)

  3. globals() 查看全局中的內容

  4. locals() 查看當前作用域中的內容序打散

  a = 10

  def func():

  a = 40

  b = 20

  def abc():

  print("哈哈")

  print(a, b) # 這里使用的是局部作用域

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

  print(locals()) # 打印局部作用域中的內容

  func()

  函數嵌套

  函數可以互相的嵌套

  def fun1():

  print(111)

  def fun2():

  print(222)

  fun1()

  fun2()

  print(111)

  # 函數的嵌套

  def fun2():

  print(222)

  def fun3():

  print(666)

  print(444)

  fun3()

  print(888)

  print(33)

  fun2()

  print(555)

  global和nonlocal關鍵

  global: 在局部訪問全局中的內容

  a = 100

  def func():

  global a # 加了個global表示不再局部創建這個變量了. 而是直接使用全局的a

  a = 28

  print(a)

  func()

  print(a)

  nonlocal: 在局部尋找外層函數中離他最近的那個變量

  a = 10

  def func1():

  a = 20

  def func2():

  nonlocal a

  a = 30

  print(a)

  func2()

  print(a)

  func1()

  # 結果:

  # 加了nonlocal

  # 30

  # 30

  # 不加nonlocal

  # 30

  # 20

到此,相信大家對“怎么理解Python動態參數、命名空間、函數嵌套、global和nonlocal”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

永宁县| 京山县| 舞阳县| 温宿县| 策勒县| 广东省| 霸州市| 清水县| 淮南市| 新平| 建宁县| 连山| 石城县| 台中县| 上高县| 贵定县| 龙胜| 锦州市| 砀山县| 安阳市| 礼泉县| 乌兰县| 南涧| 西和县| 石林| 大方县| 花垣县| 陆川县| 德安县| 道真| 上思县| 万安县| 积石山| 平顺县| 雅安市| 全南县| 铜川市| 博兴县| 金沙县| 克拉玛依市| 乌鲁木齐市|