ฉันแม้ว่าฉันสามารถมีส่วนร่วมใช้ตัวแบ่งบรรทัด:
x = lambda x,y: x-y if x<y \
else y-x if y<x \
else 0
อย่าลืมสิ่งที่ดีมาก ๆ ที่ไพ ธ อนสามารถเขียนผู้เลียนแบบได้ดังตัวอย่าง:
a=b=0; c=b+a; d = a+b**2 #etc etc
และแลมบ์ดาจะมีประสิทธิภาพมาก แต่ก็ไม่ได้หมายความว่าเปลี่ยนตัว 1 ฟังก์ชั่นทั้งหมดที่ฉันหมายถึงคุณสามารถตัดมันเหมือน (ยืมตัวอย่างจากเพื่อนร่วมงานดังกล่าวข้างต้น):
makeTag = lambda tagName: "<{}>".format(tagName)
closeTag = lambda tagName: makeTag("/"+str(tagName))
openTag = lambda tagName: makeTag(tagName)
writeHMTLline = lambda tag,content: ""+opetTag(tag)+str(content)+closeTag(tag)
แต่คุณต้องการทำเช่นนี้จริง ๆ ? ส่วนใหญ่จะอ่านไม่ได้หลังจากผ่านไประยะหนึ่งมันก็เหมือนกับการเริ่มต้นของเชือกที่เริ่มต้นด้วยปลายที่ไม่มีการไข
แลมบ์ดาเป็นหนึ่งในฟังก์ชั่นเดียวในแผนที่ตัวกรองและลดฟังก์ชั่นในการวางโปรแกรมเชิงการทำงาน (เหนือสิ่งอื่นใด) ตัวอย่างเช่นการรับค่าอักขระของค่าที่เป็นจำนวนเต็มและหารด้วย 2
chrDev2 = lambda INT: chr(INT) if isinstance(INT,int) and INT%2==0 else INT
someStringList = map( chrDev2, range(30) )
>>> ['\x00', 1, '\x02', 3, '\x04', 5, '\x06', 7, '\x08', 9, '\n', 11, '\x0c', 13, '\x0e', 15, '\x10', 17, '\x12', 19, '\x14', 21, '\x16', 23, '\x18', 25, '\x1a', 27, '\x1c', 29]
คุณสามารถใช้มันเป็นฟังก์ชั่นการแสดงออกของฟังก์ชั่นโดย deifning ฟังก์ชั่นที่ซับซ้อน (หรือมากกว่าและหลาย lambdas และวางไว้ในแลมบ์ดาอื่น:
def someAnon(*args): return sum(list(args))
defAnon = lambda list: [ x*someAnon(*list) for x in list]
แต่ Python มีการสนับสนุนการแสดงออกของฟังก์ชันในอีกทางหนึ่ง: - บอกว่าคุณมีฟังก์ชั่นที่เรียกว่าsuperAwesomeFunction
และฟังก์ชั่นนั้นสามารถทำสิ่งที่ยอดเยี่ยมมากคุณสามารถกำหนดให้กับตัวแปรโดยไม่เรียกมันเช่นนี้
SAF = superAwesomeFunction # there is no () at the end,
ดังนั้นเมื่อคุณเรียก SAF คุณจะเรียก superAwesomeFunction หรือวิธี หากคุณค้นหาโฟลเดอร์ Lib ของคุณคุณจะพบว่า__builtin__
โมดูลหลามส่วนใหญ่เขียนด้วยวิธีนี้ สิ่งนี้เกิดขึ้นเพราะบางครั้งคุณจะต้องมีฟังก์ชั่นบางอย่างที่ทำงานเฉพาะที่ไม่จำเป็นพอที่จะใช้งานได้โดยผู้ใช้ แต่จำเป็นสำหรับฟังก์ชั่นหลายอย่าง ดังนั้นคุณมีทางเลือกที่คุณไม่สามารถมี 2 ฟังก์ชั่นที่มีชื่อ "superAwesomeFunction" คุณสามารถมี "superAwesomeFunctionDoingBasicStuf" และ "realSuperAwesomeFunction" และ "ใส่เพียงแค่" realSuperAwesomeFunction "ในฟังก์ชั่น
คุณสามารถค้นหาตำแหน่งของโมดูลที่นำเข้าได้โดยป้อนในคอนโซลimportedModule.__file__
(ตัวอย่างจริงimport os;os.__file__
) และเพียงแค่ติดตามไดเรกทอรีนั้นไปยังไฟล์ที่เรียกว่าimportModule.pyและเปิดในตัวแก้ไขและค้นหาวิธีที่คุณสามารถเพิ่ม "ความรู้" ของคุณเองได้
ฉันหวังว่าสิ่งนี้จะช่วยคุณและเพื่อนร่วมงานคนอื่นอาจมีปัญหา