Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

อ็อบเจ็กต์สำเร็จรูปใน Python (builtins)

โมดูล builtins ถูกโหลดอัตโนมัติทุกครั้งที่ตัวแปล Python เริ่มต้น ไม่ว่าจะเป็นสภาพแวดล้อมการรันระดับบนสุดหรือเซสชันโต้ตอบ คลาส Object ซึ่งเป็นคลาสฐานสำหรับอ็อบเจ็กต์ Python ทั้งหมด ถูกกำหนดในโมดูลนี้ คลาสชนิดข้อมูลสำเร็จรูปทั้งหมด เช่น ตัวเลข, สตริง, ลิสต์ ฯลฯ ถูกกำหนดในโมดูลนี้ คลาส BaseException รวมถึงข้อยกเว้นสำเร็จรูปทั้งหมด ก็ถูกกำหนดในโมดูลนี้เช่นกัน อีกทั้ง ฟังก์ชันสำเร็จรูปทั้งหมดก็ถูกกำหนดในโมดูล builtins ด้วย

เนื่องจากโมดูลนี้ถูกนำเข้าในเซสชันปัจจุบันอัตโนมัติ ปกติแล้วจึงไม่ได้นำเข้าโดยตรง ฟังก์ชันสำเร็จรูปทั้งหมดที่ใช้ในโค้ดที่รันได้ ถูกมองว่าเป็นจากโมดูล builtins โดยค่าเริ่มต้น ตัวอย่างเช่น:

>>> len('hello')
5

เทียบเท่ากับโดยนัยว่า:

>>> import builtins
>>> builtins.len('hello')
5

อย่างไรก็ตาม การนำเข้าโมดูลนี้อย่างชัดเจนจำเป็นเมื่อมีฟังก์ชันที่ผู้ใช้กำหนดเองที่มีชื่อเหมือนกับฟังก์ชันสำเร็จรูป ตัวแปล Python ให้ลำดับความสำคัญสูงกว่าฟังก์ชันที่ผู้ใช้กำหนดเอง ดังนั้น หากโค้ดมีฟังก์ชันที่ผู้ใช้กำหนดเองและฟังก์ชันสำเร็จรูปที่มีชื่อเดียวกัน ฟังก์ชันสำเร็จรูปต้องนำหน้าด้วยโมดูล builtins:

def len(string):
    print('local len() function')
    print('calling len() function in builtins module')
    import builtins
    l = builtins.len(string)
    print('length:', l)

string = "Hello World"
len(string)

ผลลัพธ์:

local len() function
calling len() function in builtins module
length: 11

โมดูลส่วนใหญ่มีชื่อ __builtins__ พร้อมใช้งานเป็นส่วนหนึ่งของ globals ของพวกเขา ค่าของ __builtins__ ปกติจะเป็นโมดูลนี้หรือค่าของแอตทริบิวต์ __dict__ ของโมดูลนี้:

>>> import math
>>> globals()
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': , '__spec__': None, '__annotations__': {}, '__builtins__': , 'math': }