91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

如何在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

读书| 南和县| 双辽市| 渭南市| 普格县| 石门县| 吉安市| 伊通| 青浦区| 久治县| 河曲县| 平果县| 乌鲁木齐市| 兴安盟| 永兴县| 册亨县| 交口县| 同江市| 平湖市| 卢氏县| 嘉鱼县| 信宜市| 平度市| 佛冈县| 怀宁县| 龙海市| 南丹县| 金寨县| 财经| 梁河县| 九江市| 新邵县| 府谷县| 房产| 河池市| 葵青区| 鄂托克旗| 噶尔县| 平潭县| 白河县| 鸡东县|