我是小白,在看一本爬虫教材时用到了exec方法,但有一个地方不懂,就把那一段简化成一个函数。
第一个情况,把name变量和两端用+连接,第二种直接写在一个字符串中,第三种直接打印
看不懂前两个的区别,不都是一个字符串吗?顺便请教一下exec的作用域的问题...心好累
请教好心人,非常感谢
def func():
list = ['a', 'b', 'c']
x = 1
for a in list:
name = 'number' + str(x) # 动态创建变量
exec(name + '=a') # 赋值
exec('print(' + name + ')')
x += 1
func()
a
b
c
def func():
list = ['a', 'b', 'c']
x = 1
for a in list:
name = 'number' + str(x) # 动态创建变量
exec(name + '=a') # 赋值
exec('print(name)')
x += 1
func()
number1
number2
number3
def func():
list = ['a', 'b', 'c']
x = 1
for a in list:
name = 'number' + str(x) # 动态创建变量
exec(name + '=a') # 赋值
print(name)
x += 1
func()
默认情况下
exec
作用域就在当前语句块范围, 第一份代码中,name
的值是'number' + str(x)
, 把name
替换为它的值就比较好理解了所以,第一份代码打印的是
'number' + str(x)
变量的值,第二份打印的是name
变量的值