python的作用域分別有幾種_python中作用域與函數嵌套

知識回顧:

拆解傳參。

1.字典傳參。使用**

2.列表傳參。使用*

實際上我們在定義函數的時候,如果省略了星號,那么在調用函數的時候必須要省略星號,除非我們拆解后的參數個數剛好相等。

視頻內容

本節知識視頻教程

文字講解開始:

一、作用域

作用域:可以被影響的范圍。

全局變量:在最外層聲明的變量。

局部變量:在某些代碼塊聲明的變量。

全局變量舉例

xxx=100 #最外層的變量,全局變量

def P():

print(xxx)

P()

說明:外面一層的變量,能夠被代碼塊內部一層的變量調用。

局部變量的注意事項

1.在函數體內部聲明的變量,不能再函數體外部去調用,會直接報錯。

2.在函數體內部同名的局部變量,即使重新賦值了,也不會影響函數體外部的那個同名全局變量。如果真的想要改變外部同名的全局變量,那么我們必須要在函數體內部使用global關鍵字聲明變量。

3.在函數體內部,如果先調用外部的全局變量后,是不能再次修改的,因為在函數體內部寫了同名的變量后,會使得編譯器無法識別局部變量還是全局變量,使得程序異常。

二、函數的嵌套

在python中是運行函數嵌套定義使用的。注意:函數體內部定義的函數也必須要手工調用才能使得有函數中的效果,否則默認是不被調用執行的。

舉例:

#函數的嵌套

eee=10

def P3():

eee=20

print("P3中eee=",eee)

def P4():

fff=5

print("P4中的結果=",fff+eee)

P4()

P3()

函數嵌套的作用范圍

在函數體內部定義的函數需要在函數體內部調用,默認不能在全局的作用范圍的最頂層調用這個函數的。

函數的復雜嵌套調用

#函數的嵌套

eee=10

def P3():

eee=20

print("P3中eee=",eee)

def P4():

fff=5

print("P4中的結果=",fff)

return P4

P3()()

注意:如果使用雙括號,在調用內存函數的時候,外層函數將會被自動調用。

函數的指針賦值調用

#函數的嵌套

eee=10

def P3():

eee=20

print("P3中eee=",eee)

def P4():

fff=5

print("P4中的結果=",fff)

return P4 #這里返回的是指針類型的變量

K1=P3()

K1()

結論:在調用內存函數的時候,外層函數也將會被自動調用。

三、解決問題的思路

1.帶有紅色下劃線的報錯,它是一種語法報錯

2.異常報錯,先調試,實在不行,可以將報錯去直接搜索引擎直接搜索報錯

3.搜索問題的知識點。

四、總結強調

1.作用域。全局變量區別于局部變量。

2.函數的嵌套。注意點,在內部定義的函數被調用時候會自動調用其父級函數。函數也有作用范圍。

3.解決問題的思路。

4.一定要主動多測試代碼。

本節源代碼(已被#注釋):# xxx=100 #最外層的變量,全局變量

#

# def P():

# ddd=300 #在函數體內部,是局部變量

# # global xxx

# xxx=200 #這個是與全部變量同名的局部變量

# # print(xxx)

#

# P()

# print(xxx)

# yyy=200

#

# def P2():

# print(yyy)

# # yyy=100

#函數的嵌套

# eee=10

# def P3():

# eee=20

# print("P3中eee=",eee)

# def P4():

# fff=5

# print("P4中的結果=",fff+eee)

# return P4 #這里返回的是指針類型的變量

#

# K1=P3

# K1()()

#

# ttt=10

# while(True):

# ttt=20

# break

# print(ttt)

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

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

相關文章

這個博客的由來

筆者從事電信行業大型商業智能系統工作多年,日前從事B2C電商網站類數據分析工作,特開設此微博,在發表好文同時,研究網站分析技術。轉載于:https://www.cnblogs.com/sambazhu/p/3508633.html

《Axure RP8 網站和APP原型制作 從入門到精通》一2.7 交付

本節書摘來自異步社區《Axure RP8 網站和APP原型制作 從入門到精通》一書中的第2章,第2.7節,作者 金烏,更多章節內容可以訪問云棲社區“異步社區”公眾號查看 2.7 交付 模型一旦經過批準,我們就可以進入切圖和優化圖像環節了。我…

iOS UISegmentedControl 的使用

當用戶輸入不僅僅是布爾值時,可使用分段控件(UISegmentedControl)。分段控件提供一欄按鈕(有時稱為按鈕欄),但只能激活其中一個按鈕。分段控件會導致用戶在屏幕上看到的內容發生變化。它們常用于在不同類別…

js粘貼板為什么獲取不到圖片信息_【第1829期】復制黏貼上傳圖片和跨瀏覽器自動化測試...

前言這個操作體驗倒是不錯。今日早讀文章由丁香園蔣璇投稿分享。蔣璇, 前端開發攻城獅, 現任職于丁香園. 英語愛好者, 測試驅動開發(TDD)&行為驅動開發(BDD)推崇者. 先專注于 https://github.com/Jiang-Xuan/tuchuang.space 項目的測試驅動開發探索正文從這開始~~在網頁中上…

在C++中調用DLL中的函數

轉載自:http://blog.sina.com.cn/s/blog_53004b4901009h3b.html   應用程序使用DLL可以采用兩種方式:一種是隱式鏈接,另一種是顯式鏈接。在使用DLL之前首先要知道DLL中函數的結構信息。Visual C6.0(或者更先進的版…

CentOS LVS安裝配置

目錄(?)[] 一般2.6.10以上內核版本都已經自帶了ipvsadm,故不需要安裝。 Ipvs 1.25編譯 ipvsadm-1.25編譯不過 去掉netlink庫的依賴:去掉libipvs/Makefile的CFLAGS -DLIBIPVS_USE_NL,去掉Makefile的LIBS -lnl。需要popt庫解析命令行,在這里…

《淘寶網開店 拍攝 修圖 設計 裝修 實戰150招》一一2.7 橫式構圖和豎式構圖...

本節書摘來自異步社區出版社《淘寶網開店 拍攝 修圖 設計 裝修 實戰150招》一書中的第2章,第2.7節,作者: 葛存山,更多章節內容可以訪問云棲社區“異步社區”公眾號查看。 2.7 橫式構圖和豎式構圖 橫幅畫面,即畫面底邊…

Node.js初接觸(一)

本來還在糾結著到底要學哪一種后臺語言呢,突然發現node.js很火,既然能被這么多人推崇,自然是有他的優勢的。去百度百科看了一眼,或許是我理解能力太差,并沒有了解到很多關于node.js的東西,大概就是知道了No…

python request file upload_Python基于requests實現模擬上傳文件

方法1: 1.安裝requests_toolbelt依賴庫 #代碼實現 def upload(self): login_token self.token.loadTokenList() for token in login_token: tempPassword_url self.config[crm_test_api]/document/upload tempPassword_data self.data_to_str.strToDict(title:1.…

MATLAB中的randi函數

randi Pseudorandom integers from a uniform discrete distribution.來自一個均勻離散分布的偽隨機整數 R randi(IMAX,N) returns an N-by-N matrix containing pseudorandom integer values drawn from the discrete uniform distribution on 1:IMAX.返回一個NN的包含偽隨機…

C++ dll的隱式與顯式調用

轉載自:http://blog.sina.com.cn/s/blog_53004b4901009h3b.html   應用程序使用DLL可以采用兩種方式:一種是隱式鏈接,另一種是顯式鏈接。在使用DLL之前首先要知道DLL中函數的結構信息。Visual C6.0&…

《OpenGL ES 2.0游戲開發(上卷):基礎技術和典型案例》——6.5節光照的每頂點計算與每片元計算...

本節書摘來自異步社區《OpenGL ES 2.0游戲開發(上卷):基礎技術和典型案例》一書中的第6章,第6.5節光照的每頂點計算與每片元計算,作者 吳亞峰,更多章節內容可以訪問云棲社區“異步社區”公眾號查看 6.5 光照…

毛筆筆鋒算法IOS版

http://www.merowing.info/2012/04/drawing-smooth-lines-with-cocos2d-ios-inspired-by-paper/#.VUln2_mqpBe轉載于:https://www.cnblogs.com/wangjinming/p/4481145.html

USE PDFCREATE TO CREATE A PDF FILE

來源:http://www.pdfforge.org/files/old_forum/1002.html a working sample with C & COM 2007-08-15 22:56:18 by eckart hi, here is a working sample of how to use PDFCreator in Visual C (after searching on internet for something similar I guess t…

python將一行作為字段_關于python:Django admin在同一行顯示多個字段

我已經創建了一個模型,它將自動顯示模型中的所有字段,并將其顯示在管理頁面上。 現在,我有一個問題,我希望在同一行中有兩個字段,為此,我必須在modeladmin中指定字段集: 1 2 3 4 5fieldsets ( …

c++顯式加載dll并使用DLL的類

轉載自: http://blog.163.com/tianjunqiang666126/blog/static/8725911920121064573594/ 首先需要強調,當使用某個類時一般目的有二:實例化成對象或者繼承它產生新類。對于前者,我們可以構造一個抽象類&a…

如何在Debian上安裝配置ownCloud

如何在Debian上安裝配置ownCloud 據其官方網站,ownCloud可以讓你通過一個Web界面或者WebDAV訪問你的文件。它還提供了一個平臺,可以輕松地查看、編輯和同步您所有設備的通訊錄、日歷和書簽。盡管ownCloud與廣泛使用Dropbox非常相似,但主要區別…

jQuery相當于對 javascript二次開發,所以基于 jQuery實現的各種插件直接調用即可...

jQuery相當于對 javascript二次開發,所以基于 jQuery實現的各種插件直接調用即可轉載于:https://www.cnblogs.com/npk19195global/p/4482363.html

[轉]js判斷url是否有效

本文轉自:http://www.cnblogs.com/fumj/p/3490121.html 方法一:(僅適用于ie) function CheckStatus(url){XMLHTTP new ActiveXObject("Microsoft.XMLHTTP")XMLHTTP.open("HEAD",url,false)XMLHTTP.send()return XMLHTTP.status200}function Ne…

VS中lib和dll

轉載: http://www.cnblogs.com/Yogurshine/archive/2013/06/14/3136025.html Lib文件 先來說一說lib文件,C中lib文件主要有兩類,一種是靜態的編譯連接,叫做靜態鏈接庫,另一種是動態的編譯鏈…