Python で関数をオーバーロードできないため、未定義の量の引数と変数定義を調べて、呼び出された関数に渡す必要がありました*args
。**kwargs
私はその概念を、区切り記号を使用して画面に引数を出力する単純な関数に適用しようとしました (その間にすべての周りに厄介な "" はありません)。その投稿の最後にコード スニペットがあります。
私の問題は、kwargs の値をそれぞれのパラメーター OUTSIDE CLASSES に実際に割り当てる正しい方法がわからないことです。setattr
3 つの引数 ( ) を取るuse が必要な場合setatt(self, key, value)
、もちろん、キーと値のみを渡そうとすると、常にエラーが発生します。クラス外のグローバル関数のパラメータに値を割り当てる適切な方法はありますか?
あなたが私のために空をきれいにしてくれることを願っています。
ここでは、代わりの方法を見つけて作業を開始したい、動作しないコード例を示しますsetattr(self, key, value)
。
import sys
def printAll(*args, **kwargs):
sep = ""
for key, value in kwargs.items():
setattr(key, value)
for arg in args:
sys.stdout.write(str(arg))
sys.stdout.write(sep)
nr = 9876543210
printAll("How many", "arguments", " I want", nr, sep='-')
編集: わかりました、@Martijn Pieters と @Fabian の回答を読んだ後、更新された実際の関数の例を次に示します。
def printAll(*args, **kwargs):
# use sep = 'value' to define a seperator or use the default one
sep = kwargs.get('sep')
if sep is None:
sep = ""
for arg in args:
sys.stdout.write(str(arg))
sys.stdout.write(sep)