สำหรับฟังก์ชั่นระดับโลก dir()
เป็นคำสั่งที่จะใช้ (ดังที่กล่าวไว้ในคำตอบส่วนใหญ่เหล่านี้) อย่างไรก็ตามรายการนี้ทั้งฟังก์ชั่นสาธารณะและฟังก์ชั่นที่ไม่ใช่แบบสาธารณะด้วยกัน
ตัวอย่างการรัน:
>>> import re
>>> dir(re)
ส่งคืนฟังก์ชัน / คลาสที่ชอบ:
'__all__', '_MAXCACHE', '_alphanum_bytes', '_alphanum_str', '_pattern_type', '_pickle', '_subx'
บางอันไม่ได้มีไว้สำหรับการเขียนโปรแกรมทั่วไป (แต่โดยตัวโมดูลเองยกเว้นในกรณีของ DunderAliases เช่น__doc__
, __file__
ect) ด้วยเหตุผลนี้จึงไม่มีประโยชน์ที่จะแสดงรายการเหล่านี้กับรายการสาธารณะ (นี่คือวิธีที่ Python รู้ว่าควรใช้อะไรเมื่อใช้งานfrom module import *
)
__all__
สามารถใช้เพื่อแก้ปัญหานี้มันจะส่งกลับรายการของฟังก์ชั่นสาธารณะและชั้นเรียนทั้งหมดในโมดูล (ผู้ที่ไม่ได้เริ่มต้นด้วยขีดล่าง - _
) เห็น
ใครบางคนสามารถอธิบาย __all__ ใน Python ได้หรือไม่? สำหรับการใช้งานของ__all__
สำหรับการใช้งานของ
นี่คือตัวอย่าง:
>>> import re
>>> re.__all__
['match', 'fullmatch', 'search', 'sub', 'subn', 'split', 'findall', 'finditer', 'compile', 'purge', 'template', 'escape', 'error', 'A', 'I', 'L', 'M', 'S', 'X', 'U', 'ASCII', 'IGNORECASE', 'LOCALE', 'MULTILINE', 'DOTALL', 'VERBOSE', 'UNICODE']
>>>
ฟังก์ชั่นและคลาสทั้งหมดที่มีเครื่องหมายขีดล่างถูกลบทิ้งเหลือไว้เฉพาะฟังก์ชั่นที่กำหนดเป็นสาธารณะและสามารถใช้งานได้ผ่าน import *
ทุกฟังก์ชั่นและการเรียนด้วยขีดได้ถูกลบออกเหลือเพียงผู้ที่ถูกกำหนดให้เป็นสาธารณะและดังนั้นจึงสามารถนำมาใช้ผ่านทาง
โปรดทราบ__all__
ว่าไม่ได้กำหนดไว้เสมอ หากไม่รวมอยู่ในนั้นAttributeError
จะมีการยก
กรณีนี้เกิดขึ้นกับโมดูล ast:
>>> import ast
>>> ast.__all__
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: module 'ast' has no attribute '__all__'
>>>