1

def を使用する場合、**kwargs と *args を使用して、関数への動的入力を定義できます。

戻りタプルに似たものはありますか、私は次のように動作するものを探していました:

def foo(data):
    return 2,1

a,b=foo(5)
a=2
b=1
a=foo(5)
a=2

ただし、展開する値を 1 つだけ宣言すると、タプル全体がそこに送信されます。

a=foo(5)
a=(2,1)

「if」ステートメントを使用することもできましたが、もっと面倒でないものはないかと考えていました。その値を格納するためにいくつかのホールド変数を使用することもできますが、そのためのプレースホルダーを持つには、戻り値が少し大きくなる可能性があります。

ありがとう

4

2 に答える 2

0

ご質問の内容がよく理解できなかったので、いくつか推測してみます。


単一の値を使用したい場合は、次のことを検討してnamedtupleください。

from collections import namedtuple

AAndB = namedtuple('AAndB', 'a b')

def foo(data):
    return AAndB(2,1)

# Unpacking all items.
a,b=foo(5)

# Using a single value.
foo(5).a

または、Python 3.x を使用している場合は、一部の値のみを簡単にアンパックするための反復可能なアンパックが拡張されています。

def foo(data):
    return 3,2,1

a, *remainder = foo(5) # a==3, remainder==[2,1]
a, *remainder, c = foo(5) # a==3, remainder==[2], c==1
a, b, c, *remainder = foo(5) # a==3, b==2, c==1, remainder==[]

名前_は、値を破棄していることを示すために使用されることがあります。

a, *_ = foo(5)
于 2013-07-11T03:04:39.650 に答える