python中for迴圈變數作用域

2021-09-29 07:43:42 字數 946 閱讀 1279

在講這個話題前,首先我們來看一道題:

**1:

def

foo():

return

[lambda x: x**i for i in

range(1

,5,2

)]print

([f(3)

for f in foo()]

)

夥伴們,你們認為這裡產生的結果是什麼呢?我們再來看下這題的變體:

**:2

def

foo():

functions=

for i in

range(1

,5,2

):definside_fun

(x):

return x ** i

return functions

print

([f(3)

for f in foo()]

)

這兩題的結果是一樣的:都是[27,27]。我相信大部分的夥伴也都會有個疑問,為什麼不是[3,27]呢?

這裡的就是我們今天要說的for迴圈中的變數作用域,因為for迴圈不是乙個函式體,所以for迴圈中的變數i的作用域其實和for迴圈同級,即類似下面**

**3:

def

foo():

i=none

for i in

range(1

,5,2

):pass

print

(i)foo(

)# 結果為3,即迴圈結束i的最終值

另外因為python執行到**行時才會去查詢該變數的作用域,所以**1和**2中的i值在呼叫的時候為for迴圈最終值3,所以結果都是執行x**3。

如有不對的地方,或有更好的說明方式,請各位小夥伴不吝賜教,感謝!

python 迴圈建立變數

資料分析時,我們經常會有這樣的需求 將資料集按某乙個維度拆分成若干資料子集 建立多個變數。如果手動去實現,工作量較大。我們可以通過locals 配合迴圈語句來實現這一需求。我們以鳶尾花資料集為例,我們按照花的種類將資料集拆分成資料子集,分別放到不同的變數中去。實現 如下 from sklearn.d...

python迴圈定義變數

在實際問題中,遇到個問題,我需要建立多檔案,名字沒有規律,把出現該名字的行寫入以該名字命名的檔案中 關鍵就在與locals 函式 定義變數格式 locals name f open gongcheng.json r file name js hwl qhgg sq hwl task for name...

Python 變數與迴圈

數字和運算子 資料型別轉換 條件分支與迴圈 在python語言中,變數在指定的同時,必須強制賦初值,否則編譯器會報錯。多個變數賦值 python允許同時為多個變數賦值 one two three 10或one,two,three 10,20,30。one two three三個變數在記憶體中指向同乙...