gpt4 book ai didi

python - 在 python 中导入模块时是否有类似于 `return` 的情况?

转载 作者:行者123 更新时间:2023-12-02 21:09:33 24 4
gpt4 key购买 nike

免责声明

我知道,我可以简单地在 if __name__ == '__main__ 下编写缩进的代码,或者将其放入函数中。但是,这会增加不必要的缩进级别。我也知道这会是不好的风格,我应该编写一个合适的模块。我只是想知道。当然,与 setuptools 一起使用的入口点会更好,人们不应该偷懒,将它们与 virtualenv 一起使用进行测试。我问这个问题纯粹是为了“是否有命令可以提前完成文件导入”的学术知识。


实际问题

可以提前返回函数以防止执行其余的函数代码。这有利于节省缩进级别。示例:

def my_func(arg):
print arg
if arg == 'barrier':
return
print 'arg is not barrier'
# ...
# alot more nested stuff that
# will not be executed if arg='barrier'

与以下内容相比,保存缩进级别:

def my_func(arg):
print arg
if arg == 'barrier':
return
else:
print 'arg is not barrier'
# ...
# alot more nested stuff that
# is one indentation level deeper :-(

在导入模块时是否可以执行类似的操作,以便不导入其余代码?例如在模块文件中:

# !/usr/bin/python
# I'm a module and a script. My name is 'my_module.py'.
# I define a few functions for general use, and can be run standalone.

def my_func1(arg):
# ... some code stuff ...
pass

def my_func2(gra):
# ... some other useful stuff ...
pass

if __name__ != '__main__':
importreturn # Statement I'm looking for that stops importing
# `exit(0)` here would exit the interpreter.

print 'I am only printed when running standalone, not when I'm imported!'
# ... stuff only run when this file is executed by itself ...

这样我就不会看到“我只在独立运行时打印,而不是在导入时打印!”,当我这样做时:

import my_module.py
my_func2('foobar')

最佳答案

不,Python 中没有对此的声明。

最接近您想要的事情是引发异常并在 try/except block 内进行导入。 raise 语句后面的代码不会被执行。

要真正实现这样的语句,您将需要一个进行一些预处理的自定义导入处理程序和/或一个自定义编译器。如果您想了解 Python 内部原理,但不应该在实际应用程序中使用它,这可能是一个有趣的挑战。

关于python - 在 python 中导入模块时是否有类似于 `return` 的情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34270492/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com