Есть ли способ вернуть буквально ничего в 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