นอกเหนือจากคำตอบอื่น ๆ ที่กล่าวถึงลำดับความสำคัญnot
ต่ำกว่าin
จริงๆแล้วข้อความของคุณจะเทียบเท่ากับ:
not (True in [False, True])
แต่โปรดทราบว่าถ้าคุณไม่แยกเงื่อนไขของคุณออกจากอีกอันหนึ่งไพ ธ อนจะใช้ 2 บทบาท ( precedence
หรือchaining
) เพื่อแยกสิ่งนั้นออกและในกรณีนี้ไพ ธ อนใช้ความสำคัญกว่า นอกจากนี้โปรดทราบว่าหากคุณต้องการแยกเงื่อนไขคุณต้องใส่เงื่อนไขทั้งหมดไว้ในวงเล็บไม่ใช่แค่วัตถุหรือค่า:
(not True) in [False, True]
แต่ดังที่กล่าวไว้มีการดัดแปลงอีกอย่างหนึ่งโดย python ในโอเปอเรเตอร์ที่กำลังผูกมัด :
อ้างอิงจากเอกสารหลาม:
โปรดทราบว่าการเปรียบเทียบการทดสอบการเป็นสมาชิกและการทดสอบตัวตนทั้งหมดมีความสำคัญเท่ากันและมีคุณสมบัติการผูกมัดแบบซ้ายไปขวาตามที่อธิบายไว้ในส่วนการเปรียบเทียบ
ตัวอย่างเช่นผลลัพธ์ของข้อความสั่งต่อไปนี้คือFalse
:
>>> True == False in [False, True]
False
เพราะหลามจะโยงคำแถลงดังต่อไปนี้:
(True == False) and (False in [False, True])
ซึ่งแน่นอนFalse and True
ว่าเป็นFalse
ที่
คุณสามารถสันนิษฐานได้ว่าวัตถุกลางจะถูกแชร์ระหว่าง 2 การดำเนินการกับวัตถุอื่น ๆ (เท็จในกรณีนี้)
และโปรดทราบว่ามันยังเป็นจริงสำหรับการเปรียบเทียบทั้งหมดรวมถึงการทดสอบการเป็นสมาชิกและการดำเนินการทดสอบเอกลักษณ์ซึ่งมีตัวถูกดำเนินการดังต่อไปนี้:
in, not in, is, is not, <, <=, >, >=, !=, ==
ตัวอย่าง:
>>> 1 in [1,2] == True
False
อีกตัวอย่างที่มีชื่อเสียงคือช่วงตัวเลข:
7<x<20
ซึ่งเท่ากับ:
7<x and x<20