我正在学习 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
是不可接受的。
在 Python 中没有“不返回任何内容”这样的东西。每个函数都会返回一些值(除非它引发异常)。如果没有return
使用显式语句,Python 将其视为返回None
。
因此,您需要考虑什么最适合您的功能。您应该返回None
(或其他一些标记值)并向调用代码添加适当的逻辑以检测这一点,或者您应该引发异常(调用代码可以捕获,如果它愿意)。
从字面上返回“无”使用pass
,如果放入函数中,它基本上返回值 None (函数必须返回一个值,所以为什么不“无”)。不过,您可以明确地执行此操作return None
。
所以要么:
if x>1:
return(x)
else:
pass
或者
if x>1:
return(x)
else:
return None
会成功的。
没有什么比不返回任何内容更好的了,但是您尝试做的事情可以通过使用空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
这不会向调用函数返回任何内容,但会停止执行并到达调用函数。
这个怎么样?
def function(x):
try:
x = x+1
return (x)
except:
return ('')
你可以这样做:
>>> def f(x):
... return x if x>1 else None
...
>>> f(1),f(2)
(None, 2)
它似乎“什么都不返回”:
>>> f(1)
>>>
但即使是替代方案也返回 None:
>>> 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)
因此,无论您如何编写它们,它们在功能上都是相同的。
正如其他人在上面提到的,在你的情况下它总是会返回 None 。但是,如果您不想返回 None 类型,则可以将其替换为空格
定义测试(x): 如果 x >1: 返回(x) 别的: 返回打印('')
You can use lambda function with filter to return a list of values that pass if condition.
Example:
myList = [1,20,5,50,6,7,2,100]
result = list(filter(lambda a: a if a<10 else None, (item for item in myList)))
print(result)
Output:
[1,5,6,7,2]
只是为了添加所有答案,不返回函数的唯一实际方法是引发异常。至少,只要程序需要运行,即使没有返回任何东西。
所以你的代码可以是:
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
的常规函数不同:)
您可以在没有字符的情况下使用返回chr(0)
原因,因此将其留空0
ASCII
我可能有一个提示给你!如果没有返回值,编写 print(f(x)) 将输出 None ,但如果你只是在没有'print'的情况下调用你的函数,而是在函数中写入一些'print(s)',你将不会有无值