Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 动态创建变量是个好主意吗?_Python_Variables_Python 3.5_Dynamic Variables - Fatal编程技术网

Python 动态创建变量是个好主意吗?

Python 动态创建变量是个好主意吗?,python,variables,python-3.5,dynamic-variables,Python,Variables,Python 3.5,Dynamic Variables,我最近发现了如何通过以下方法在python中动态创建变量: vars()['my_variable'] = 'Some Value' 从而创建变量my_变量 我的问题是,这是个好主意吗?或者我应该总是提前声明变量吗?我不知道这样做有什么好处,也会使代码更难理解。 因此,不,我认为这不是一个好主意。我不认为它有什么好处,也会使您的代码更难理解。 因此,不,我认为这不是一个好主意。如果可能的话,我认为最好使用措辞: vars_dict = {} vars_dict["my_variable"] =

我最近发现了如何通过以下方法在python中动态创建变量:

vars()['my_variable'] = 'Some Value'
从而创建变量
my_变量


我的问题是,这是个好主意吗?或者我应该总是提前声明变量吗?

我不知道这样做有什么好处,也会使代码更难理解。
因此,不,我认为这不是一个好主意。

我不认为它有什么好处,也会使您的代码更难理解。
因此,不,我认为这不是一个好主意。

如果可能的话,我认为最好使用措辞:

vars_dict = {}
vars_dict["my_variable"] = 'Some Value'
vars_dict["my_variable2"] = 'Some Value'

我认为这更像是一个python。

如果可能的话,我认为最好使用一个单词:

vars_dict = {}
vars_dict["my_variable"] = 'Some Value'
vars_dict["my_variable2"] = 'Some Value'

我认为它更像python。

这是一个坏主意,因为无论是对于查看源代码的人还是对于pylint或pychecker之类的工具,分析代码都变得更加困难。如果你使用这样的技巧,你将更有可能引入bug。如果您认为某个时候需要该功能,请认真考虑是否可以以更简单、更传统的方式解决问题。我已经使用Python将近20年了,从未觉得有必要这么做

如果您有更多的动态需求,只需使用一个普通的字典,或者类似于json的东西

Python的一大优点是它的动态特性和良好的标准集合类型,即可以避免将逻辑放在文本字符串中。Python解释器、IDE中的语法高亮显示、intellisense和代码分析工具都会查看源代码,提供有用的建议并发现bug和弱点。如果您的数据结构或逻辑已隐藏在文本字符串中,则此操作不起作用


<> P>更多的愚蠢和僵化的语言,如C++和java,通常会使开发人员求助于基于字符串的数据结构,比如XML或JSON,因为它们没有像Python列表或DICT这样方便的集合。这意味着您对编译器和其他内置于语言或工具中的安全检查隐藏了业务逻辑,并且必须执行许多开发工具本来可以为您执行的检查。在Python中,您不必这样做。。。所以不要

这是一个坏主意,因为无论是对于查看源代码的人还是对于pylint或pychecker之类的工具,分析代码都变得更加困难。如果你使用这样的技巧,你将更有可能引入bug。如果您认为某个时候需要该功能,请认真考虑是否可以以更简单、更传统的方式解决问题。我已经使用Python将近20年了,从未觉得有必要这么做

如果您有更多的动态需求,只需使用一个普通的字典,或者类似于json的东西

Python的一大优点是它的动态特性和良好的标准集合类型,即可以避免将逻辑放在文本字符串中。Python解释器、IDE中的语法高亮显示、intellisense和代码分析工具都会查看源代码,提供有用的建议并发现bug和弱点。如果您的数据结构或逻辑已隐藏在文本字符串中,则此操作不起作用

<> P>更多的愚蠢和僵化的语言,如C++和java,通常会使开发人员求助于基于字符串的数据结构,比如XML或JSON,因为它们没有像Python列表或DICT这样方便的集合。这意味着您对编译器和其他内置于语言或工具中的安全检查隐藏了业务逻辑,并且必须执行许多开发工具本来可以为您执行的检查。在Python中,您不必这样做。。。所以不要

优点:

  • 添加另一个间接级别,使环境更具动态性
    • 特别是,允许避免更多的代码重复
缺点:

  • 不适用于函数名称空间(由于优化)
  • 添加另一个间接级别,使环境更具动态性
    • “词汇引用”更难跟踪和维护
      • 如果创建的名称是任意的,则冲突将随时发生
      • 很难找到代码库中的细节并预测其行为
      • 这就是为什么这些技巧可能会打乱代码检查工具,如
        pylint
  • 如果以类似的方式处理变量,则它们可能与其他变量分开(在专用的
    dict
    中)而不是重用名称空间dict,从而在处理过程中造成混乱
简言之,在抽象级别,Python的语言和运行时功能是为以下目的而设计的:它只适用于少量的、定义良好的功能。

优点:

  • 添加另一个间接级别,使环境更具动态性
    • 特别是,允许避免更多的代码重复
缺点:

  • 不适用于函数名称空间(由于优化)
  • 添加另一个间接级别,使环境更具动态性
    • “词汇引用”更难跟踪和维护
      • 如果创建的名称是任意的,则冲突将随时发生
      • 很难找到代码库中的细节并预测其行为
      • 这就是为什么这些技巧可能会打乱代码检查工具,如
        pylint
  • 如果以类似的方式处理变量,则它们可能与其他变量分开(在专用的
    dict
    中)而不是重用名称空间dict,从而在处理过程中造成混乱

简而言之,在抽象级别,Python的语言和运行时功能是为之设计的,它只适用于少量的、定义良好的功能。

不能保证
vars()['myvariable']='Some value'
myvariable='Some value'
具有相同的效果。从:

没有ar