Python字典在导入到另一个模块时为空

问题描述 投票:0回答:1

这是一个项目模板,所以我不能做太多更改...

我将忽略我认为不相关的部分:

#file server.py
import functions
import json
import socket

funcs = {}


class JSONRPCServer:
    """The JSON-RPC server."""

    def __init__(self, host, port):
        self.host = host
        self.port = port
        self.sock = None

    def register(self, name, function):
        """Registers a function."""
        funcs[name] = function
(...)

if __name__ == "__main__":
    # Test the JSONRPCServer class
    server = JSONRPCServer('0.0.0.0', 8000)

    # Register functions
    server.register('hello', functions.hello)
    server.register('greet', functions.greet)
    server.register('add', functions.add)
    server.register('sub', functions.sub)
    server.register('mul', functions.mul)
    server.register('div', functions.div)

    print(funcs)

    # Start the server
    server.start()

这里将在funcs字典中打印我的所有函数。

我还有一个需要函数内容的文件,但是为了测试,我有这个文件:

#file test.py

from server import funcs

print(funcs)

这将打印一个空字典。我该如何做,以便funcs在这两个文件中保持其值?

python dictionary python-module
1个回答
0
投票

[当运行test.py文件时,]中的任何内容>

if __name__ == "__main__"

server.py的未运行,因为它不是主文件。因此,所有这些server.register调用都没有运行,因此您的funcs字典为空。

也许将这段代码与所有寄存器调用放在一个不同的函数中,然后直接调用它?

© www.soinside.com 2019 - 2024. All rights reserved.