標籤:

黃哥Python 細說 條件(三元)操作符

******* 特別提示,黃哥的QQ 只為學員服務,需要一對一答疑請到值乎提問********

在Python 有一種語法,初學者看到一臉懵逼,其實它很簡單,就是一個語法,不要太當回事。知道它,會用即可。

1、先練練兵,請自己在python shell 中敲一下。

In [1]: x , y = 6, 8nnIn [2]: z = x if x > y else ynnIn [3]: znOut[3]: 8n

2、語法形式,既然是操作符,那麼由操作符可以構成表達式。表達式有一個值,可以參與運算或者賦值給變數。

表達式1 if 條件 else 表達式2 構成一個表達式。

整個表達式的值,是這樣計算的,如果if 後面的條件為真,整個三元操作符構成的表達式值為表達式1的值,如果為假,整個表達式的值為表達式2的值。

In [1]: x , y = 6, 8nnIn [2]: z = x if x > y else ynnIn [3]: znOut[3]: 8nnIn [4]: z = x if x < y else ynnIn [5]: znOut[5]: 6n

3、三元操作符的替代寫法。

In [6]: z = (lambda:y, lambda:x)[x > y]()nnIn [7]: znOut[7]: 8nnIn [8]: z = (lambda:y, lambda:x)[x < y]()nnIn [9]: znOut[9]: 6nnIn [10]: z = (y, x)[x > y]nnIn [11]: znOut[11]: 8nnIn [12]: z = (y, x)[x < y]nnIn [13]: znOut[13]: 6nnIn [14]: z = {True: x, False: y}[x > y]nnIn [15]: znOut[15]: 8nnIn [16]: z = (x > y) and x or ynnIn [17]: znOut[17]: 8n

4、 這種語法用得挺多,看看requests 庫中的一段代碼。

# Default empty dicts for dict params.n data = [] if data is None else datan files = [] if files is None else filesn headers = {} if headers is None else headersn params = {} if params is None else paramsn hooks = {} if hooks is None else hooksnn self.hooks = default_hooks()n for (k, v) in list(hooks.items()):n self.register_hook(event=k, hook=v)nn self.method = methodn self.url = urln self.headers = headersn self.files = filesn self.data = datan self.json = jsonn self.params = paramsn self.auth = authn self.cookies = cookiesn

部分免費python免費視頻

pythonpeixun/article

216小時學會python

pythonpeixun/article

推薦閱讀:

Stack Overflow 報告:Python 正在令人難以置信地增長!
Python的大數運算到底是根據什麼基礎原理或者演算法實現的?
巧用抓包 ― 爬遍SCU玻璃杯事件所有神回復

TAG:Python |