我正在学习Python,我想知道是否有一种方法可以编写代码,做到如下功能:
def f(x):
if x>1:
return(x)
else:
# don't return anything
我询问代码的else部分。如果x<=1
,则不需要返回任何内容,返回None
是不可接受的。
我正在学习Python,我想知道是否有一种方法可以编写代码,做到如下功能:
def f(x):
if x>1:
return(x)
else:
# don't return anything
我询问代码的else部分。如果x<=1
,则不需要返回任何内容,返回None
是不可接受的。
return
语句,则Python将其视为返回None
。None
(或其他后续处理标识),并在调用代码中添加适当的逻辑来检测它,要么引发异常(如果调用代码希望这样做,可以捕获异常)。None
、nothing
、null
和 nil
用于表示无内容:https://nshipster.com/nil/。这意味着返回 None
是正确的答案。 - Adam Erickson要想字面上返回“nothing”,可以使用pass
,如果将其放在函数中,则基本上返回值为None(函数必须返回一个值,为什么不是“nothing”呢?)。您也可以显式地这样做:return None
。
所以,您可以选择:
if x>1:
return(x)
else:
pass
或者if x>1:
return(x)
else:
return None
能够解决问题。
else
块是完全相同的。 - BlckknghtNone
”;它实际上什么也不做。在那个代码示例中发生的 None
返回是因为控制流到达函数的结尾。else: pass
等同于在 每种 情况下省略 else
块,即使在完整的 if
块之后还有更多的代码。 - Karl Knechtel没有什么比只返回你想要的更好了,但这可以通过使用一个空的return
语句来实现。它会返回一个None
。
下面是一个例子:
if 'account' in command:
account()
def account():
talkToMe('We need to verify your identity for this. Please cooperate.')
talkToMe('May I know your account number please?')
acc_number = myCommand()
talkToMe('you said your account number is '+acc_number+'. Is it right?')
confirmation = myCommand()
if confirmation!='yes' or 'correct' or 'yeah':
talkToMe('Let\'s try again!')
account()
else:
talkToMe('please wait!')
return
这将不会返回任何东西给调用函数,但会停止执行并返回到调用函数。
account()
函数来“重新启动”函数是不明智的。 - Karl Knechtel这个怎么样?
def function(x):
try:
x = x+1
return (x)
except:
return ('')
除了所有答案之外,不返回函数的唯一实际方法是引发异常。至少,在程序需要在未返回任何内容的情况下继续运行时是这样。
因此,您的代码可以是:
def f(x):
if x>1:
return x
raise Exception
(请注意,我没有使用else
块来引发异常,因为如果条件已满足,它将已经返回了值。但是,您也可以在else
块中执行此操作)
在测试运行时:
num1 = f(2) # 2
num2 = f(0) # Unbound; and error raised
如果你想在某些条件下仍然返回None
,而在其他条件下不返回任何内容,那么这将非常有用:
def f(x):
if x > 0:
return x
elif x == 0:
return None # pass
raise Exception
>>> num1 = f(1) # 1
>>> num2 = f(0) # None
>>> num3 = f(-1) # Unbound; and error raised
try:
num = f(0)
except:
pass
这样,如果f(0)
引发异常(它确实会这样做),则会被except
块捕获,并且您可以继续程序的运行,放心num
不是None
,而只是未绑定。
exit()
和 quit()
所做的。当我在我的代码编辑器中检查 exit()
和 quit()
的返回类型时,它会显示给我 NoReturn
,这与普通函数显示 None
不同 :)您可以这样做:
>>> def f(x):
... return x if x>1 else None
...
>>> f(1),f(2)
(None, 2)
它看起来会“什么都不返回”:
>>> f(1)
>>>
但是即使是替代方案也会返回空值:
>>> def f2(x):
... if x>1: return x
...
>>> f2(1),f2(2)
(None, 2)
或者:
>>> def f2(x):
... if x>1:
... return x
... else:
... pass
...
>>> f2(1),f2(2)
(None, 2)
如果你想从返回语句中获得一个空白结果,只需输入 return ""。这样,在最后一行将只会得到一个空白行而没有任何打印出来的内容。
def f(x):
if x>1:
return(x)
else:
return ""
如其他人所述,根据您的情况它将始终返回None。但是,如果您不想返回None类型,则可以将其替换为空格。
def test(x): if x >1: return(x) else: return print('')
此处有两种方法,前一种方法会明确地返回 None
,而后一种方法不会。
def fn1():
pass
def fn2():
return None
fn1() == fn2()
True
我的个人偏好始终是显式方法,因为它减少了心理负担。
简单来说
for i in range(0,10):
if i<5:
None
else:
print("greater")
输出:-
greater
greater
greater
greater
greater
对于所有小于5的值,该代码不会输出任何内容。
None
。避免它的唯一方法是抛出异常或者有一个非终止的函数。 - zchNone
是不可接受的?你可以忽略函数的返回值。 - Russell Borogovevar = foo()
并且函数“返回实际上什么都没有”的时候,你希望var
绑定到什么?你必须使用raise
并添加错误处理给调用者。 - wim