1

重複の可能性:
関数に渡された変数の元の変数名を取得する方法

関数に渡されたパラメーターの名前に基づいて、以下のような条件ステートメントを実行できるPythonに以下のようなものはありますか?

def func(a,b,c,d)

if fourth paramter = d:
#code

elif fourth parameter = e:
#code

else:

#code

   def main():
         func(a,b,c,d)
         func(a,b,c,e)
4

2 に答える 2

5

キーワード引数を使用する必要があります。

def func(a, b, c, **kwargs):
    if 'd' in kwargs:
        ....
    elif 'c' in kwargs:
        ....

ただし、これはあなたが望むものと完全に同等ではありません。dまたはe4番目のパラメーターであることを確認したい場合は、さらに面倒です。

次に、次のようなことを試すことができます。

def func(a, b, c, d=None, e=None):
    if d is not None and e is None:
        ....
    elif e is not None and d is None:
        ....

これはあなたが求めているものとは正確に一致しないことに注意してください。Stuartによってリンクされた質問のように、位置引数として関数に渡された変数の「元の」名前にはアクセスしません。あなたもそうしようとすべきではありません、それは無意味です。

于 2013-01-01T21:30:31.900 に答える
0

kwargsあなたが望むものを正確に与えることはありませんが、それは近くにある可能性があります:

def func(a, b, c, **kwargs):
   if 'd' in kwargs:
       print "do something"
   elif 'e' in kwargs:
       print "do something else"


 def main():
     func(a = 1 ,b = 2 ,c = 3, d = 'some_value')
     func(a = 1 ,b = 2 ,c = 3, e = 'some_value')
于 2013-01-01T21:34:40.287 に答える