飽きたif.elseのあなたは、選択構造を変えることを考えてもらえますか?

3069 ワード

コードに飽きた君
コードの初期、私たちは文式をマスターして、文法をマスターして喜んでいました.しかし、勤務時間が長くなると、日常の符号化にはうんざりする選択論理、循環が多く、最も得意なCTRL+C&&CTRL+Vが加わっていることが分かった.自分のコードスタイルを変えたいですか?
万年変わらないif.else
日常のコードといえば、if elseが一番多いかもしれませんが、Pythonにはcase whenがありません.文芸青年の私たちは、if elseをどのように差別化すればいいのでしょうか.次の例を見てみましょうもしあなたがホテルのフロントであれば、ホテルにはスタンダードルーム、ビジネスルーム、カップルテーマルームが設置されています.今、お客様の選択によって、対応する金額を伝える必要があります.操作方法すぐにそう書く人は多くありません.
def show_price_list(user_choice):
    if user_choice.lower() == 'single':
        print(150)
    elif user_choice.lower() == 'business':
        print(300)
    elif user_choice.lower() == 'couple':
        print(500)
    else:
        print("            ")

show_price_list('couple')

コードは問題ありませんが、重複感が強すぎると思いませんか?コードを変えてもらえますか?
PRICES = {'single': 150, 'business': 300, 'couple': 500}

def show_price_list(user_choice):
    print(PRICES.get(user_choice.lower(), "            "))

show_price_list('couple')

コード量にかかわらず、コードの清潔度にかかわらず、顕著な向上があるかどうか.しかし、多くの人はまた、あなたは単行印刷で、もし私が針で選択した結果を呼び出して異なる方法を呼び出す必要があるならば?
辞書によるメソッドの実行
答えは、あなたは依然としてこのようにすることができます.例を挙げます.まず、playを定義します.list.py
def work():
    print('Oh,no...       。')

def play():
    print("Dota   ,     ...")

def drink():
    print("      ,    !")

では、プレイを作成します.choice.py、playをインポートlistの方式で、方法の選択を行います:
from play_list import work, play, drink

choices = {'work': work, 'play': play, 'drink': drink}

def to_do(user_choice):
    try:
        choices.get(user_choice)()
    except TypeError:
        print("     ,       ...")

to_do('dance')
to_do('drink')

output:
     ,       ...
      ,    !

パッケージのインポート「BUG」
文章の終わりにpyhtonのインポートバグを共有します!多くの人はPythonにallメソッドがあることを知っています.彼らの答えは一般的に、allはインポート制限として使用され、allメソッド内のモジュールのインポートを禁止します.そうですか.エラー!正しい説明を見てみましょう.
all affects the from import * behavior only. Members that are not mentioned in all are still accessible from outside the module and can be imported with from import .
allメソッドはfrom module import*の動作を制限するだけで、私が明確なfrom module import memberを持っているときは、止めません!先ほどの例では
__all__ = ['work','play']

def work():
    print('Oh,no...       。')

def play():
    print("Dota   ,     ...")

def drink():
    print("      ,    !")

次のように呼び出します.
from play_list import *

choices = {'work': work, 'play': play, 'drink': drink}

エラー:NameError:name'drink'is not defined
しかし、具体的な方法を明確に書くと、すべてが正常です.
from play_list import work, play, drink

choices = {'work': work, 'play': play, 'drink': drink}

さあ、今日の内容はここまでで、明日allを持ってあなたの友达を試験して、彼がこの概念に対して徹底的に理解しているかどうかを見てみましょう.
The End
私の公衆番号 Pythonに注目することを期待しています.もしあなたがいいと思ったら、手を動かしてあなたの周りの友达に転送してほしいです.私のgithubアドレス:https://github.com/BreezePython