【问题标题】:How do I make a variable created inside a function become global?如何使在函数内部创建的变量成为全局变量?
【发布时间】:2015-05-23 03:37:58
【问题描述】:

我正在处理的程序中有一个函数,我在这个函数中命名了一个变量,我想让它成为全局变量。例如:

def test():
   a = 1
   return a

test()

print (a)

我只是无法访问“a”,因为它一直说 a 未定义。

任何帮助都会很棒,谢谢。

【问题讨论】:

  • 你在 python 中工作吗?没有标签很难分辨。如果是这样,this answer 可能会有所帮助。
  • 这是什么语言的?如果您还不能发表评论,请将标签添加到您的问题中。
  • Don't forget to ask a search engine before asking us. 与人类不同,Google 不会厌倦人们一遍又一遍地问同样的问题。
  • 正如许多人已经提到的,全局变量是纯粹的邪恶。坚持函数式编程的范式,即函数应该对外部范围没有副作用。

标签: python function global-variables


【解决方案1】:

我对您的功能进行了一些更改。

def test():
    # Here I'm making a variable as Global
    global a
    a = 1
    return a

如果你这样做了

print (a)

输出

1

【讨论】:

    【解决方案2】:

    正如 Vaibhav Mule 所回答的,您可以在函数内创建一个全局变量,但问题是您为什么要这样做?

    首先,您应该小心使用任何类型的全局变量,因为这可能会被视为this 的不良做法。从一个函数创建一个全局变量更糟糕。它将使代码极难阅读且难以理解。想象一下,您正在阅读使用了一些随机a 的代码。您首先必须找到该事物的创建位置,然后尝试找出在程序执行期间它发生了什么。如果代码不小,你将注定失败。

    所以你的问题的答案是在分配前使用global a,但你不应该。

    顺便说一句,如果您想要 c++ 的静态变量之类的功能,请查看this 问题。

    【讨论】:

      【解决方案3】:

      首先,重要的是要问“为什么”会想要那个?本质上,函数返回的是“本地计算”(通常)。话虽如此 - 如果我必须在“全局范围”中使用函数的返回“值”,那么将它“分配给全局变量”会更容易。例如你的情况

      def test():
          a = 1    # valid this 'a' is local 
          return a
      
      a = test() # valid this 'a' is global
      print(a)
      

      不过,重要的是要问“为什么”我要这样做,通常情况下?

      【讨论】:

        猜你喜欢
        • 2015-06-25
        • 1970-01-01
        • 1970-01-01
        • 2019-08-16
        • 2023-01-05
        • 2022-08-02
        • 1970-01-01
        • 2012-12-12
        相关资源
        最近更新 更多