python中for循环变量作⽤域及⽤法详解
在讲这个话题前,⾸先我们来看⼀道题:
代码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):
def inside_fun(x):
return x ** i
functions.append(inside_fun)
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。
ps:下⾯看下python中for循环的⽤法
Python for循环可以遍历任何序列的项⽬,如⼀个列表或者⼀个字符串。
语法模式:for iterating_var in sequence:
in 字⾯意思,从某个集合(列表等)⾥顺次取值
#遍历数字序列
the_count=[1,2,3,4,5]
for number in the_count:
print(f"This is count {number}")
输出结果:
This is count 1
This is count 2
This is count 3
This is count 4
This is count 5
#遍历⼀维字符串数组
fruits=['apples','oranges','dimes','quarters']
for fruit in fruits:
print(f"A fruit of type:{fruit}")
输出结果为:
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}")
输出结果为:
p
python中的字符串是什么
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)长为6,range(len(elements))==range(6)
for i in range(len(elements)):
print(f"Elemnet was:{i}")
输出结果为:
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
总结
以上所述是⼩编给⼤家介绍的python中for循环变量作⽤域及⽤法详解,希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。在此也⾮常感谢⼤家对⽹站的⽀持!
如果你觉得本⽂对你有帮助,欢迎转载,烦请注明出处,谢谢!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。