Есть ли способ вернуть буквально ничего в python?
Я изучаю python, и мне просто интересно, есть ли способ написать код, который делает что-то вроде:
def f(x):
if x>1:
return(x)
else:
# don't return anything
Я спрашиваю о другой части кода. Мне не нужно ничего возвращать, если x<=1
, возврат None
не подходит.
Ответы
Ответ 1
В Python нет такой вещи, как "возврат ничего". Каждая функция возвращает некоторое значение (если только оно не вызывает исключение). Если явный оператор return
не используется, Python рассматривает его как возвращающий None
.
Итак, вам нужно подумать о том, что наиболее подходит для вашей функции. Либо вы должны вернуть None
(или какое-либо другое значение дозорного устройства) и добавить соответствующую логику к вашему вызывающему коду, чтобы обнаружить это, или вы должны создать исключение (которое может вызвать код вызова, если он захочет).
Ответ 2
Чтобы буквально вернуть "ничего", используйте pass
, который в основном возвращает значение None, если вставляется в функцию (функции должны возвращать значение, поэтому почему бы не "ничего"). Вы можете сделать это явным образом и return None
самостоятельно.
Итак, либо:
if x>1:
return(x)
else:
pass
или
if x>1:
return(x)
else:
return None
будет делать трюк.
Ответ 3
Вы можете сделать что-то вроде этого:
>>> 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)
Поэтому они функционально одинаковы независимо от того, как вы его пишете.
Ответ 4
Как насчет этого?
def function(x):
try:
x = x+1
return (x)
except:
return ('')
Ответ 5
Вы можете использовать лямбда-функцию с фильтром, чтобы вернуть список значений, которые передают условие if.
Пример:
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)
Выход:
[1,5,6,7,2]
Ответ 6
Там нет ничего, как вернуть ничего, кроме того, что вы пытаетесь сделать, может быть сделано, как это возможно.
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\ try again!')
account()
else:
talkToMe('please wait!')
return
Это ничего не вернет вызывающей функции, но остановит выполнение и достигнет вызывающей функции.
Ответ 7
Как уже упоминалось выше, в вашем случае он всегда вернет None. Однако вы можете заменить его пробелом, если не хотите возвращать тип None
def test(x):
if x >1:
return(x)
else:
return print('')
Ответ 8
Будет ли это работать для вас?
if x>1:
return(x)
else:
pass