2

Pythonでオプションの引数を使用する方法を探しています。私はこの質問を読みましたが、それは私にはわかりません。時系列を理解するために1つ以上の引数を取ることができる関数fがあるとしましょう。引数の数を指定し、各引数にデフォルト値を設定する必要がありますか?私が目指しているのは、次のように関数を記述できるようにすることです。

単純な関数:

def f(x,y):
    return x + y
#f(1,2) returns 3

私が欲しいのはまた、私に6を返すf(1,2,3)と私に7を返すf(7)です

事前定義された必須/オプションのパラメータを設定せずに書き込むことは可能ですか?デフォルト値を0に設定せずに書き込むことは可能ですか?この関数の書き方は?

数字を使った簡単な例ですが、私が書く必要のある関数は、連続するオブジェクトのセットを比較することです。比較が行われた後、データセットはニューラルネットワークにフィードします。

読んでくれてありがとう。

編集:関数にフィードしているオブジェクトは、次のようなタプルです(float、float、float、bool、string)

4

3 に答える 3

4
def f(*args):
    """
        >>> f(1, 2)
        3

        >>> f(7)
        7

        >>> f(1, 2, 3)
        6

        >>> f(1, 2, 3, 4, 5, 6)
        21
    """
    return sum(args)

合計よりも複雑なことを行う必要がある場合は、次のargsように繰り返すことができます。

def f(*args):
    r = 0
    for arg in args:
        r += arg
    return r

*argsおよび**kwargsの詳細については、この質問を参照してください

Pythonチュートリアルの次のセクションも参照してください:Arbitray引数リスト

于 2012-10-25T15:38:51.203 に答える
4

*args関数を挿入してから、任意の(キーワード以外の)引数を取ることができます。* argsはタプルであるため、Pythonのタプル/リスト/反復可能オブジェクトと同じように反復処理できます。IE:

def f(*args):
    theSum = 0
    for arg in args:
        theSum += arg
    return theSum

print f(1,2,3,4)
于 2012-10-25T15:40:14.913 に答える
1

次の構文を使用できます。

def f(*args):
    return sum(args)

*beforeは、argsすべての引数を「飲み込む」ように指示しargs、タプルを作成します。*argsが最後である限り、この形式を標準の引数と混合することもできます。例えば:

def g(a,b,*args):
    return a * b * sum(args)

最初の例では、組み込みsum関数を使用して引数を合計します。 sumあなたのためにそれを合計するようにシーケンスを取ります:

>>> sum([1,3,5])
9
>>> sum(range(100))
4950

args名前は必須ではありませんが、慣例により使用されているため、この名前を使用することをお勧めします。**kwargs未定義のキーワード引数もあります。

于 2012-10-25T15:39:45.490 に答える