2017-05-17 4 views
3

Ich habe zwei Skripte, first.py und second.py. Ich möchte Variablen von ersten bis zweiten und Variablen von Sekunde zu Sekunde senden. Aber es zeigt einen Fehler. Kann mir bitte jemand helfen?Wie können Sie Variablen zwischen zwei Python-Skripten gemeinsam nutzen?

first.py

import second 

a=10 

print second.b 

second.py

import first 

b=15 

print first.a 

Der Fehler

AttributeError: 'module' object has no attribute 'b'

+0

welche Fehler zeigt es? – user3012759

+1

Das ist meine Vermutung: Wenn Sie 'second' in' first.py' importieren, passiert zuerst, dass 'first' in' second' importiert wird. Dann wird "first" gelesen, wobei "import second" übersprungen wird, da das fertig ist und Python das gleiche nicht zweimal importiert (andernfalls würde man eine unendliche Schleife von Importen zwischen den beiden Dateien bekommen). Dann wird die Zeile "a = 10" gelesen und schließlich "zweite Sekunde gedruckt". Das Problem ist, dass 'second.py' keine Zeit hatte, nach unten zu lesen, weil es zuerst 'zuerst importieren' versucht hat, und so '' b'' zu der Zeit 'print second.b' nicht zugewiesen hat namens. – BallpointBen

Antwort

4

Ganz offen gesagt, Sie wollen nicht, das zu tun. Es kann zu kreisförmigen Importen (oder Teilimporten) und viel Verwirrung führen. Was Sie normalerweise wollen, ist ein Hauptprogramm, das die anderen beiden importieren wird. Das Hauptprogramm kann dann Daten von einem zum anderen übertragen, da es Zugriff auf beide hat.

Es gibt auch die Idee von Publish/Subscribe - https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern

In Python können Sie dies selbst tun, oder Sie können ein günstiges Paket verwenden wie PyPubSub oder PyDispatcher

0

Sie einen einfachen Memcached-Server verwenden können Das. https://pypi.python.org/pypi/python-memcached

+0

Es wird normalerweise für Multi-Processing-Anforderungen für den gleichzeitigen Zugriff verwendet, funktioniert aber auch für Ihren Fall. –

0

Alternativ kann, wenn es auch etwas, das jemand anderes davon profitieren könnten, können Sie versuchen, es in eine dritte Datei zu schreiben (nennen wir es variable.txt oder etwas)

Verwandte Themen