亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python如何確定==的操作數優先級?

Python如何確定==的操作數優先級?

炎炎設計 2022-08-11 16:58:30
將 s 與運算符進行比較將返回 .list==bool>>> [0,0,0] == [0,1,0]False將數組與運算符進行比較將返回由元素明智的比較生成的另一個數組。numpy==>>> np.array([0,0,0]) == np.array([0,1,0])array([ True, False,  True])如果我混合操作數類型,則該方法始終優先。numpy>>> np.array([0,0,0]) == [0,1,0]array([ True, False,  True])>>> [0,0,0] == np.array([0,1,0])array([ True, False,  True])如何確定哪個操作數具有優先級?我的問題更多地與 的機制有關,而不是與 或 .PythonPythonnumpylist
查看完整描述

2 回答

?
米脂

TA貢獻1836條經驗 獲得超3個贊

在Python中,左操作數總是在右操作數之前計算。這也適用于函數參數。

Python 在計算涉及 or 運算符的表達式時使用短路。使用這些運算符時,除非需要解析結果,否則 Python 不會計算第二個操作數。這允許諸如 和 之類的語句可靠地工作。andorif (s != None)(len(s) < 10): ...

year % 4 == 0 and year % 100 != 0 or year % 400 == 0


查看完整回答
反對 回復 2022-08-11
?
繁星淼淼

TA貢獻1775條經驗 獲得超11個贊

豐富的比較運算符總是首先詢問左操作數(除非右操作數是左操作數類型的子類的實例;此處不是這種情況)。如果檢查的第一個操作數返回(在與數組進行比較時總是如此,因為它不可能將它們的知識嵌入到核心解釋器中),則要求第二個操作數執行反射比較(不會改變)。NotImplementedlistnumpy__eq__


由于將知識烘焙到它的 中,并且沒有烘焙數組的知識,要么先去并立即使用自己的邏輯(當它是左操作數時),要么先去(當它是左操作數時),通過返回放棄,然后 's 進行最終調用。numpylist__eq__listnumpynumpylistNotImplementednumpy__eq__


調用的粗略內部(省略子類特殊情況):left == right


attempt = type(left).__eq__(left, right)

if attempt is NotImplemented:

   attempt = type(right).__eq__(right, left)

   if attempt is NotImplemented:

       attempt = False  # Specific to __eq__, if both can't compare, returns False

return attempt

有關完整的詳細信息,請從NotImplemented文檔開始,然后沿著黃磚路(閱讀:鏈接)進行操作。


查看完整回答
反對 回復 2022-08-11
  • 2 回答
  • 0 關注
  • 140 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號