งูเห่าโปรแกรมภาษาไวยากรณ์ 's เป็นแรงบันดาลใจอย่างมากจากงูหลามและมันจะไปกับลำไส้ใหญ่ดังนั้นดูเหมือนว่ามันไม่ได้เป็นสิ่งที่จำเป็นอย่างเคร่งครัด แต่ก็ไม่เพียงพอที่จะเพียงแค่เอาลำไส้ใหญ่มีการเปลี่ยนแปลงอื่น ๆ เพื่อไวยากรณ์ที่จำเป็น ดูตัวอย่างโค้ดจากโครงการของเล่นของฉัน:
kons = lambda hd, tl: lambda x: hd if x else tl
virst = lambda l: l(True )
rrest = lambda l: l(False)
หากไม่มีเครื่องหมายโคลอนเพื่อแยกเนื้อหาออกจากรายการพารามิเตอร์ฉันจะต้องใช้การเยื้อง:
kons = lambda hd, tl
lambda x
hd if x else tl
virst = lambda l
l(True )
rrest = lambda l
l(False)
ฉันเชื่อว่างูเห่ารุ่นก่อนหน้านี้ทำให้โคลอนเป็นตัวเลือกคุณสามารถใช้การเยื้องหรือโคลอนหรือทั้งสองอย่าง คล้ายกับวิธีการทำงานใน Ruby ซึ่งมีคำหลักเพื่อแยกส่วนต่าง ๆ ของนิพจน์ควบคุม แต่คุณสามารถใช้ตัวแยกนิพจน์ (อัฒภาคหรือบรรทัดใหม่):
# idiomatic
while true do puts "I am awesome" end
# ↑↑
# non-idiomatic, but legal
while true; puts "I am awesome" end
# ↑
# non-idiomatic, but legal
while true
puts "I am awesome" end
# idiomatic
while true
puts "I am awesome"
end
ใน Cobra เวอร์ชั่นปัจจุบันคุณสามารถใช้เครื่องหมายจุลภาค:
if x
y
สามารถเขียนเป็น
if x, y
คุณจำเป็นต้องมีบางวิธีการแยกชิ้นส่วนที่แตกต่างกันของการแสดงออกหรือการควบคุมคำจำกัดความ ใน Python นั่นคือลำไส้ใหญ่ หากคุณลบเครื่องหมายโคลอนคุณต้องแทนที่ด้วยเครื่องหมายอื่นเช่นการเยื้องที่ถูกบังคับ เพียงเอาลำไส้ใหญ่จะไม่ทำงาน
วิธีเดียวที่จะแน่ใจได้อย่างแน่นอนคือการทำให้ไวยากรณ์เป็นระเบียบโดยมีและไม่มีเครื่องหมายโคลอนและพิสูจน์ว่าไม่ใช่ความกำกวม
อย่างไรก็ตามโปรดสังเกตว่าหนึ่งในคำพังเพยของZen of Pythonคือ "Explicit is better กว่า Implicit" ดังนั้นการอธิบายความชัดเจนของบล็อกด้วยโคลอนดูเหมือนจะสอดคล้องกับปรัชญาทั่วไปของ Python ออกแบบและประวัติศาสตร์คำถามที่พบบ่อยยังกล่าวว่าการตัดสินใจครั้งนี้จะขึ้นอยู่กับหลักฐานเชิงประจักษ์จากบรรพบุรุษ ธ เอบีซี