Untuk fungsi global dir()
adalah perintah untuk menggunakan (sebagaimana disebutkan dalam sebagian besar jawaban ini), namun ini mencantumkan fungsi publik dan non-publik bersamaan.
Misalnya menjalankan:
>>> import re
>>> dir(re)
Mengembalikan fungsi / kelas seperti:
'__all__', '_MAXCACHE', '_alphanum_bytes', '_alphanum_str', '_pattern_type', '_pickle', '_subx'
Beberapa di antaranya umumnya tidak dimaksudkan untuk penggunaan pemrograman umum (tetapi oleh modul itu sendiri, kecuali dalam kasus DunderAliases seperti __doc__
, __file__
dll). Untuk alasan ini mungkin tidak berguna untuk mendaftar mereka dengan yang umum (ini adalah bagaimana Python tahu apa yang harus didapatkan saat menggunakan from module import *
).
__all__
dapat digunakan untuk mengatasi masalah ini, ia mengembalikan daftar semua fungsi publik dan kelas dalam modul (yang tidak dimulai dengan garis bawah - _
). Lihat
Bisakah seseorang menjelaskan __all__ dengan Python? untuk penggunaan__all__
.
Berikut ini sebuah contoh:
>>> 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']
>>>
Semua fungsi dan kelas dengan garis bawah telah dihapus, hanya menyisakan yang didefinisikan sebagai publik dan karenanya dapat digunakan melalui import *
.
Catatan yang __all__
tidak selalu ditentukan. Jika tidak disertakan maka sebuahAttributeError
dimunculkan.
Kasus ini adalah dengan modul ast:
>>> import ast
>>> ast.__all__
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: module 'ast' has no attribute '__all__'
>>>