さるへい備忘録

さるへいのやったことを綴っているブログです。基本的にテクノロジーの話題です。

Pythonでコロンなどの引数のパラメータ名に使えない文字を無理やり引数のパラメータ名に指定する方法

Pythonで引数にコロンなどの利用できない文字を含めたパラメータ名で呼び出したいといった場合がありませんか?
どういう意味かわからないって顔をしている人が多そうです。

sample(ho:ge='hoge')

みたいな感じで呼び出したいってことですね。
もちろん上記はエラーが出ます。

そういう設計にしなければ良い?ええそれが一番だと思います。

ですが、時間の制約と求められている仕様によっては仕方がないときが多々あります。
RSSのパラメータ名などを表現する場合など仕方ない時もありますね。

辞書の展開で渡す

実際に引数に指定するとエラーになるならば、動的に生成して無理やり渡せばいいじゃないというのが僕の結論です。

def sample(**kwargs): # 可変長引数
    print(kwargs)
    

sample(**{'ho:ge': 'hoge'})  # 辞書の展開 
 -> {'ho:ge': 'hoge'} # こちらは出力

上記は、sampleメソッドに実際にコロンを含めた文字列を渡した場合です。
辞書の展開を使うことによって無理やり渡しました。
このようにすればメソッド呼び出し時にコロンなどをつけたパラメータ名を指定できます。

もちろん、メソッドの定義側は可変長引数で受け取る場合でしかこのような事象は発生しません。