国产探花免费观看_亚洲丰满少妇自慰呻吟_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程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 辉县市| 资源县| 库车县| 汉阴县| 资讯 | 巨野县| 靖州| 鸡西市| 二连浩特市| 广安市| 庆元县| 兴宁市| 平谷区| 满洲里市| 隆德县| 赣州市| 涟水县| 太和县| 汝阳县| 赤水市| 雷山县| 海安县| 敖汉旗| 黔西| 庄浪县| 南平市| 丹东市| 伊金霍洛旗| 清新县| 博兴县| 万源市| 奎屯市| 禄劝| 都兰县| 泾川县| 马关县| 昆明市| 冀州市| 衡阳市| 哈尔滨市| 建昌县|