鱼C论坛

 找回密码
 立即注册
查看: 2063|回复: 3

[已解决]exec的问题

[复制链接]
发表于 2021-1-28 10:28:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
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+’)这是输出什么内容?
最佳答案
2021-1-28 12:11:33
本帖最后由 Twilight6 于 2021-1-28 12:15 编辑
superli 发表于 2021-1-28 10:59
这exec中name+中的+是种固定格式吗,这样的话name = 'number' + str(x)  这句有什么意义,直接赋值不就 ...



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

  1. number1 = 'a'
  2. number2 = 'b'
  3. number3 = 'c'
复制代码

而这里也就 3 个 变量,比较少可以人为直接进行赋值

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

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

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

  2. x = 1
  3. for a in list1:
  4.     name = 'number' + str(x)
  5.     exec(name + '=a')  
  6.     x += 1

  7. print('number1:',number1)
  8. print('number9:',number9)
复制代码


小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-1-28 10:32:11 | 显示全部楼层
执行一段代码。
比如说第一个exec,它的参数内容就是"name = a"。
exec就会执行它。
第二个,参数内容就是print(name),就会打印出name的值。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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  ')')
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-28 12:11:33 | 显示全部楼层    本楼为最佳答案   
本帖最后由 Twilight6 于 2021-1-28 12:15 编辑
superli 发表于 2021-1-28 10:59
这exec中name+中的+是种固定格式吗,这样的话name = 'number' + str(x)  这句有什么意义,直接赋值不就 ...



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

  1. number1 = 'a'
  2. number2 = 'b'
  3. number3 = 'c'
复制代码

而这里也就 3 个 变量,比较少可以人为直接进行赋值

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

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

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

  2. x = 1
  3. for a in list1:
  4.     name = 'number' + str(x)
  5.     exec(name + '=a')  
  6.     x += 1

  7. print('number1:',number1)
  8. print('number9:',number9)
复制代码


小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-28 15:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表