【发布时间】:2016-05-29 06:35:32
【问题描述】:
我最近发现了如何通过这个方法在python中动态创建变量:
vars()['my_variable'] = 'Some Value'
从而创建变量my_variable。
我的问题是,这是个好主意吗?还是我应该总是提前声明变量?
【问题讨论】:
-
不,不。为什么不直接
my_variable = 'Some Value'呢? -
如果需要动态命名,请使用dicts。
-
仅仅因为您可以利用变量 nanespace 并不意味着您应该这样做。您可以使用这些函数覆盖 anything。
-
我正要写一个很长的答案,关于这种动态命名如何使机器和人类,甚至原作者更难编写正确的代码,但本质上,如果 OP 只是使用 dicts对于所有事情,这将是同样的问题。 (哎呀,我们可以从问题中的提示推断出 Python 已经在使用 dicts 来处理所有事情。)所以我不会愉快地回答这个问题。但我会说人类作者应该努力提高可读性。
-
原则上是没有问题的。尽管这会使您的代码更难阅读,但这违反了“最佳实践”约定。尽管如此,如果您可以证明编写两倍的代码是合理的,那么我不明白您为什么不应该这样做。请注意,通过
my_var = my_value创建变量是相同的,并且调用相同的函数,但它需要“更长”,因为它是隐式的。更长 = 纳秒更长!虽然如果有 1e9 纳秒可以变成秒。再说一次,优化是一个因素吗?如果是这样,您也可以尝试ctypes或numpyctype实现,它们相对更优雅。
标签: python variables python-3.5 dynamic-variables