私はPythonを学んでいて、次のようなコードを書く方法があるかどうか疑問に思っていました。
def f(x):
if x>1:
return(x)
else:
# don't return anything
コードの他の部分について質問しています。返品が受け入れられない場合x<=1
は、何も返品する必要はありません。None
私はPythonを学んでいて、次のようなコードを書く方法があるかどうか疑問に思っていました。
def f(x):
if x>1:
return(x)
else:
# don't return anything
コードの他の部分について質問しています。返品が受け入れられない場合x<=1
は、何も返品する必要はありません。None
Pythonには「何も返さない」というようなものはありません。すべての関数は何らかの値を返します(例外が発生しない限り)。明示的なreturn
ステートメントが使用されていない場合、Pythonはそれをを返すものとして扱いNone
ます。
ですから、あなたは自分の機能に最も適切なものを考える必要があります。None
(または他の番兵値)を返し、これを検出するために呼び出し元のコードに適切なロジックを追加するか、例外を発生させる必要があります(必要に応じて呼び出し元のコードがキャッチできます)。
文字通り「nothing」をpass
返すには、を使用します。これは、関数に入れられた場合、基本的に値Noneを返します(関数は値を返す必要があるため、「nothing」を返さないのはなぜですか)。ただし、これは明示的に、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タイプを返したくない場合は、空白に置き換えることができます。
def test(x): x> 1の場合: return(x) そうしないと: print('')を返す
filterでラムダ関数を使用して、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]
ヒントがあるかもしれません!print(f(x))と書くと、戻り値がない場合はNoneが出力されますが、「print」なしで関数を呼び出し、代わりに関数に「print(s)」と書くと、値なし
リターンchr(0)
原因0
を使用できますASCII
が、文字がないため、空白のままになります
すべての答えに追加するために、関数を返さない唯一の実際の方法は、例外を発生させることです。少なくとも、何も返さなかった後でもプログラムを実行する必要がある限り。
したがって、コードは次のようになります。
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