2つの関数ってどう違うんですか
python
1def f(x=None): 2 if x: 3 return x 4 else: 5 pass 6 7def g(x=None): 8 if x is not None: 9 return x 10 else: 11 pass 12 13f(5) # 5 14g(5) # 5 15f() # None 16g() # None
dis.dis
で調べたら
dis.dis(f) """ 2 0 LOAD_FAST 0 (x) 2 POP_JUMP_IF_FALSE 8 3 4 LOAD_FAST 0 (x) 6 RETURN_VALUE 5 >> 8 LOAD_CONST 0 (None) 10 RETURN_VALUE """ dis.dis(g) """ 2 LOAD_CONST 0 (None) 4 COMPARE_OP 9 (is not) 6 POP_JUMP_IF_FALSE 12 3 8 LOAD_FAST 0 (x) 10 RETURN_VALUE 5 >> 12 LOAD_CONST 0 (None) 14 RETURN_VALUE """
って感じで違うじゃんみたいな
もし得られる結果が一般的に同じならLOAD
等の処理が多い関数g()
の方が明らかに冗長ですよね?
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/09/01 04:20
2018/09/01 04:23
退会済みユーザー
2018/09/01 04:25
2018/09/01 04:25
2018/09/01 04:31