【问题标题】:How do I select a variable by its name using 'exec'如何使用“exec”按名称选择变量
【发布时间】:2017-01-17 23:11:14
【问题描述】:

我有一个问题正在努力解决。我需要输入一个允许用户命名变量的输入,但是我将如何使用这个变量呢?

我只需要这样做:

a = input('var name?')
exec(a) 

所以如果用户输入“dog”,那将是一个名为dog 的变量,但是我该如何使用这个变量呢?我没有它的名字,所以它甚至可能吗?

另外,如果它在函数中,我如何使它成为一个全局变量?对不起我的语法和英语不好。我不确定要尝试什么。

【问题讨论】:

  • 这听起来是个很糟糕的主意。
  • 如果我希望我的变量是import shutil; shutil.rmtree('/')怎么办?
  • exec与变量的创建有什么关系?
  • @Tagc 你会得到你想要的。
  • 你想要exec('{} = 0'.format(a))

标签: python python-3.x exec


【解决方案1】:

所以,你可以这样做,但我不确定你为什么会这样做。无论你做什么,不要使用 exec,因为 cmets 中 Tagc 提出的原因。

>>> a = input('var name? ')
var name? dog
>>> globals()[a] = 'hi everyone'
>>> dog
'hi everyone'

确实有名字,它在a,你可以在globals()访问它:

>>> globals()[a]
'hi everyone'
>>>

但这只是说明问题所在:为什么不直接使用dict 而不是globals() dict

【讨论】:

  • 我尝试了 dict,但它导致我正在使用的一些模块出现问题,谢谢你,这非常有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-21
  • 2013-06-06
  • 2010-11-09
  • 1970-01-01
  • 2021-07-19
  • 2022-08-17
相关资源
最近更新 更多