Pythonのお勉強 Part75 (896レス)
前次1-
抽出解除 レス栞

リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
479
(2): (ワッチョイ 4a79-YjA1) 07/19(土)04:01 ID:Hbwb5ZS70(1/2)調 AAS
>>475
コメントとかリファレンスとか面倒なので、可変長を止めた
デフォルト値も0からNoneにした
渡された引数の確認用printも止めた
これでいいかな?
(個人的には、hooじゃなくfooを使いたい)

def hoo(*, hoge, fuga=None):
 pass

args = {'hoge': 3}
if True:
 args['fuga'] = 21

hoo(**args)
481
(1): (ワッチョイ 9360-mivq) 07/19(土)09:53 ID:RatjLwY90(1)調 AAS
>>479
スマンが、値Noneがデフォルト値として適切なケースならそれでもいいけど、一般的にそうとはいえないという点は、数値0と同じだと思う。
とはいえ、>>459に対する一般的な回答とはいえなくても、個別のケースを見れば何らかの適切なデフォルト値(多くの場合は、数値0, 1, None, 空文字烈のどれかでカバーできるんじゃないかと思う)を見つけられることが多いと思うから、実践的にはそれで十分と言えるかもしれない。

ただ、そもそも論として、複数の実引数を1つの辞書にまとめ、関数に渡すときに**でアンパックするという方法論は、本質的には場合分けを行う場所を移しているだけだよね。475末尾のsettingsのように、1まとまりのものと観念できるような場合にはともかく、一般論としては>>459と比べて分かりやすくなっているとはいえないと思うよ(辞書の名前という余分な情報が増える分だけ、読む側の負荷が増えるだけなのでは)。
485: (ワッチョイ d401-1hpD) 07/19(土)11:21 ID:GfjIQpqe0(1)調 AAS
>>481
分岐が必要なキーワード引数が1つだけなら>>459のように単純なif-elseのほうが分かりやすいと思うが数が増えてくると辞書を使うやり方のほうが分かりやすくなることが多い

ちゃんとしたプログラムならBuilderパターン使って辞書を隠蔽したAPIを用意するけど内部構造は>>479と同じ
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.055s