Python的邏輯運算子and小析

來源:互聯網
上載者:User

標籤:

近期突然對驗證碼的識別感興趣了,然後就研究了一些Image Recognition和處理的資料,其中有一種影像處理是關於字型的細化和骨架提取的,但是這種演算法沒有現成的java代碼實現,那些號稱的java版代碼多半都是效果很差或是根本不行的..搜尋的途中看到一個用python實現的細化提骨架演算法,效果很不錯,想著就把這個python實現改寫成java的好了..但是呢,其實我不懂python,所以先去w3c看了一遍python文法,然後開始改寫...問題出現了...當遇到來源程式中的邏輯運算子 and 的時候,我猶豫了..來看看w3c中關於and的解釋:

布爾"與" - 如果x為False,x and y返回False,否則它返回y的計算值。

看到這個精簡的解釋後,我震驚了..它到底在說什麼..這和邏輯與有甚麼關係..python中邏輯與的定義怎麼會這麼奇葩..算了,直接用if else把這段話翻譯一遍糊弄過去就算了..但是之後來源程式中出現了 xx and xx and xx的語句,這要用if else來翻譯那簡直了...我突然想正常人的大腦如果按照這個邏輯怎麼可能預期到這段運算式的意義...python的邏輯與應該不奇葩,奇葩的應該是這段解釋才對...重新理了一下思緒..

java中邏輯與(&&)的定義是很清楚的,解釋如下:

與:
a & b :當a,b同時為true時,a&b為true,否則為false
邏輯與:
a && b,當a為false時,那麼a && b就直接返回false,不會對b再進行判斷,因為當a為false時候,無論b為何值,運算式a && b根據與的定義都將是false..但是如果a為true,則需要進一步計算b的值,根據b的值不同,運算式a && b的最終值也不同.

對比了一下w3c的解釋後發現,原來他們說的是一個事情..但是w3c的說法有一定的誤導性,它過分強調了運算式的值為x或是y,而淡化了運算式的含義..讓人有一種錯覺,邏輯與的值不是與出來的,而是某種情況下a或是b的值..

Python的邏輯運算子and小析

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.