Küresel işlevler dir()
için (bu yanıtların çoğunda belirtildiği gibi) kullanılacak komuttur, ancak bu hem genel işlevleri hem de genel olmayan işlevleri birlikte listeler.
Örneğin koşu:
>>> import re
>>> dir(re)
Aşağıdaki gibi fonksiyonları / sınıfları döndürür:
'__all__', '_MAXCACHE', '_alphanum_bytes', '_alphanum_str', '_pattern_type', '_pickle', '_subx'
Bazıları genellikle genel programlama kullanımı için değildir (ancak modülün kendisi tarafından __doc__
, __file__
vb. Gibi DunderAliases hariç ). Bu nedenle, bunları halka açık olanlarla listelemek yararlı olmayabilir (Python, kullanırken ne elde edeceğini bu şekilde bilir from module import *
).
__all__
Bu sorunu çözmek için kullanılabilir, bir modülde tüm kamu işlevlerinin ve sınıfların listesini döndürür (bu yok çizgi ile başlar - _
). Bkz
Can birisi Python __all__ açıklamak? kullanımı için __all__
.
İşte bir örnek:
>>> 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']
>>>
Alt çizgileri olan tüm işlevler ve sınıflar kaldırılmıştır, yalnızca genel olarak tanımlanmış ve bu nedenle üzerinden kullanılabilir import *
.
Bunun __all__
her zaman tanımlanmadığını unutmayın. İçermezse AttributeError
, bir yükseltilir.
Bunun bir örneği ast modülünde:
>>> import ast
>>> ast.__all__
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: module 'ast' has no attribute '__all__'
>>>