2016-06-07 3 views
6

Warum tun wir dies zu tun haben:Warum muss eine Variable als globale Variable deklariert werden, bevor sie zugewiesen wird?

global x 
x = "Hello World!" 

Wenn diese besser lesbar ist:

global x = "Hello World" 

Warum dies ist, gibt es einen Grund dahinter?

+7

Python hat keine anderen Variablenmodifikatoren, aber andere Anweisungen; Dies hält daher die Grammatik einfacher. Was lesbarer ist, ist unweigerlich eine Frage der Meinung. – jonrsharpe

+0

Es würde mit mehr Variablen weniger lesbar werden. zum Beispiel: 'global x =" Hallo Welt ", y =" Was ist los Welt ", z =" Auf Wiedersehen Welt "' es wird ein bisschen voll. – BradTheBrutalitist

+0

Ich glaube nicht, dass Sie eine definitive Antwort bekommen werden, die Guido oder einige der Entwickler fragt. –

Antwort

1

Das Ziel von Python ist es, so lesbar wie möglich zu sein. Um dieses Ziel zu erreichen, muss der Benutzer gezwungen werden, in einer klar definierten Weise zu agieren - z. Sie müssen genau vier Leerzeichen verwenden. Und genau so definiert es, dass das Schlüsselwort global eine einfache Anweisung ist. Das bedeutet:

Eine einfache Anweisung besteht aus einer einzelnen logischen Zeile. Simple Statements

Und

Programmierer Anmerkung: die global eine Richtlinie an den Parser ist. Es gilt nur für den Code, der gleichzeitig mit der globalen Anweisung analysiert wird. The global statement

Wenn Sie dies würde schreiben:

global x = 5 

Sie würden zwei logische Operationen haben:

  1. Interpreter bitte die globalen x nicht eine lokale
  2. Assign verwenden 5 x

in einer Zeile. Es scheint auch so, als ob die global nur für die aktuelle Zeile gilt und nicht für den gesamten Codeblock.

TL, TR

Es ist den Benutzer zu zwingen, besser lesbaren Code zu schreiben, die auf einzelne logische Operationen aufgeteilt ist.

+0

Falx, danke für die Zeit und Mühe, die du für die Beantwortung meiner Frage gebraucht hast, ich habe jetzt ein besseres Verständnis, +1. –

-1

Ich denke, es bringt Ihren Fokus direkt auf die Tatsache, dass Sie Globals verwenden, immer eine fragwürdige Praxis in der Softwareentwicklung. Bei Python geht es definitiv nicht darum, eine Problemlösung auf die kompakteste Art darzustellen. Als Nächstes werden Sie sagen, dass wir nur ein Leerzeichen einrücken oder Tabs verwenden sollen! ;-)

+0

Holdenweb, vielen Dank für die Zeit und Mühe, die Sie genommen haben, um meine Frage zu beantworten, +1. –

+1

Auf jeden Fall fühlen Sie sich frei, es zu markieren – holdenweb

0

Die document schreibt, dass

Namen in einer global aufgeführten Anweisung muss nicht im gleichen Codeblock , dass die globale Aussage vorhergehenden textlich verwendet werden.

CPython-Implementierungsdetail: Die aktuelle Implementierung erzwingt nicht die beiden letztgenannten Einschränkungen, aber Programme sollten diese Freiheit nicht missbrauchen, da zukünftige Implementierungen sie erzwingen oder die Bedeutung des Programms stillschweigend ändern können.

Wie für die Lesbarkeit Frage, ich denke, die zweite scheint wie eine C-Anweisung. Es ist auch nicht syntaktisch korrekt

+0

Gdlmx, danke für die Zeit und Mühe, die Sie genommen haben, um meine Frage zu beantworten, +1. –