为什么变量在被赋值之前必须被声明为全局变量?

时间:2016-06-07 22:21:28

标签: python python-3.x global-variables global

为什么我们必须这样做:

global x
x = "Hello World!"

当它更具可读性时:

global x = "Hello World"

为什么会这样,背后有原因吗?

3 个答案:

答案 0 :(得分:1)

Python的目标是尽可能地可读。为了达到这个目标,必须强迫用户以明确的方式行事 - 例如你必须使用四个空格。就像这样,它定义了global关键字是一个简单的陈述。这意味着:

  

简单语句包含在单个逻辑行中。   Simple Statements

并且

  

程序员注意:global是解析器的指令。它仅适用于与全局语句同时解析的代码。   The global statement

如果你写这个:

global x = 5

您将有两个逻辑操作:

  1. 口译员请使用全球x而不是本地的
  2. 将5分配给x
  3. 在一行。此外,似乎global仅适用于当前行,而不适用于整个代码块。

    <强> TL; TR

    强制用户编写更好的可读代码,将其拆分为单个逻辑操作。

答案 1 :(得分:0)

document写道

  

global语句中列出的名称必须在同一代码块中以文本方式那个全局语句中使用。

     

CPython实现细节:当前实现不强制执行后两个限制,但程序不应滥用这种自由,因为未来的实现可能会强制执行它们或者默默地改变程序的含义。

至于可读性问题,我认为第二个似乎是一个C语句。它在语法上也不正确

答案 2 :(得分:-1)

我认为它将您的重点放在您正在使用全局这一事实上,这在软件工程中始终是一个值得怀疑的实践。 Python绝对不是以最紧凑的方式表示问题解决方案。接下来你会说我们应该只缩进一个空格,或者使用标签! ; - )