我在Pinax和其他django应用程序中看到了一些代码,它们使用空的return语句而不是pass。有什么不同?它会对下面我运行的django代码产生影响吗?代码是一个信号方法,它自动将hashtag保存到tweet对象的taggit Tag对象中。
我在这里看到了一个问题,在PHP中是否有一个return语句会对解释字节码产生影响,但我不确定它是否与Python相关。
import re
TAG_REGEX = re.compile(r'#(?P<tag>\w+)')
def get_tagged(sender, instance, **kwargs):
"""
Automatically add tags to a tweet object.
"""
if not instance:
return # will pass be better or worse here?
post = instance
tags_list = [smart_unicode(t).lower() for t in list(set(TAG_REGEX.findall(post.content)))]
if tags_list:
post.tags.add(*tags_list)
post.save()
else:
return # will a pass be better or worse here?
post_save.connect(get_tagged, sender=Tweet)
发布于 2011-10-24 15:56:00
if not instance:
return # will pass be better or worse here?
更糟的是。它改变了逻辑。pass
实际上意味着:什么都不做。如果您想在这里用pass
替换return
,则控制流将继续,并更改代码的语义。
pass
的目的是创建空块,这在使用Python缩进方案时是不可能的。例如,C中的一个空函数如下所示:
void foo()
{
}
在Python中,这将是一个语法错误:
def foo():
这就是pass
派上用场的地方:
def foo():
pass
发布于 2014-07-30 13:40:29
这说明了一些早期的答案。
def p():
"Executes both blocks."
if True:
print(1)
pass
if True:
print(2)
pass
def r():
"Executes only the first block."
if True:
print(1)
return
if True:
print(2)
return
https://stackoverflow.com/questions/7872611
复制相似问题