スコープ内で初期化されたすべての変数は、Pythonの有効範囲規則のために利用できます。条件文は新しいスコープを導入しないので、他の言語の構文(その条件の前に変数を初期化するなど)は必ずしも必要ではありません。条件変数初期化の方法は何ですか?
def foo(optionalvar = None):
# some processing, resulting in...
message = get_message()
if optionalvar is not None:
# some other processing, resulting in...
message = get_other_message()
# ... rest of function that uses message
をか、私たちが代わりに持つことができる:例えば、我々が持っているかもしれません。もちろん、
def foo(optionalvar = None):
if optionalvar is None:
# processing, resulting in...
message = get_message()
else:
# other processing, resulting in...
message = get_other_message()
# ... rest of function that uses message
、get_message
とget_other_message
機能は、コードの行数も基本的には無関係であるかもしれない(あなたが想定することができます各パスの後のプログラムの状態が同じであること)。ここでの目標は、関数のこのセクションを超えて、message
を使用できる状態にすることです。
私は後者の構文は以下のような、他の質問に数回使用見てきました:
構築物は、より許容可能である?
'get_message'を条件付きで実行するか無条件で実行するかは、完全に依存しませんか? – delnan
ここでの考え方は、呼び出す関数ではなく、むしろ 'message'の構築です。関数自体は無関係です。 –
それが機能であろうとなかろうと、意味的な違いの1つは無条件にコードの半分を実行するということです。違いがある場合は、ディベートスタイルにはほとんど意味がありません。 – delnan