関数があるとしましょう
def x():
print(20)
ここで、関数を という変数に割り当てて、y
を使用するy
と関数x
が再度呼び出されるようにします。単純に割り当てy = x()
を行うと、 が返されますNone
。
関数があるとしましょう
def x():
print(20)
ここで、関数を という変数に割り当てて、y
を使用するy
と関数x
が再度呼び出されるようにします。単純に割り当てy = x()
を行うと、 が返されますNone
。
関数を呼び出さないだけです。
>>>def x():
>>> print(20)
>>>y = x
>>>y()
20
角かっこは、関数を呼び出していることを python に伝えるため、そこに配置すると、関数が呼び出され、返されy
た値(この場合は) が割り当てられます。x
None
関数を変数に代入するときは、() を使用せず、単に関数の名前を使用します。
あなたの場合、与えられdef x(): ...
た変数silly_var
では、次のようにします:
silly_var = x
そして、次のいずれかで関数を呼び出すことができます
x()
また
silly_var()
実行y=x()
すると、実際には関数オブジェクトを呼び出した結果に y が代入され、x
関数の戻り値は になりNone
ます。Python での関数呼び出しは、 を使用して実行され()
ます。関数オブジェクト x を y のように割り当てて、関数を呼び出すのと同じようにx to y
呼び出すことができるように割り当てるにはy
x
y=x
y()
構文
def x():
print(20)
基本的には同じですx = lambda: print(20)
(ボンネットの下でいくつかの違いがありますが、ほとんどの実用的な目的では、結果は同じです)。
構文
def y(t):
return t**2
と基本的に同じy= lambda t: t**2
です。関数を定義すると、その関数を値として持つ変数が作成されます。最初の例ではx
、 function になるように設定していますlambda: print(20)
。だからx
今その機能を指します。 x()
関数ではなく、関数の呼び出しです。Python では、関数は単に変数の一種であり、通常は他の変数と同じように使用できます。例えば:
def power_function(power):
return lambda x : x**power
power_function(3)(2)
これは 8 を返します。power_function
は、関数を出力として返す関数です。で呼び出されると3
、入力を 3 乗する関数が返されるため、その関数が input2
で呼び出されると 8 が返されcube = power_function(3)
ますcube(2)
。
関数の名前を変更して新しい名前で呼び出すことの価値/有用性が何であるかわかりません。しかし、たとえばコマンドラインから取得した文字列を関数名として使用すると、いくつかの価値/有用性があります。
import sys
fun = eval(sys.argv[1])
fun()
この場合、fun = x です。