人工智能在PEP 8中找不到任何有关的内容.我对你对功能最无效的语法感兴趣吗?
有没有理由阻止没有返回线的功能(例3)?
例1:
def foo():
print 'foo'
return None
Run Code Online (Sandbox Code Playgroud)
例2:
def foo():
print 'foo'
pass
Run Code Online (Sandbox Code Playgroud)
例3:
def foo():
print 'foo'
Run Code Online (Sandbox Code Playgroud)
b3o*_*orn 17
把事情简单化.例3是最pythonic的方式.
>>> import this
The Zen of Python, by Tim Peters
...
Simple is better than complex.
...
Run Code Online (Sandbox Code Playgroud)
geo*_*org 14
有两种用例:
return None那里,因为否则可能会让读者感到有些困惑:例:
def find_user(name):
if database.is_ready():
return database.find_user_by_name(name)
else:
return None
Run Code Online (Sandbox Code Playgroud)
从技术上讲,你可以删除该else部分,但这会使该功能看起来令人困惑.
该PEP8了关于该议题的建议:
在回报陈述中保持一致.要么所有的功能return语句应该返回一个表达式,或者没有人应.如果任何return语句返回一个表达式,那么任何没有返回值的return语句都应该明确地将其声明为return None,并且在函数末尾应该有一个显式的return语句(如果可以访问).
是:
def foo(x):
if x >= 0:
return math.sqrt(x)
else:
return None
def bar(x):
if x < 0:
return None
return math.sqrt(x)
Run Code Online (Sandbox Code Playgroud)
没有:
def foo(x):
if x >= 0:
return math.sqrt(x)
def bar(x):
if x < 0:
return
return math.sqrt(x)
Run Code Online (Sandbox Code Playgroud)
如果你的函数返回一个值,那可能None是某种情况,return None是好的.
如果你的函数没有返回值,但你想提前返回,请使用return不带任何参数.在最后一行,您可以省略它.
pass 什么都不做,只有在需要声明语法错误时才有用(例如在空类中)