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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 清远市| 平邑县| 麻江县| 汉中市| 木兰县| 东源县| 兴安县| 建平县| 伊春市| 盐源县| 逊克县| 铁力市| 建昌县| 湖南省| 鄂尔多斯市| 宁强县| 琼中| 奉贤区| 苏尼特右旗| 原平市| 区。| 大埔县| 怀化市| 岢岚县| 延安市| 蕲春县| 汝城县| 连州市| 田阳县| 玛多县| 寿宁县| 漳州市| 如东县| 大足县| 南华县| 夏津县| 石泉县| 虎林市| 德令哈市| 沅陵县| 泸州市|