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

首頁 > 編程 > Python > 正文

Python閉包執行時值的傳遞方式實例分析

2020-02-15 21:37:47
字體:
來源:轉載
供稿:網友

本文實例分析了Python閉包執行時值的傳遞方式。分享給大家供大家參考,具體如下:

代碼中有問題和問題的解釋。

#!/usr/bin/python#coding: utf-8# 判斷一個人是否及格,如果滿分150,則90及格,如果滿分100,則60及格# 開始的疑惑:當fun函數執行完以后,對應的val的值就應該消失,但是,# 當下面代碼再次調用f(60)的時候(這個f()函數就是fun_c()函數)# 卻能夠打印出val的值???def fun(val):  'val是得到的分數'  # 打印此時存儲的val的地址  print("%x" % id(val))  def fun_c(passline):    'passline是及格線'    if val >= passline:      print("通過")    else:      print("不及格")  return fun_cf = fun(89) # f就是fun_c函數# 利用__closure__打印出fun_c()函數的屬性,可以發現f中第一個元素的id值和val的id值地址相同# 這說明如果引用了外部的變量(enclosing變量)的話,會將這個變量添加到函數屬性中# 當再次進行查找(即f(60))的時候,并不是到代碼中去查找,而是到函數屬性中去查找# 也就是上面的fun_c的屬性中有val的值,是一個元組,不能夠改變print(f.__closure__)f(60)f = fun(89)f(90)

運行結果:

12ee0b0
(<cell at 0x017B24B0: int object at 0x012EE0B0>,)
通過
12ee0b0
不及格

閉包的作用:

1. 代碼的封裝

2. 代碼復用

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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 广昌县| 威信县| 如皋市| 洛扎县| 论坛| 绥德县| 漳浦县| 那曲县| 历史| 和林格尔县| 祁东县| 景谷| 寿阳县| 邯郸县| 延安市| 修武县| 桑日县| 长岛县| 铅山县| 太保市| 福泉市| 清水河县| 南溪县| 温宿县| 石狮市| 台山市| 华安县| 贵州省| 泸州市| 大悟县| 象州县| 花莲市| 庆城县| 麦盖提县| 合水县| 海林市| 乐至县| 莆田市| 永顺县| 玛曲县| 荃湾区|