Я недавно закончил проект и теперь хочу разделить программу на несколько файлов, чтобы улучшить читаемость и будущие улучшения, но я не знаю, как это сделать. Я разделил все функции, связанные с определенной темой, на их собственные файлы (файлы базы данных в файле базы данных, файлы хеширования в хеширование и т. Д. И т. Д.)
edit: я считаю, что правильный термин - «модули» («файлы», на которые я пытаюсь разбить свою программу, извините за отсутствие правильной терминологии)
Для этого я сделал «из импорта foo *», что, как я знаю, является плохой практикой, но в моем редакторе pycharm он не показывает никаких немедленных ошибок в отличие от выполнения «import foo».
Однако, когда я запускаю программу, я получаю сообщение об ошибке, в котором говорится, что импортированный мной файл использует неопределенную переменную (которая определена в основной программе)
Вот фрагмент кода:
from Data_Funcs import *
if __name__ == "__main__":
DBSetup()
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind((host, port))
s.listen(1)
while True:
conn, addr = s.accept()
connThread = Thread(target=handler, args=(conn, addr))
connThread.daemon = True
connThread.start()
Вот Data_Funcs:
def receiveData(FROM=""):
print("In receive data")
if FROM:
print("From:", FROM)
# sendPickledData(dataReady)
dataString = conn.recv(4096)
try:
dataString = pickle.loads(dataString)
except pickle.UnpicklingError as err:
print("Pickling error:")
print(err)
time.sleep(0.2)
print("Data received:")
print(dataString)
return dataString
def sendPickledData(data):
print("In sendPickled,\nSending:",data)
data = pickle.dumps(data)
conn.sendall(data)
time.sleep(0.2)
Однако, когда я запускаю программу, я получаю сообщение об ошибке:
File "C:\Users\Green\AppData\Local\Programs\Python\Python36\lib\threading.py", line 916, in _bootstrap_inner
self.run()
File "C:\Users\Green\AppData\Local\Programs\Python\Python36\lib\threading.py", line 864, in run
self._target(*self._args, **self._kwargs)
File "C:/Users/Green/Desktop/Py Proj/Project_Server_Handler_v5.py", line 200, in handler
data = receiveData("handler")
File "C:\Users\Green\Desktop\Py Proj\Data_Funcs.py", line 7, in receiveData
dataString = conn.recv(4096)
NameError: name 'conn' is not defined
Несмотря на то, что переменная conn определена в части "if name == ' main ':" основной программы