python中的內部函數和閉包函數

內部函數


在函數內部聲明的函數就是內部函數。

格式:

def 函數名():局部變量...def 內部函數名():Python功能代碼...

示例:

def funName():name = 'dragon'#定義一個內部函數def inner():print('我是內部函數')

‘’‘注釋:
1.內部函數的本質就是局部變量(函數就是一個變量)
2.內部函數在函數外部不可以直接調用
3.內部函數在函數內部調用(當然,必須要定義內部函數之后才能調用)
‘’’

閉包


使用特定或特殊的方式,將局部變量(內部函數)引入到全局環境中使用,這就是閉包操作。

閉包方法1:

def 函數名():局部變量...def 內部函數名():passreturn (局部變量,內部函數...)

閉包方法2:

def 函數名():局部變量def 內部函數名():pass#獲取所有需要進行閉包操作的函數和變量defall():return(局部變量,內部函數...)return all

閉包原理:

在這里插入圖片描述

閉包的優缺點:

優點:1.可以方便的進行函數式編程,組織程序代碼2.使內部函數和局部變量在外部可以訪問

缺點:
1.閉包操作會導致整個函數的內部環境,被長久保存,占用大量內存。

閉包環境查看:closure

用于查詢當前閉包操作所使用的環境中的變量和內部函數等信息。

nonlocal


nonlocal關鍵字的意義,不是局部變量,當然他也不是全局變量,通常用于內部函數中使用外部函數的局部變量。

#聲明一個外部函數
def outer():#聲明一個變量(肯定不是全局變量)x = 5#聲明一個內部函數def inner():nonlocal x  #聲明x不是局部變量x += 9print(x)#調用函數inner()
#調用outer
outer()

‘’‘注釋:
如果內部函數想使用全局變量,那么應該使用global聲明變量
(函數最外層的全局變量)
如果內部函數使用的是外部函數的局部變量,那么應該使用nonlocal聲明
(內部函數的外層,外部函數的局部變量)
‘’’

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/456081.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/456081.shtml
英文地址,請注明出處:http://en.pswp.cn/news/456081.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【機器學習】K-Means(非監督學習)學習及實例使用其將圖片壓縮

非監督學習之k-means K-means通常被稱為勞埃德算法,這在數據聚類中是最經典的,也是相對容易理解的模型。算法執行的過程分為4個階段。 1、從數據中選擇k個對象作為初始聚類中心; 2、計算每個聚類對象到聚類中心的距離來劃分; 3、再次計算…

CloudCC CRM:物聯網必將成為CRM的推動力

CRM熱門話題背后的主要推動力包括云、社交、移動和大數據,CloudCC CRM認為物聯網必將成為CRM的推動力,也就是傳感器將事物連接到互聯網,創建之前我們從未想到的新型服務。 社交:在銷售、市場和客戶服務部門,營銷人員正…

關于Video Renderer和Overlay Mixer

原文作者: 陸其明 整理日期: 2004/12/27 大家知道,Video Renderer (VR)是接收RGB/YUV裸數據,然后在顯示器上顯示的Filter。為提高計算機畫圖性能,根據你計算機顯卡的能力,VR會優先使用DirectDraw以及Overlay表面;如果…

【tensorflow】tensorflow -gpu安裝及jupyter環境更改

tensorflow -gpu安裝 首先,安裝Anoconda 1. 官網下載點我:2.安裝 點擊 python 3.6 version自動下載x64版,下載好之后,然后安裝。 如圖,打上勾之后,一路next3.打開終端 1)輸入conda –-version …

張震博士:SDT是未來安防發展方向

如何挖掘安防大數據價值是未來發展方向 發展實踐證明,科技強警已經成為未來發展的必然選擇,發展科技強警,必須用技術實力說話。作為科技強警的重要組成部分,安防視頻非常重要,但是,目前,安防視頻…

關于虛擬機第二塊網卡eth1(僅主機模式)的配置問題

這里發生了一個想不明白的事情,我的真機的網卡上面并沒有192.168.100.0網段的網卡 但是我在虛擬機上面添加了一塊網卡(僅主機模式)eth1 并配置為192.168.100.60(配置文件已經寫好) 開機卻能用eth1連接上xhell&#xff…

【機器學習】樸素貝葉斯介紹及實例--對短信進行二分類 使用多項式分布

貝葉斯 首先什么是貝葉斯? 一個例子,現分別有 A、B 兩個容器,在容器 A 里分別有 7 個紅球和 3 個白球,在容器 B 里有 1 個紅球和 9 個白球,現已知從這兩個容器里任意抽出了一個球,且是紅球,問這…

H.264碼流結構

a、對照:H.263的碼流結構H.263定義的碼流結構是分級結構,共四層。自上而下分別為:圖像層(picture layer)、塊組層(GOB layer)、宏塊層(macroblock layer)和塊層(block layer)。 PSC TR PTYPE PQUANT CPM PSBI TRB DBQUANT PEI PSPARE PEI…

Gartner分享物聯網和智慧城市最新數據

主題為“移我所想 Mobile is me”的2016世界移動大會上海展正在上海如火如荼的舉行,Gartner也在第一時間分享了最新的市場數據,包括企業級用戶最為關注的物聯網和智慧城市的調查預測報告,下面就一起來看看吧! 智慧城市與物聯網 物…

python中格式化字符串

format格式字符串 語法: 它通過{}和:來代替%。 注意: 字符串的format函數可以接受無限個參數,位置可以不按順序,可以不用或者用多次,不過2.6不能為空{},2.7才可以。 “映射”示例 通過位置 In [1]: {0},{…

讓360安全瀏覽器默認使用谷歌內核

瀏覽器默認內核的指定只需在head標簽中添加一行代碼即可&#xff1a; 若頁面需默認用極速核&#xff0c;增加標簽&#xff1a;<meta name"renderer" content"webkit"> 若頁面需默認用ie兼容內核&#xff0c;增加標簽&#xff1a;<meta name"…

作業幫電腦版在線使用_作業幫:創新科技驅動在線教育新模式

10月15日&#xff0c;在線教育領軍企業作業幫在中國校長大會在線教育論壇上&#xff0c;獨家發布《學習的真相&#xff1a;全國K12學情大數據及學習洞察》&#xff0c;宣布已推出作業幫直播課“名師大招”課程體系&#xff0c;集中展示多款面向K12人群的教育黑科技和硬件產品。…

【機器學習】DBSCAN聚類算法—優于Kmean—(理論+圖解+python代碼)

一、前言 二、DBSCAN聚類算法 三、參數選擇 四、DBSCAN算法迭代可視化展示 五、常用的評估方法&#xff1a;輪廓系數 六、用Python實現DBSCAN聚類算法 一、前言 去年學聚類算法的R語言的時候&#xff0c;有層次聚類、系統聚類、K-means聚類、K中心聚類&#xff0c;最后呢…

H264白皮書

理論上我是知道一點點的mpeg4的&#xff0c;但是貌似忘記了&#xff0c;本來要重新看mpeg4&#xff0c;結果有人告訴我h264肯定比mpeg4要好&#xff0c;結果就被派去看h264了&#xff0c;看完了一個什么白皮書以后&#xff0c;只好替h264吹噓一下了&#xff1a; 1。Intra pred…

python中的內建函數

內建函數 以下是目前我們已經滲透過的內建函數: 類型相關 int() 創建或者將其他數據轉化為整型float() 創建或者將其他數據轉化為浮點型bool() 創建或者將其他數據轉化為布爾型complex() 創建或者將其他數據轉化為復數str() 創建或者將其他數據轉化為字符串list() 創建或…

卡巴斯基:風險無國界 網絡安全從業者要與小網民保持一致

“互聯網沒有國界&#xff0c;每個國家碰到的問題基本上是類似的。對于網絡犯罪這件事&#xff0c;并不針對哪個國家&#xff0c;任何有弱點、有機會的地方&#xff0c;黑客都會去。”卡巴斯基公司CEO尤金卡巴斯基在接受未來網&#xff08;微信公眾號lovek618&#xff09;記者采…

js/jquery循環提取table單元格值

<table id"tbitem"><tr><td>測試數據1</td></tr><tr><td>測試數據2</td></tr><tr><td>測試數據3</td></tr><tr><td>測試數據4</td></tr><tr><td&g…

windows無法訪問指定設備路徑或文件_完全免費的文件數據恢復工具:Microsoft Windows File Recovery...

意外刪除文件的經歷是大多數人都遇到過&#xff0c;但是幸運的是有一種“后悔藥”可以吃&#xff0c;因為我們可以使用一些【數據恢復軟件】以找回一些已刪除的文件。市面上有很多這類型的軟件&#xff0c;例如EasyRecovery、DiskGenius、Recuva 等軟件。但是&#xff0c;功能強…

【機器學習】XGBoost集成算法——(理論+圖解+python代碼比較其他算法使用天池蒸汽數據)

一、集成算法思想 二、XGBoost基本思想 三、用python實現XGBoost算法 在競賽題中經常會用到XGBoost算法&#xff0c;用這個算法通常會使我們模型的準確率有一個較大的提升。既然它效果這么好&#xff0c;那么它從頭到尾做了一件什么事呢&#xff1f;以及它是怎么樣去做的呢&a…

H.264的技術優勢及其在H.323系統中的應用

一、引言 近年來&#xff0c;隨著我國通信網絡基礎設施的快速建設&#xff0c;視訊業務由于可以為處于多點的與會者提供音視頻等多種信息&#xff0c;節省大量費用&#xff0c;提高工作效率&#xff0c;因而發展迅速&#xff0c;并有望成為NGN的主要業務。視訊會議系統從產生至…