Skip to content

Elenco delle funzioni integrate, delle costanti, ecc. in Python (dir(__builtins__))

Python

Python ha molte funzioni integra, costanti integra e così via.

Questo articolo descrive come controllare l’elenco di oggetti incorporati come funzioni, costanti, tipi e così via.

  • Consulta la documentazione ufficiale
  • Il modulo builtins e __builtins__
  • Verifica con la funzione incorporata dir()

Consulta la documentazione ufficiale

Gli oggetti integrati sono descritti nella documentazione ufficiale.

Se vuoi sapere quali funzioni integrare sono disponibili, è meglio leggere la documentazione ufficiale.

Puoi selezionare la lingua e la versione nella casella di selezione in alto a sinistra.

Il modulo builtins e __builtins__

Il modulo builtins nella libreria standard fornisce l’accesso a funzioni integra, costanti, ecc.

Ad esempio, puoi chiamare la funzione incorporata len() come builtins.len(). Questi due sono lo stesso oggetto.

import builtins

print(len('abc'))
# 3

print(builtins.len('abc'))
# 3

print(len)
# 

print(builtins.len)
# 

print(builtins.len is len)
# True

In, non è necessario utilizzare il modulo integrato, ma è possibile utilizzarlo quando si desidera implementare una funzione con lo stesso nome che racchiude una funzione incorporata.

Vedere la documentazione ufficiale di seguito per maggiori dettagli.

In molte implementazioni di Python, puoi usare il modulo builtins con __builtins__ senza importarlo.

print(__builtins__.len('abc'))
# 3

print(__builtins__.len is len)
# True

print(__builtins__ is builtins)
# True

Verifica con la funzione incorporata dir()

La funzione incorporata dir() riporta un elenco di nomi di attributi, metodi, ecc. dell’oggetto specificato nell’argomento.

Puoi ottenere un elenco di nomi di oggetti incorporati, come funzioni e costanti incorporare, passando il modulo builtins o __builtins__ a dir().

Per semplificare la lettura dell’output, utilizzare pprint.

Nota che in un ambiente in cui __builtins__ è diverso dal modulo builtins( invece importare il modulo builtins) e dir(builtins usare di dir__builtins__).

import pprint

print(type(dir(__builtins__)))
# <class 'list'>

print(len(dir(__builtins__)))
# 153

pprint.pprint(dir(__builtins__), compact=True)
# ['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException',
#  'BlockingIOError', 'BrokenPipeError', 'BufferError', 'BytesWarning',
#  'ChildProcessError', 'ConnectionAbortedError', 'ConnectionError',
#  'ConnectionRefusedError', 'ConnectionResetError', 'DeprecationWarning',
#  'EOFError', 'Ellipsis', 'EnvironmentError', 'Exception', 'False',
#  'FileExistsError', 'FileNotFoundError', 'FloatingPointError', 'FutureWarning',
#  'GeneratorExit', 'IOError', 'ImportError', 'ImportWarning', 'IndentationError',
#  'IndexError', 'InterruptedError', 'IsADirectoryError', 'KeyError',
#  'KeyboardInterrupt', 'LookupError', 'MemoryError', 'ModuleNotFoundError',
#  'NameError', 'None', 'NotADirectoryError', 'NotImplemented',
#  'NotImplementedError', 'OSError', 'OverflowError', 'PendingDeprecationWarning',
#  'PermissionError', 'ProcessLookupError', 'RecursionError', 'ReferenceError',
#  'ResourceWarning', 'RuntimeError', 'RuntimeWarning', 'StopAsyncIteration',
#  'StopIteration', 'SyntaxError', 'SyntaxWarning', 'SystemError', 'SystemExit',
#  'TabError', 'TimeoutError', 'True', 'TypeError', 'UnboundLocalError',
#  'UnicodeDecodeError', 'UnicodeEncodeError', 'UnicodeError',
#  'UnicodeTranslateError', 'UnicodeWarning', 'UserWarning', 'ValueError',
#  'Warning', 'ZeroDivisionError', '__IPYTHON__', '__build_class__', '__debug__',
#  '__doc__', '__import__', '__loader__', '__name__', '__package__', '__spec__',
#  'abs', 'all', 'any', 'ascii', 'bin', 'bool', 'breakpoint', 'bytearray',
#  'bytes', 'callable', 'chr', 'classmethod', 'compile', 'complex', 'copyright',
#  'credits', 'delattr', 'dict', 'dir', 'display', 'divmod', 'enumerate', 'eval',
#  'exec', 'filter', 'float', 'format', 'frozenset', 'get_ipython', 'getattr',
#  'globals', 'hasattr', 'hash', 'help', 'hex', 'id', 'input', 'int',
#  'isinstance', 'issubclass', 'iter', 'len', 'license', 'list', 'locals', 'map',
#  'max', 'memoryview', 'min', 'next', 'object', 'oct', 'open', 'ord', 'pow',
#  'print', 'property', 'range', 'repr', 'reversed', 'round', 'set', 'setattr',
#  'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type',
#  'vars', 'zip']

Questo risultato varierà a seconda dell’ambiente. L’output dell’esempio sopra è il risultato dell’esecuzione in Jupyter Notebook (IPython), quindi include ‘__IPYTHON__’, ‘get_ipython’ e così via.

dir() riporta un elenco di stringhe. Non contiene alcuna informazione sul fatto che ogni nome sia una funzione o una costante.

print(dir(__builtins__)[0])
# ArithmeticError

print(type(dir(__builtins__)[0]))
# <class 'str'>

Usando la comprensione degli elenchi degli ei metodi delle stringhe, puoi, ad esempio, estrarre solo stringhe minuscole che non iniziano con ‘_’, o solo quelle che terminano con ‘Errore’ o ‘Avviso’.

pprint.pprint([s for s in dir(__builtins__) if s.islower() and not s.startswith('_')], compact=True)
# ['abs', 'all', 'any', 'ascii', 'bin', 'bool', 'breakpoint', 'bytearray',
#  'bytes', 'callable', 'chr', 'classmethod', 'compile', 'complex', 'copyright',
#  'credits', 'delattr', 'dict', 'dir', 'display', 'divmod', 'enumerate', 'eval',
#  'exec', 'filter', 'float', 'format', 'frozenset', 'get_ipython', 'getattr',
#  'globals', 'hasattr', 'hash', 'help', 'hex', 'id', 'input', 'int',
#  'isinstance', 'issubclass', 'iter', 'len', 'license', 'list', 'locals', 'map',
#  'max', 'memoryview', 'min', 'next', 'object', 'oct', 'open', 'ord', 'pow',
#  'print', 'property', 'range', 'repr', 'reversed', 'round', 'set', 'setattr',
#  'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type',
#  'vars', 'zip']

pprint.pprint([s for s in dir(__builtins__) if s.endswith('Error')], compact=True)
# ['ArithmeticError', 'AssertionError', 'AttributeError', 'BlockingIOError',
#  'BrokenPipeError', 'BufferError', 'ChildProcessError',
#  'ConnectionAbortedError', 'ConnectionError', 'ConnectionRefusedError',
#  'ConnectionResetError', 'EOFError', 'EnvironmentError', 'FileExistsError',
#  'FileNotFoundError', 'FloatingPointError', 'IOError', 'ImportError',
#  'IndentationError', 'IndexError', 'InterruptedError', 'IsADirectoryError',
#  'KeyError', 'LookupError', 'MemoryError', 'ModuleNotFoundError', 'NameError',
#  'NotADirectoryError', 'NotImplementedError', 'OSError', 'OverflowError',
#  'PermissionError', 'ProcessLookupError', 'RecursionError', 'ReferenceError',
#  'RuntimeError', 'SyntaxError', 'SystemError', 'TabError', 'TimeoutError',
#  'TypeError', 'UnboundLocalError', 'UnicodeDecodeError', 'UnicodeEncodeError',
#  'UnicodeError', 'UnicodeTranslateError', 'ValueError', 'ZeroDivisionError']

pprint.pprint([s for s in dir(__builtins__) if s.endswith('Warning')], compact=True)
# ['BytesWarning', 'DeprecationWarning', 'FutureWarning', 'ImportWarning',
#  'PendingDeprecationWarning', 'ResourceWarning', 'RuntimeWarning',
#  'SyntaxWarning', 'UnicodeWarning', 'UserWarning', 'Warning']

Come sapere in precedenza puoi, se vuoi solo quali funzioni integral ha Python, leggere la documentazione ufficiale, ma se vuoi controllare se una stringa viene utilizzata come oggetto, puoi usare dir(__builtins__) .

print('len' in dir(__builtins__))
# True

Se si utilizza il nome di un oggetto integrato come nome di variabile, viene sovrascritto. Non farlo.