如何在python中导入自定义模块

2022-10-02 01:57:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我在spyder ide中编写了代码,并将其命名为test1.py,还编写了另一个代码,其中我调用了第1个代码。你知道吗

第1代码:

def buildConnectionString(params):
    """Build a connection string from a dictionary of parameters."""
    return ";".join(["%s=%s" % (k, v) for k, v in params.items()])

if __name__ == "__main__":
    myParams = {"server":"mpilgrim", \
                "database":"master", \
                "uid":"sa", \
                "pwd":"secret" \
               }
    print buildConnectionString(myParams)   

第二代码:

import test1

Params = {"server":"mpilgrim", \
            "database":"master", \
            "uid":"sa", \
            "pwd":"secret" \
         }

print test1.buildConnectionString(Params)   

但我得到一个错误打印buildConnectionString(myParams) NameError: name 'myParams' is not defined。你知道吗


Tags: 代码namemasteruidsecretserverpwdsaparamsdatabaseprinttest1buildconnectionstringmpilgrimmyparams
3条回答
网友
1楼 ·

如果将文件作为模块导入,__name__将不会是"__main__"(它将是"test1"),因此myParams从未定义过。你知道吗

网友
2楼 ·

导入python模块时,需要在模块的目录中有一个__init__.py文件(可以为空)。你知道吗

你的缩进看起来很奇怪,但我想这就是格式。你知道吗

See the modules docs for python

网友
3楼 ·

缩进。我的猜测是,您正在运行的代码仍然存在发布在这里的代码的缩进问题之一。你知道吗

导入文件的最后一行

print buildConnectionString(myParams) 

需要缩进才能在

if __name__ == '__main__':

阻止。否则,当尚未定义myParamsdict时,它将尝试在导入时执行。你知道吗