【问题标题】:How to make python run the whole file when imported如何让python在导入时运行整个文件
【发布时间】:2021-08-15 07:18:23
【问题描述】:

对于我正在制作游戏的上下文,游戏中有一个多人游戏功能,当我点击多人游戏按钮时,它会导入文件client.py,第一个游戏结束后,我需要调用@987654322 @ 再一次,因为在全局范围内有一行 client.connect(ADDR)。但是python拒绝再次导入文件,我需要客户端再次连接,因为它在第一场比赛后断开连接......有什么想法吗?

client.py:

import socket
print("HIII") #This is was there for testing

HEADER = 6400
PORT = 5050
FORMAT = 'utf-8'
DISCONNECT_MESSAGE = "!DISCONNECT"
SERVER = "<Ipv4 address here>"
ADDR = (SERVER, PORT)

client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(ADDR)

def send(msg, send=True):
    if send:
        message = msg.encode(FORMAT)
        client.send(message)

    msgFromServer = client.recv(HEADER).decode(FORMAT)
    return msgFromServer

【问题讨论】:

    标签: python sockets import


    【解决方案1】:

    我觉得你可以试着把它变成一个函数,比如

    import socket
    def run_client():
        print("HIII")
        HEADER = 6400
        ...
    

    和from client import run_client 在主文件中。 这样一来,函数就可以导入一次,想用就用。

    【讨论】:

    • 是的,它有效,但有更有效的方法吗?
    • 如果你真的想“重新导入”它,你可以试试snippet。解决方案来自this question,大家可以去看看。
    • 如果你仍然希望函数在导入文件时首先运行,请在文件中的全局范围内调用该函数
    • @SiriusKoan 我想这就是我想要做的,谢谢
    猜你喜欢
    • 2019-08-06
    • 2016-10-04
    • 2022-01-24
    • 2020-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多