python中的main函数可以被其他文件调用么_在Python中,如何在另一个py文件的[if\u name\uuuu='\uu main\uu']中调用子例程?...

你不能“调用它的主函数”,因为它没有主函数。

事实上,通常的处理方法是将所有这些代码移到一个函数中,然后使

__main__

警戒代码就是这么叫的:

def main(args):

for key in args:

print(key)

if __name__ == '__main__':

main(sys.argv)

那么你

可以

调用它的主函数,向它传递任何需要的参数。

但如果你不能修复文件,那就行不通了。

那么,什么

可以

你呢?这完全取决于你到底需要如何遵循惯例

python another.py

语义学。

快速肮脏的方法是

blhsing's answer

建议:阅读文件,然后

exec

它和

globals

从你自己的剧本:

with open('another.py') as f:

exec(f.read(), globals())

注意,这将离开

sys.argv

原封不动。当然,您可以先手动将其设置为其他值:

_argv = sys.argv

sys.argv = ['args', 'i', 'want', 'it', 'to', 'see']

try:

with open('another.py') as f:

exec(f.read(), globals())

finally:

sys.argv = _argv

如果您是从另一个模块(而不是从顶级脚本)执行此操作,则此操作将不起作用,但稍作修改后,它将:

with open('another.py') as f:

exec(f.read(), sys.modules['__main__'].__dict__)

但是最好创建一个干净的全局命名空间。脚本可能不希望你的globals坐在周围,它可能会改变你不希望它改变的事情。这同样简单:

with open('another.py') as f:

exec(f.read(), {})

(注意,这仍然会自动继承当前的

builtins

,这是你通常想要的。如果你

不要

想知道为什么,看

执行官

文档。)

如果要保证执行它的方式与正常运行脚本的方式完全相同,请使用

runpy

模块。

当你跑的时候

python -m another

,它最终要做的是:

runpy.run_module(sys.argv[0], run_name="__main__", alter_sys=True)

因此,您可以手动执行相同的操作:

runpy.run_module('another', run_name='__main__')

是否要添加

alter_sys=True

取决于你在追求什么。如果脚本试图访问

系统参数

(就像你的剧本一样)或者

sys.modules['__main__']

,它将看到你的价值观,而不是自己的价值观。

如果你想效仿

python另一个.py

,您需要使用

importlib

创建完整的

__spec__

以及相关对象,然后调用

runpy.run_path

.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值