def
では、(おそらく不明)の(!)引数を受け入れる新しい関数を定義します。
したがって、def sin(x):
は、「1つの引数を受け入れるsin
という関数を定義する」ことを意味します。このコードはx
が絶対に何も、あなたが定義にはない(とすることはできません)、その型、値、サイズ上の任意の制限を適用する機能など
ことができることを意味することに注意してください
a = "hello"
def test(a):
pass
関数定義の
a
はあなたのコード内で使用a
他にいかなる関係を持っていないだけで、引数です! x
、pi
、z
、またはという名前は実際には関係ありません。(コードの可読性は別として)です。
あなたは
def test(x.y.z):
pass
を書くしようとするとあなたは変数にしたい任意の名前を呼ぶことはできません構文などのエラー変数の制限が存在すると引数の名前を取得します。どうして?単にそうでなければあなたは不確実性をたくさん得るでしょう。たとえば、これを解析する方法:
# a poorly formatted number literal or a variable definition??
1234hello = "test"
# attempt to access a member of a class (or module) or a variable definition??
x.y.z = 5
# is "yay a variable's name or a poorly formatted string literal??
x = "yay - 5
# the same question as above
f' = df/dx
関数の引数は変数なので、同様の制限が課されます。
ところで、上のコードを強調しようとしているSOコードハイライターのナットを見てください。
関数*定義*の間に 'x.y.z'が関数シグネチャに持つ意味は? 'def func1(a):'を実行すると、 'a'という1つの引数を持つ関数が定義されます。つまり、前のコードの' a'の値は考慮されません。 – vaultah
@vaultah私はOPを意味すると思う理由は、私は変数にインポートされたものを割り当てて、関数の引数として使用すると、それは正しく動作しますが、私は関数の引数として直接使用するとき構文エラーがあります – Arman