为了账号安全,请及时绑定邮箱和手机立即绑定

如何从一个Python脚本导入函数而不调用它

如何从一个Python脚本导入函数而不调用它

一只萌萌小番薯 2023-08-22 10:37:00
我正在尝试导入一个名为的函数,page1该函数内部包含库文件中的其他函数,以便我可以在该文件中调用它。但是,这会产生以下错误:Traceback (most recent call last):  File "/Users/antonios/numworks-math-libs/numworksMath.py", line 1, in <module>    import numworksLibs  File "/Users/antonios/numworks-math-libs/numworksLibs.py", line 1, in <module>    from numworksMath import page1  File "/Users/antonios/numworks-math-libs/numworksMath.py", line 35, in <module>    page1()  File "/Users/antonios/numworks-math-libs/numworksMath.py", line 29, in page1    numworksLibs.get_ordered_pair(ordered_pair_num, xs, ys)AttributeError: partially initialized module 'numworksLibs' has no attribute 'get_ordered_pair' (most likely due to a circular import)我认为这是因为主脚本正在导入库,而库正在导入主脚本(循环导入)。有没有办法可以在 Python 中解决这个问题?我已经尝试了该网站上的所有解决方案,并确保没有任何名称与任何 Python 内置库冲突。get_ordered_pair也在库文件中定义。库文件导入:from numworksMath import page1主脚本的片段:import numworksLibsdef page1():page1包含在没有输入的情况下调用函数时将运行的代码,并且从 Python CLI 导入文件时会发生这种情况。
查看完整描述

2 回答

?
catspeake

TA贡献1111条经验 获得超0个赞

您可以通过检查文件是否作为脚本运行或者是否作为模块导入来保护代码。为此,您需要检查电流是否__name__设置为'__main__'

如果您的文件如下所示:

def foo():
    ...

foo()

只需将其更改为仅在运行foo时运行__name__'__main__'

def foo():
    ...
if __name__ == '__main__':
    foo()

现在foo只有当你直接在文件上调用 python 时才会自动运行,而不是简单地导入它。


查看完整回答
反对 回复 2023-08-22
?
潇湘沐

TA贡献1816条经验 获得超6个赞

在这种情况下,您真正想做的是创建一个单独的文件,包含您多次导入的所有代码,并让每个脚本导入它。对我来说,我创建了一个名为 的文件,main.py其中包含需要多次导入的所有代码,然后库文件和主脚本都导入该文件。



查看完整回答
反对 回复 2023-08-22
  • 2 回答
  • 0 关注
  • 90 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信