Python 中 globals()['var'] 的缺点是什么?
What are the downsides of globals()['var'] in Python?
This post 表示您可以使用以下语法拥有变量变量:
globals()['var']
但是,它也说这是一个非常糟糕的主意。我的问题是为什么?据我所知,这与做的一样:
global var
var
除了第一种情况,实际上可以更改名称。是否存在安全问题,或者仅仅是它更难阅读?
注意 - 很抱歉,如果这是一个重复的问题,搜索会显示关于 global()
的一大堆问题,但我看不到一个。
对于短脚本来说,这并不是世界上最糟糕的事情。但是一般应该避免使用全局变量,因为它会使代码更难维护。通常你将一个变量传递给你的函数和 类.
有时会出现一个有趣的例子,如果您尝试 scipy curve_fit,并且您有一个包含许多变量的函数,而不是所有您想要优化的变量。一种解决方案是将其他变量设为全局变量,但普遍接受的方法是制作一个 lambda 函数来分隔两个不同的变量。看这里:
fitting-only-one-paramter-of-a-function-with-many-parameters-in-python
This post 表示您可以使用以下语法拥有变量变量:
globals()['var']
但是,它也说这是一个非常糟糕的主意。我的问题是为什么?据我所知,这与做的一样:
global var
var
除了第一种情况,实际上可以更改名称。是否存在安全问题,或者仅仅是它更难阅读?
注意 - 很抱歉,如果这是一个重复的问题,搜索会显示关于 global()
的一大堆问题,但我看不到一个。
对于短脚本来说,这并不是世界上最糟糕的事情。但是一般应该避免使用全局变量,因为它会使代码更难维护。通常你将一个变量传递给你的函数和 类.
有时会出现一个有趣的例子,如果您尝试 scipy curve_fit,并且您有一个包含许多变量的函数,而不是所有您想要优化的变量。一种解决方案是将其他变量设为全局变量,但普遍接受的方法是制作一个 lambda 函数来分隔两个不同的变量。看这里: fitting-only-one-paramter-of-a-function-with-many-parameters-in-python