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

溫馨提示×

溫馨提示×

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

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

如何在Python中定義閉包函數

發布時間:2021-05-10 17:37:25 來源:億速云 閱讀:92 作者:Leah 欄目:開發技術

如何在Python中定義閉包函數?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

python可以做什么

Python是一種編程語言,內置了許多有效的工具,Python幾乎無所不能,該語言通俗易懂、容易入門、功能強大,在許多領域中都有廣泛的應用,例如最熱門的大數據分析,人工智能,Web開發等。

python的閉包

首先python閉包的作用,一個是自帶作用域,另一個是延遲計算。

閉包是裝飾器的基礎。

閉包的基本形式:

def 外部函數名():
  內部函數需要的變量
  def 內部函數名()
    引用外部的變量
  return 內部函數

需要注意的是:

函數的作用域關系在函數定義階段就已經固定,與調用位置無關。

無論函數在何處調用,都需要回到定義階段去找對應的作用域關系。

例子:

# -*- coding:utf-8 -*-
#! python2
def tell_info(name):
  print("%s have money %s" %(name,money))
def foo():
  money = 100
  tell_info("bill")
foo()

該代碼tell_info("bill")是在foo函數中調用,但仍然需要回到定義階段去找作用域關系,而定義的時候引用的money就是全局的Money,當全局不存在money的時候則報錯,拋出未定義錯誤。

所以該段代碼會報錯,如下所示:

Traceback (most recent call last):
  File "C:\py\jb51PyDemo\src\Demo\test.py", line 8, in <module>
    foo()
  File "C:\py\jb51PyDemo\src\Demo\test.py", line 7, in foo
    tell_info("bill")
  File "C:\py\jb51PyDemo\src\Demo\test.py", line 4, in tell_info
    print("%s have money %s" %(name,money))
NameError: global name 'money' is not defined

改成如下代碼:

# -*- coding:utf-8 -*-
#! python2
def foo():
  money = 100
  name = "bill"
  def tell_info():
    print("%s have money %s" %(name,money))
  return tell_info()
foo()

則輸出:

bill have money 100

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

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

AI

平顺县| 苍溪县| 汝城县| 定襄县| 朝阳市| 普洱| 武隆县| 禄丰县| 汕尾市| 沙湾县| 长武县| 宁河县| 安溪县| 永仁县| 香格里拉县| 克什克腾旗| 吴川市| 博罗县| 新郑市| 和政县| 巴南区| 潮州市| 罗田县| 肥东县| 徐州市| 寿阳县| 合作市| 江西省| 密山市| 长岛县| 微山县| 彩票| 甘洛县| 文成县| 镇宁| 洛阳市| 黎平县| 根河市| 银川市| 青神县| 定远县|