3

Python コードを調べて関数が呼び出されているのを見ていると、次のようなことに気付きます

functionCall(argument='something') 

また

someclass.functionCall(argument='something')

私はそれをいじって、関数またはクラス関数自体のスコープ内のものと同じ名前でその変数に名前を付ける必要があることに気付きました。それは(便利な命名のための)単なる慣例ですか、それとも私が見逃しているものがありますか?

4

4 に答える 4

10

これらは単なる標準のキーワード引数です。

これらは主にデフォルト値を想定する関数を呼び出すときに役立ちますが、ユーザーは他のデフォルトに影響を与えずにカスタム値を渡すことに関心があります。例えば:

def foo(a='a', b='b', c='c'):
    print a + b + c

それで:

>>> foo()
'abc'
>>> foo(c='x')  # don't know or care about a and b's value
'abx'
于 2012-06-21T13:02:08.843 に答える
2

名前付き引数を使用して引数を任意の順序で指定できるため、名前付き引数があると便利です。

必要な引数(デフォルト値を持たないオブジェクトなど)でも名前を付けることができ、名前付き引数は任意の順序で表示できます。

こちらもご覧ください

Pythonの引数受け渡しメカニズムは非常に柔軟です。

短所:関数への引数が多すぎます。解決策:複数の関数に分割し、辞書またはオブジェクトでいくつかの引数を一緒に渡します。

短所:変数名が正しくありません。解決策:変数にわかりやすい名前を付けます。

または正しい順序を覚えておいてください..:)

class xyz:
    def __init__ (self, a='1', b='2'):
        print a,b

xyz(b=3,a=4)
xyz(a=5,b=6)

>>4 3
>>5 6
于 2012-06-21T13:02:36.540 に答える
2

これはキーワード引数と呼ばれます。キーワード引数には、いくつかの明確な利点があります。

  1. これらは、呼び出し元が任意の順序で指定できます。
  2. これらにはデフォルト値があります。つまり、デフォルト値が適切である場合、呼び出し元は各引数に値を指定する必要はありません。
  3. コードを読みやすくすることができます。たとえば、foo(width=100, height=200)は よりも理解しやすいですfoo(100, 200)。関数が width,height または height,width のどちらを取るかを覚えておく必要がないため、使い方も簡単です。
于 2012-06-21T13:10:03.500 に答える
1

これらはキーワード パラメータです。任意の順序でパラメーターを渡すことができます (オプションのパラメーターをスキップするのに役立ちます)

ただし、そのように関数を呼び出すと、少しオーバーヘッドが発生することに注意してください。

def test(a,b,c):
    return a+b+c

def t1():
    return test(1,2,3)

def t2():
    return test(a=1, b=2, c=3)

timeit(t1)
    0.23918700218200684
timeit(t2)
    0.2716050148010254
于 2012-06-21T13:07:57.167 に答える