python中是沒有三目的,一般但是有替代的方法
print('true' if true else 'false')
不過接受程度更高的應該是
print(true and 'true' or 'false')
print(true and 'true')
這就顛倒實現了類似ruby中的if用法
puts 'true' if true
這種相當於if的半句用法,在很多場景下可以極大的簡化**
def isperson(obj):
return obj.__class__ is person and true
return false
但是,作為邏輯操作符,它的返回值卻保留了原本的物件,沒有轉換成boolean
print(1 and 5 and 3)
其實多次驗證可以發現 and 和 or 的一些特點
1.順序執行:兩種都屬於雙目運算子,同時,結合規律也是從左到右依次執行的
2. 保留物件:經過這兩種符號進行的邏輯判斷,並沒有轉換成布林值,而是保留了物件原來的屬性
3. 條件查詢:and查詢真值為false的物件時中斷查詢,or查詢到真值為true的物件時中斷查詢,返回的都是查詢結束的前乙個物件
4.連線特性:能夠將兩部分的操作語句連線起來,不用新增多餘的修飾
所以我們一般用的類三目運算,可以這樣理解
result = a and b or c
1. a的真值為false:and 操作符查詢到真值為false的物件直接結束 and 操作,進入or操作,不論c真值如何,c都是連線語句查詢的最後物件,必定返回c
2. a的真值為true:and 連線符查詢真值為 false 的物件,因此繼續查詢b
3. b的真值為false:如果是false就會中斷查詢,進入or操作,or馬上查詢到真值,中斷操作,直接返回b
4. b的真值為true:and未找到真值,進入or操作,不論c的真值如何,最後乙個查詢到的都是c,必定返回物件c
連線符使用過程中,遵循以上四點規律,從左到右的結合,自身的查詢和中斷,然後返回的依舊是原本的物件
然後我想起了not
print(not 1)
這個操作會進行物件的強轉成布林型別的操作,並進行反轉,這個操作返回的物件必定是布林值
同樣的,if操作也會有這樣的隱含功效
if obj:
pass
在判斷進行的時候,都會進行物件轉換布林的操作
if 會直接利用了返回布林值,不改變原來的物件屬性,not 只進行變換轉換布林值,本身卻不會直接利用,兩者轉換方式相反
然後我繼續考量了 in ,和 可以連用的 for...in 操作
a = print(1) in (print(2),print(3),print(4))
發現在沒有進行列印操作的時候,依舊列印出了數字
同樣,for...in 也有這個現象
for value in (print(1),print(2),print(3)):
pass
同樣的列印了數字,於是我多加了乙個步驟
for value in (print(1),print(2),print(3)):
print(value)
這次多列印了三個none
實驗證明
1. 在for語句準備執行的時候,元組當中的語句已經執行了
2. 執行for語句時,元組中取出來的的是經過執行後的結果物件
結合之前總結的 and 和 or 的特性,我們可以發現,在真正進入操作的時候,方法傳入或是儲存的東西,都必定是乙個物件
也就是說
1. 在利用and 和 or 操作的時候,我們條件的真值是已經執行過條件判斷之後返回的物件
2. 在存入元組當中時,我們的語句也已經得到了執行,儲存的是語句執行之後的物件
總結起來,就是說進行操作的必定是物件,不是物件會將語句執行完畢然後獲取執行返回值,無返回值返回none
所以:1. 物件是python程式中的方法執行的開端,也是結束
2. 操作語句只能夠存在於過程當中,沒成為物件之前,不能夠進行傳參,返回和儲存
在語句沒有編譯成物件的情況下,唯一能夠執行操作的就是方法,或者成為方法物件了
而且操作語句編譯也顯得繁複,所以這才是方法物件繁榮發張以至於無處不在,功用無線的根本原因吧
注:for和in中間的那個,只能定義成變數,語句定義的話會出錯
「今目標」引發的深思
佛說 種瓜得瓜,種豆得豆,有因必有果 這次停課的背後,必是有停課的理由。我在想根本原因是什麼呢?不能深入到問題的本質,永遠是治標不治本。我看了一部分人的反思部落格,我總結了一下大體的理由如下 懶惰 缺乏責任感 放縱自己 認識程度不足 思想素質偏低 今目標是軟體 如果讓你選擇,你會選擇哪個理由,或者你...
因參加測試職業領域問卷引發的深思 規範的測試
今天做了乙份有關測試領域的網上問卷,引發了我很多的反思和深思,根據類別整理了乙個系列博文,希望與各位分享 原題1 貴公司是否使用了如下缺陷分析方法進行缺陷分析 多選 a 召開缺陷分析會議,討論彙總各缺陷產生的原因 b 使用odc缺陷分析方法 c 使用gompertz方法 d 使用rayleigh分析...
值得深思的
1 我以為小鳥飛不過滄海,是因為小鳥沒有飛過滄海的勇氣。十年以後我才發現,不是小鳥飛不過去,而是滄海的那一頭,早已沒有了等待.2 木頭對火說 抱我 火擁抱了木頭,木頭微笑著化為灰燼 火哭了 淚水熄滅了自己 當木頭愛上烈火注定會被燒傷.3 我真的愛你,閉上眼,以為我能忘記,但流下的眼淚,卻沒有騙到自己...