คำนี้มาจากภาษาแอสเซมบลี ฉันไม่สามารถตรวจสอบนิรุกติศาสตร์ แต่ฉันเดาว่าชื่อนั้นมาจากการใช้ส่วนอื่น ๆ ในขณะที่.data
ส่วนแสดงถึงตัวแปรที่สามารถเปลี่ยนแปลงได้ในระหว่างการดำเนินการ.text
ส่วนนั้นมีข้อมูลที่ไม่เปลี่ยนแปลงระหว่างการดำเนินการทำให้สามารถใส่ลงใน ROM ได้หากจำเป็น มันทำให้มีประโยชน์สำหรับรหัสใช่ แต่ยังทำให้มีประโยชน์สำหรับสตริงของข้อความที่ไม่เปลี่ยนแปลง นั่นอาจเป็นที่มาของคำ
ในการพูดถึงความคิดเห็นของ Griffin เกี่ยวกับฟังก์ชั่นชั้นหนึ่งให้พิจารณาโค้ดไพ ธ อน 3 ต่อไปนี้:
def counter():
x = 0
def increment(y):
nonlocal x
x += y
print(x)
return increment
รหัสที่คุณใช้จริงเพื่อincrement
หาสิ่งที่อยู่ภายใน:
self.func_dict['x'] += y
print(self.func_dict['x'])
รหัสปฏิบัติการนั้นสามารถใส่ลงใน ROM ได้ มันไม่เคยเปลี่ยนแปลงตลอดการทำงานของโปรแกรมไม่ว่าคุณจะโทรมากี่ครั้งcounter()
ก็ตาม สิ่งที่ไม่เปลี่ยนแปลงคือself
ตัวชี้และตัวแปรสมาชิก .data
เหล่านั้นจะต้องใส่ลงไปใน เมื่อคุณreturn increment
คุณกำลังส่งคืนอินสแตนซ์ใหม่ของวัตถุฟังก์ชันที่เพิ่มขึ้น คุณไม่ได้สร้างรหัสที่สามารถใช้งานได้ใหม่ทุกครั้ง โค้ดนั้นไม่สามารถเปลี่ยนแปลงได้แม้ว่าตัวชี้จะไม่อยู่ก็ตาม
รหัสเดียวที่ต้องเก็บไว้ใน.data
ส่วนคือสร้างขึ้นeval()
เพราะไม่รู้จักคอมไพเลอร์หรือคอมไพเลอร์ JIT เมื่อเริ่มต้นโปรแกรม อย่างไรก็ตามถึงแม้ว่ารหัสนั้นจะไม่เปลี่ยนรูป หากคุณเปลี่ยนสตริงและโทรeval()
อีกครั้งคุณจะไม่เปลี่ยนรหัสจากครั้งก่อนที่คุณโทรeval()
มาคุณกำลังสร้างรหัสชุดใหม่ทั้งหมด
แม้ว่ารูปแบบการเขียนโปรแกรมอาจทำให้รู้สึกเหมือนรหัสไม่แน่นอน แต่รหัสการแก้ไขตัวเองที่แท้จริงในระดับการสอนตัวประมวลผลนั้นอันตรายและไม่ค่อยพบนอกหัวข้อ OS voodoo เช่นการสลับบริบทกระบวนการ
.text
เป็นคำสั่งการชุมนุม การประกอบเป็นข้อความ