2017-12-13 5 views
0

私は関数を呼び出していたときに**kwargsオプションパラメータは

def ExecuteyourQuery(self, queryStatement, *args, **kwargs): 
    if self.cursorOBJ is not None: 
     resultOBJ = self.cursorOBJ.execute(queryStatement, *args,**kwargs) 
    self.resultsVal = resultOBJ.fetchall() 

以下のステートメントは正常に動作pythonでオプションのパラメータを渡すために処理することができないのです

しかし、私は

ExecuteyourQuery('select * from item_table where x = :x and y:y', x, y, z) 
のようなクエリで言及されていない余分な引数を与えたときに

それはあなたの関数の最後のパラメータとして引数を使用する場合は、既存のとき、あなたは、仮引数の後引数の任意の番号を渡すことができ、出力

+0

私はあなたが作るクエリについて少しわからないのですか?条件は "y"ですか? –

+0

"以下の声明はうまくいく..."とはどういう意味ですか?それは何も通過しないときに何を返しますか?上で述べたように、意図したとおりの「と」条件(とy:y)はありますか? –

答えて

1

として0を返します。 Argsはtupleです。

def my_method(farg, *args): 
    print('FARG: ', farg) 
    print('ARGS: ', args) 

my_method('Formal Argument', 1, 2, 3) 

あなたの関数の最後のパラメータとしてkwargsからを使用して、あなたはという名前の任意の数の引数を渡すことができ仮引数、既存のときの後。 Kwargsはdictionaryです。

def my_method(farg, **kwargs): 
    print('FARG: ', farg) 
    print('KWARGS: ', kwargs) 

my_method('Formal Argument', kwarg_1 = 1, kwarg_2 = 2, kwarg_3 = 3) 

あなたの関数の最後parameteresとして引数とkwargsからの両方を使用する場合は、あなたが任意の数の引数を渡すことができますが(つまり、引数にマップされます)と名前付き引数(つまりkwargsからにマップされます)仮引数の後、既存の場合。

def my_method(farg, *args, **kwargs): 
    print('FARG: ', farg) 
    print('ARGS: ', args) 
    print('KWARGS: ', kwargs) 

my_method('Formal Argument', 1, 2, 3, kwarg_1 = 1, kwarg_2 = 2, kwarg_3 = 3) 

うまくいけば、それはあなたがあなたの元の問題を解決するのに役立つだろう、このアウトを試してみて、あなたのコンソールに結果を参照してください:)

+0

は、[このサイト] [https://www.saltycrane.com/blog/2008/01/how-to-use-args-and-kwargs-in-python/]にも言及を読むために素敵にしてください発見しました見てみましょう! – danieldeveloper001

関連する問題