python中for循環(huán)變量作用域及用法詳解
在講這個(gè)話題前,首先我們來看一道題:
代碼1:
def foo(): return [lambda x: x**i for i in range(1,5,2)] print([f(3) for f in foo()])
伙伴們,你們認(rèn)為這里產(chǎn)生的結(jié)果是什么呢?我們?cè)賮砜聪逻@題的變體:
代碼:2
def foo():
functions=[]
for i in range(1,5,2):
def inside_fun(x):
return x ** i
functions.append(inside_fun)
return functions
print([f(3) for f in foo()])
這兩題的結(jié)果是一樣的:都是[27,27]。我相信大部分的伙伴也都會(huì)有個(gè)疑問,為什么不是[3,27]呢?
這里的就是我們今天要說的for循環(huán)中的變量作用域,因?yàn)閒or循環(huán)不是一個(gè)函數(shù)體,所以for循環(huán)中的變量i的作用域其實(shí)和for循環(huán)同級(jí),即類似下面代碼
代碼3:
def foo():
i=None
for i in range(1,5,2):
pass
print(i)
foo() # 結(jié)果為3,即循環(huán)結(jié)束i的最終值
另外因?yàn)閜ython運(yùn)行到代碼行時(shí)才會(huì)去查找該變量的作用域,所以代碼1和代碼2中的i值在調(diào)用的時(shí)候?yàn)閒or循環(huán)最終值3,所以結(jié)果都是執(zhí)行x**3。
ps:下面看下python中for循環(huán)的用法
Python for循環(huán)可以遍歷任何序列的項(xiàng)目,如一個(gè)列表或者一個(gè)字符串。
語(yǔ)法模式:for iterating_var in sequence:
in 字面意思,從某個(gè)集合(列表等)里順次取值
#遍歷數(shù)字序列
the_count=[1,2,3,4,5]
for number in the_count:
print(f"This is count {number}")
輸出結(jié)果:
This is count 1
This is count 2
This is count 3
This is count 4
This is count 5
#遍歷一維字符串?dāng)?shù)組
fruits=['apples','oranges','dimes','quarters']
for fruit in fruits:
print(f"A fruit of type:{fruit}")
輸出結(jié)果為:
A fruit of type:apples
A fruit of type:oranges
A fruit of type:dimes
A fruit of type:quarters
#遍歷字符串
list_python='python'
for j in list_python:
print(f"{j}")
輸出結(jié)果為:
p
y
t
h
o
n
#通過序列索引迭代
elements=[]#列表為空
for i in range(0,6):#012345
print(f"Adding {i} to the list.")
elements.append(i)#得到elements=[0,1,2,3,4,5]
#len(elements)長(zhǎng)為6,range(len(elements))==range(6)
for i in range(len(elements)):
print(f"Elemnet was:{i}")
輸出結(jié)果為:
Adding 0 to the list.
Adding 1 to the list.
Adding 2 to the list.
Adding 3 to the list.
Adding 4 to the list.
Adding 5 to the list.
Elemnet was:0
Elemnet was:1
Elemnet was:2
Elemnet was:3
Elemnet was:4
Elemnet was:5
總結(jié)
以上所述是小編給大家介紹的python中for循環(huán)變量作用域及用法詳解,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
相關(guān)文章
Pytorch從0實(shí)現(xiàn)Transformer的實(shí)踐
本文主要介紹了Pytorch從0實(shí)現(xiàn)Transformer的實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05
Python實(shí)現(xiàn)的破解字符串找茬游戲算法示例
這篇文章主要介紹了Python實(shí)現(xiàn)的破解字符串找茬游戲算法,簡(jiǎn)單分析了找茬游戲的原理,并結(jié)合具體實(shí)例形式分析了Python實(shí)現(xiàn)破解找茬游戲的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-09-09
python中l(wèi)ogging模塊的一些簡(jiǎn)單用法的使用
這篇文章主要介紹了python中l(wèi)ogging模塊的一些簡(jiǎn)單用法的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-02-02
python3實(shí)現(xiàn)從kafka獲取數(shù)據(jù),并解析為json格式,寫入到mysql中
今天小編就為大家分享一篇python3實(shí)現(xiàn)從kafka獲取數(shù)據(jù),并解析為json格式,寫入到mysql中,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-12-12
Python實(shí)現(xiàn)公歷(陽(yáng)歷)轉(zhuǎn)農(nóng)歷(陰歷)的方法示例
這篇文章主要介紹了Python實(shí)現(xiàn)公歷(陽(yáng)歷)轉(zhuǎn)農(nóng)歷(陰歷)的方法,涉及農(nóng)歷算法原理及Python日期運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下2017-08-08
Python實(shí)現(xiàn)將PowerPoint轉(zhuǎn)為HTML格式
有時(shí)我們需要將精心設(shè)計(jì)的PPT發(fā)布到網(wǎng)絡(luò)上以便于更廣泛的訪問和分享,本文將介紹如何使用Python將PowerPoint轉(zhuǎn)換為HTML格式,需要的可以參考下2024-04-04
django如何連接已存在數(shù)據(jù)的數(shù)據(jù)庫(kù)
這篇文章主要給大家介紹了關(guān)于django如何連接已存在數(shù)據(jù)的數(shù)據(jù)庫(kù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用django具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-08-08
Python使用pyshp庫(kù)讀取shapefile信息的方法
今天小編就為大家分享一篇Python使用pyshp庫(kù)讀取shapefile信息的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-12-12

