【问题标题】:What are the downsides of globals()['var'] in Python?Python 中 globals()['var'] 的缺点是什么?
【发布时间】:2015-03-30 06:19:52
【问题描述】:

This 帖子说你可以通过使用语法来拥有一个变量变量:

globals()['var']

但是,它也说这是一个非常糟糕的主意。我的问题是为什么?据我所知,和做的一样:

global var
var

除了第一种情况,实际上可以更改名称。是否存在安全问题,或者仅仅是因为它更难阅读?

注意 - 抱歉,如果这是一个重复的问题,搜索会发现 global() 上的一大堆问题,但我看不到一个。

【问题讨论】:

  • 对于初学者来说,keep data out of your variable names
  • global 也不完全推荐
  • 嗯,这很有趣@PadraicCunningham - 你会用什么来代替它们?
  • @PopeyGilbert,真的取决于上下文。例如,从函数返回值并将返回值传递给其他函数是避免使用全局的一种方法。使用具有属性的类也是另一种方法,但这完全取决于您在做什么
  • @DavidRobinson 如果您希望将其作为答案,我会接受。

标签: python coding-style global-variables


【解决方案1】:

对于短脚本来说,这并不是世界上最糟糕的事情。但是通常应该避免使用全局变量,因为它使代码更难维护。通常你将一个变量传递给你的函数和类。

有时会出现一个有趣的例子,如果您尝试 scipy curve_fit,并且您有一个包含许多变量的函数,而不是您想要优化的所有变量。一种解决方案是将其他变量设为全局变量,但普遍接受的方法是制作一个 lambda 函数来分隔两个不同的变量。看这里: fitting-only-one-paramter-of-a-function-with-many-parameters-in-python

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-15
    • 2015-05-25
    • 2011-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多