<p id="m2nkj"><option id="m2nkj"><big id="m2nkj"></big></option></p>
    <strong id="m2nkj"></strong>
    <ruby id="m2nkj"></ruby>

    <var id="m2nkj"></var>
  • Python 炫技操作:條件語句的七種寫法

    共 2139字,需瀏覽 5分鐘

     ·

    2020-12-05 21:18

    點擊上方“Python編程時光”,選擇“加為星標

    第一時間關(guān)注Python技術(shù)干貨!

    有的人說 Python 入門容易,但是精通難的語言,這點我非常贊同。

    Python 語言里有許多(而且是越來越多)的高級特性,是 Python 發(fā)燒友們非常喜歡的。在這些人的眼里,能夠?qū)懗瞿切┮话汩_發(fā)者看不懂的高級特性,就是高手,就是大神。

    但你要知道,在團隊合作里,炫技是大忌。

    為什么這么說呢?我說下自己的看法:

    1. 越簡潔的代碼,越清晰的邏輯,就越不容易出錯;

    2. 在團隊合作中,你的代碼不只有你在維護,降低別人的閱讀/理解代碼邏輯的成本是一種良好的品德

    3. 簡單的代碼,只會用到最基本的語法糖,復雜的高級特性,會有更多的依賴(如語言的版本)

    在這個系列里,我將總結(jié)列舉一下,我所見過的那些炫技操作,今天先來個熱身,寫一寫很簡單的條件判斷語句里有哪些讓人想罵街的炫技操作,在這里,如果你是 Python 發(fā)燒友,你可以學到一些寫出超酷的代碼書寫技巧,但學習歸學習,希望你區(qū)分場景使用。

    0. 原代碼

    這是一段非常簡單的通過年齡判斷一個人是否成年的代碼,由于代碼行數(shù)過多,有些人就不太愿意這樣寫,因為這體現(xiàn)不出自己多年的 Python 功力。

    if?age?>?18:
    ????return?"已成年"
    else:
    ????return?"未成年"

    下面我列舉了五種這段代碼的變異寫法,一個比一個還 6 ,單獨拿出來比較好理解,放在工程代碼里,沒用過這些學法的人,一定會看得一臉懵逼,理解了之后,又不經(jīng)意大呼:臥槽,還可以這樣寫?,而后就要開始罵街了:這是給人看的代碼? ?(除了第一種之外)

    1. 第一種

    語法:

    1>?if??else?2>?

    例子

    >>>?age1?=?20
    >>>?age2?=?17
    >>>?
    >>>?
    >>>?msg1?=?"已成年"?if?age1?>?18?else?"未成年"
    >>>?print?msg1
    已成年
    >>>?
    >>>?msg2?=?"已成年"?if?age2?>?18?else?"未成年"
    >>>?print?msg2
    未成年
    >>>?

    2. 第二種

    語法

    ?and??or?

    例子

    >>>?msg1?=?age1?>?18?and?"已成年"?or?"未成年"
    >>>?msg2?=?"已成年"?if?age2?>?18?else?"未成年"
    >>>?
    >>>?print(msg1)
    已成年
    >>>?
    >>>?print(msg2)
    未成年

    3. 第三種

    語法

    ("false",?"true")[condition]

    例子

    >>>?msg1?=?("未成年",?"未成年")[age1?>?18]
    >>>?print(msg1)
    未成年
    >>>?
    >>>?
    >>>?msg2?=?("未成年",?"未成年")[age2?>?18]
    >>>?print(msg2)
    未成年

    4. 第四種

    語法

    (lambda:?,?lambda:)[]()

    例子

    >>>?msg1?=?(lambda:"未成年",?lambda:"已成年")[age1?>?18]()
    >>>?print(msg1)
    已成年
    >>>?
    >>>?msg2?=?(lambda:"未成年",?lambda:"已成年")[age2?>?18]()
    >>>?print(msg2)
    未成年

    5. 第五種

    語法:

    {True:?,?False:?}[]

    例子:

    >>>?msg1?=?{True:?"已成年",?False:?"未成年"}[age1?>?18]
    >>>?print(msg1)
    已成年
    >>>?
    >>>?msg2?=?{True:?"已成年",?False:?"未成年"}[age2?>?18]
    >>>?print(msg2)
    未成年

    6. 第六種

    語法

    ((<condition>)?and?(<on_true>,)?or?(<on_false>,))[0]

    例子

    >>>?msg1?=?((age1?>?18)?and?("已成年",)?or?("未成年",))[0]
    >>>?print(msg1)
    已成年
    >>>?
    >>>?msg2?=?((age2?>?18)?and?("已成年",)?or?("未成年",))[0]
    >>>?print(msg2)
    未成年

    以上代碼,都比較簡單,注意看都能看懂,我就不做解釋了。

    看到這里,有沒有漲姿勢了,學了這么久的 Python ,這么多騷操作,還真是活久見。。這六種寫法里,我最推薦使用的是第一種,自己也經(jīng)常在用,簡潔直白,代碼行還少。而其他的寫法雖然能寫,但是不會用,也不希望在我余生里碰到會在公共代碼里用這些寫法的同事。


    推薦閱讀



    如何用 GitHub Actions 寫出高質(zhì)量的 Python代碼?

    盤點 Python 高手都寫不出來的幾個錯誤

    8個超好用的Python內(nèi)置函數(shù),提升效率必備!

    想寫好面向?qū)ο蟮拇a,這幾篇一定要看(上)

    想寫好面向?qū)ο蟮拇a,這幾篇一定要看(中)

    想寫好面向?qū)ο蟮拇a,這幾篇一定要看(下)




    長按下圖? ?? ?關(guān)注博主

    (按左邊關(guān)注?Python, 按右邊關(guān)注?Goalng



    瀏覽 40
    點贊
    評論
    收藏
    分享

    手機掃一掃分享

    分享
    舉報
    評論
    圖片
    表情
    推薦
    點贊
    評論
    收藏
    分享

    手機掃一掃分享

    分享
    舉報
    <p id="m2nkj"><option id="m2nkj"><big id="m2nkj"></big></option></p>
    <strong id="m2nkj"></strong>
    <ruby id="m2nkj"></ruby>

    <var id="m2nkj"></var>
  • 播放日本A片 | www.一区二区三区在线 | 欧洲 国产精品久久久久久爽爽爽麻豆色哟哟 | 五一黄片视频 | 人人妻人人澡人人DVD | 一级电影动态图片 | 亲子伦视频一区二区 | 欧美乱伦精品 | 天天撸一撸免费视频 | 成人免费做爱视频 | 爱情岛论坛成人自拍 |