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

リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
475
(2): (ワッチョイ d010-mivq) 07/18(金)23:43 ID:bJpxei9t0(3/3)調 AAS
関数hooの内容はブラックボックスにしておいた方が本質的な議論になるのは確かだと思うけど、可変長キーワード引数を使うのは(一般論としては)やっぱり抵抗感があるんだよね。

関数hooのその可変長キーワード仮引数は、hogeをキーとして持ち、さらにオプションでfugaもキーとして持つことができる辞書ということになるけど、そのことはコメントかリファレンスにでも書いておかないと関数のユーザー側からは分からないよね。普通、関数の仮引数に可変長キーワード引数がある場合、ユーザー側は任意のキーワード引数が渡せるものだと想定するものものだと思うんだが。任意のキーワード引数が渡せるわけではないこと(渡せるキーワード引数が一定範囲に限定されていること)を示唆するためにkwargsに代えて別の名前を使うことも考えられるけど、hoge_fugaみたいな仮引数名にするくらいなら素直に>>459で書いた方がずっと分かりやすいのではないかと思う。
hogeとfugaが何らかの設定項目のようなもので、可変長キーワード引数としてsettingsみたいな名前を使うのがぴったりくるようなシチュエーションなら良いと思うんだけどね。
477: (ワッチョイ 7e01-1hpD) 07/19(土)00:27 ID:BXrDX6cI0(1)調 AAS
>>475
辞書アンパックをちょっと勘違いしてる
`hoo(**args)`は`hoo(hoge=3)`か`hoo(hoge=3, fuga=21)`に展開されると考えればいい
関数hooの定義で可変長キーワード引数を取るようにしておく必要はない
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)
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.051s