首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Python中,传递和返回有什么区别

在Python中,传递和返回有什么区别
EN

Stack Overflow用户
提问于 2011-10-24 15:50:01
回答 7查看 40.6K关注 0票数 40

我在Pinax和其他django应用程序中看到了一些代码,它们使用空的return语句而不是pass。有什么不同?它会对下面我运行的django代码产生影响吗?代码是一个信号方法,它自动将hashtag保存到tweet对象的taggit Tag对象中。

我在这里看到了一个问题,在PHP中是否有一个return语句会对解释字节码产生影响,但我不确定它是否与Python相关。

代码语言:javascript
复制
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)
EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2011-10-24 15:56:00

代码语言:javascript
复制
if not instance:
    return # will pass be better or worse here?

更糟的是。它改变了逻辑。pass实际上意味着:什么都不做。如果您想在这里用pass替换return,则控制流将继续,并更改代码的语义。

pass的目的是创建空块,这在使用Python缩进方案时是不可能的。例如,C中的一个空函数如下所示:

代码语言:javascript
复制
void foo()
{
}

在Python中,这将是一个语法错误:

代码语言:javascript
复制
def foo():

这就是pass派上用场的地方:

代码语言:javascript
复制
def foo():
    pass
票数 77
EN

Stack Overflow用户

发布于 2014-07-30 13:40:29

这说明了一些早期的答案。

代码语言:javascript
复制
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
票数 34
EN

Stack Overflow用户

发布于 2011-10-24 15:51:30

Return退出当前函数或方法。Pass是一个空操作,允许从下一条语句继续执行。

票数 24
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7872611

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档