superli 发表于 2021-1-28 10:28:54

exec的问题

list = ['a', 'b', 'c']

x = 1
for a in list:
    name = 'number' + str(x)# 动态创建变量
    exec(name + '=a')# 赋值
    exec('print(' + name + ')')
    x += 1
这里面2个exec是什么意思,有些不懂,尤其是后面那个print(‘+name+’)这是输出什么内容?

qiuyouzhi 发表于 2021-1-28 10:32:11

执行一段代码。
比如说第一个exec,它的参数内容就是"name = a"。
exec就会执行它。
第二个,参数内容就是print(name),就会打印出name的值。

superli 发表于 2021-1-28 10:59:27

本帖最后由 superli 于 2021-1-28 11:04 编辑

qiuyouzhi 发表于 2021-1-28 10:32
执行一段代码。
比如说第一个exec,它的参数内容就是"name = a"。
exec就会执行它。


这exec中name+中的+是种固定格式吗,这样的话name = 'number' + str(x)这句有什么意义,直接赋值不就好了。为何不直接写成exec(name'=a') 和
    exec('print(' name')')

Twilight6 发表于 2021-1-28 12:11:33

本帖最后由 Twilight6 于 2021-1-28 12:15 编辑

superli 发表于 2021-1-28 10:59
这exec中name+中的+是种固定格式吗,这样的话name = 'number' + str(x)这句有什么意义,直接赋值不就 ...


这里是动态赋值,而如果我们需要人为达到这样效果就需要赋值三次

number1 = 'a'
number2 = 'b'
number3 = 'c'
而这里也就 3 个 变量,比较少可以人为直接进行赋值

但一但元素多了,而你需要将所有列表元素依次赋值到不同变量上去时,用这个就可以直接快捷的完成

比如,你需要将 list1 元素取出,依次赋值给变量 number1~9 时,就可以执行下面这个代码:

list1 = ['a', 'b', 'c','d','e','f','g','h','i']

x = 1
for a in list1:
    name = 'number' + str(x)
    exec(name + '=a')
    x += 1

print('number1:',number1)
print('number9:',number9)

页: [1]
查看完整版本: exec的问题