私はPythonでスイッチ/ケースのメカニズムを実装しようとしています。いくつかのウェブサイトや質問をここ(例:this one)で読んだところ、以下のコードを作成しました。しかし、それは間違った振る舞いをしています。私が理解しているものを持っていれば、たとえproblematic to getであっても、確実にデフォルトの期待結果ではありません。私はそれを実行するとPythonでのフォールスルースイッチ/ケースの辞書交換
def something():
print 'something'
def somethingElse():
print 'something else'
def switch():
cases = {
0: something(),
1: something(),
2: something(),
3: something(),
4: something(),
5: something()
}
cases.get(2, somethingElse())
switch()
は(もちろん、すべてのケースで同じスイッチは、単に例示のためである)
私はsomething()
は一度だけ(2
私は手動入力など)を実行することを期待しています。ただし、コンソールの出力は次のようになります。
something
something
something
something
something
something
something else
これは、デフォルト値を6回実行したことを意味します。私はこのコードがこのような転倒を許していることを理解できません。それとも、問題が異なるのでしょうか?
ここはPython 2.7.12です。
はありがとうと同じように、間違いは '()'関数を実行することであるべき場所に明らかにしました。あなたの側のコメントもありがとう、私はそれらを修正します。 – adamczi