这篇文章主要介绍了python中for循环变量作用域及用法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友参考下吧
在讲这个话题前,首先我们来看一道题:
代码1:
1 2 3 | def foo(): return [ lambda x: x * * i for i in range ( 1 , 5 , 2 )] print ([f( 3 ) for f in foo()]) |
伙伴们,你们认为这里产生的结果是什么呢?我们再来看下这题的变体:
代码:2
1 2 3 4 5 6 7 8 | 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:
1 2 3 4 5 6 | 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 字面意思,从某个集合(列表等)里顺次取值
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | #遍历数字序列 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 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循环变量作用域及用法详解,希望对大家有所帮助。
来源:微点阅读 https://www.weidianyuedu.com