国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python閉包函數定義與用法分析

2020-02-15 22:29:00
字體:
來源:轉載
供稿:網友

本文實例分析了Python閉包函數定義與用法。分享給大家供大家參考,具體如下:

python的閉包

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

閉包是裝飾器的基礎。

閉包的基本形式:

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

需要注意的是:

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

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

例子:

# -*- coding:utf-8 -*-#! python2def 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 -*-#! python2def foo():  money = 100  name = "bill"  def tell_info():    print("%s have money %s" %(name,money))  return tell_info()foo()

則輸出:

bill have money 100

更多關于Python相關內容感興趣的讀者可查看本站專題:《Python函數使用技巧總結》、《Python數學運算技巧總結》、《Python數據結構與算法教程》、《Python字符串操作技巧匯總》及《Python入門與進階經典教程》

希望本文所述對大家Python程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 醴陵市| 聊城市| 临潭县| 巴马| 汕头市| 曲阜市| 民乐县| 雅江县| 嘉荫县| 哈巴河县| 青川县| 金坛市| 左贡县| 桐乡市| 青州市| 钟山县| 临安市| 古丈县| 禹城市| 莎车县| 凤翔县| 浠水县| 柘城县| 锡林郭勒盟| 锦州市| 九寨沟县| 余庆县| 松阳县| 通海县| 朝阳县| 鄄城县| 墨竹工卡县| 海原县| 东丰县| 福州市| 雷波县| 普陀区| 苍梧县| 太仓市| 太仓市| 东台市|