大多数pythonic的功能方式没有回报?

T. *_*sen 9 python pep8

人工智能在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)

  • 我们不会通过抛出与系统设计更相关的格言而不是代码语法来实现任何目标.Thg435的答案要好得多,因为它包含了关于如何最好地表达您希望代码的含义的反思. (5认同)

geo*_*org 14

有两种用例:

  • 一个永不返回任何东西的函数(又名"程序").你应该完全省略退货.
  • 某些输入返回None的函数.我个人更喜欢放在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部分,但这会使该功能看起来令人困惑.

  • 从执行的角度来看,它是不必要的,但它用于向读者表明该函数将返回None数据库未通过设计准备好,并且它不仅仅是作者忽略的东西. (8认同)
  • 这是一种丑陋的做法,现在我从读者的立场说话.只是在没有别的情况下返回 (7认同)
  • @madjar读者应该学习如何阅读python.缩进清楚地表明执行流程. (2认同)

Vas*_*kis 8

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)


mad*_*jar 7

如果你的函数返回一个值,那可能None是某种情况,return None是好的.

如果你的函数没有返回值,但你想提前返回,请使用return不带任何参数.在最后一行,您可以省略它.

pass 什么都不做,只有在需要声明语法错误时才有用(例如在空类中)