Python中的快速功能问题。是否可以阻止函数处理并尽早返回。就像这样:
def _do_something():
if not exists('/etc/', use_sudo=True):
# no files don't do any more
return
# if ok continue with stuff
sudo('/etc/init.d/nginx stop')
这可以吗?或者是否有类似'退出' ?
答案 0 :(得分:2)
你的问题听起来像"有没有更好的方法来做到这一点?"。 不,这看起来很好并且会起作用。
对于循环,你可以使用break-statement,但在一个函数中,这是一个很好的方法来停止"停止"它 - 隐含地返回None
。
答案 1 :(得分:1)
是的,这是构建程序逻辑的常用方法。
有些人会说你以相反的方式编写你的函数,比如:
def _do_something():
if exists('/etc/', use_sudo=True):
sudo('/etc/init.d/nginx stop')
因为它更短,在某种程度上,通过编写函数更直接地表示你的意思。
您在问题中遇到的结构有一点需要担心的是当函数变得更复杂时会发生什么。具有许多返回语句的大而复杂的函数可能实际上具有无法访问的代码,其中该函数保证提前返回并且在函数结束时存在将不执行的代码。
def lol():
print "first!"
return
print "unreachable"
在这种情况下,看到永远不会打印“无法访问”是微不足道的,但如果你有许多嵌套的if / else语句,这就不那么明显了。好的IDE会警告你无法访问的代码,但是如果你选择在更简单的文本编辑器中编程,这是需要考虑的事情。
旁注:如果您不知道,以一个或两个下划线开头的Python函数通常会附加一个“特殊含义”。我会留下剩下的让你去探索。