tipos - recorrer diccionario python
¿Utilizas la función máxima de Python cuando tienes una variable llamada max? (1)
Python incluye la función incorporada en max (). Sin embargo, a pesar de estar incorporado, no es una palabra clave. Es decir, puedes hacer max=4
. Esto tiene sentido ya que el máximo de algo surge mucho. ¡Pero! Si usa max como variable, deshabilita el uso de la función max en ese ámbito.
Entonces si lo haces:
max = 4
max(1, 2)
Obtendrá un error de int object not callable
. De nuevo, tiene sentido. Pero, ¿hay alguna forma de especificar que le gustaría la función máxima? Como un std.max()
? Esto también se aplica a todas las otras funciones incorporadas.
El __builtin__
(Python 2) / builtins
(Python 3) proporciona otra forma de acceder a todos los identificadores incorporados / estándar para casos como este:
>>> import __builtin__
>>>
>>> __builtin__.max is max
True
>>>
>>> max = 2
>>> __builtin__.max([0, max])
2
import __builtin__ as builtins
def random_integer(min, max):
random_integer.seed = builtins.max(10101, ( # looks random enough, right?
((random_integer.seed * 3 - 210) % 9898989) >> 1) ^ 173510713571)
return min + (random_integer.seed % (max - min + 1))
random_integer.seed = 123456789
Normalmente, la mayoría de las aplicaciones no acceden explícitamente a este módulo, pero puede ser útil en los módulos que proporcionan objetos con el mismo nombre que un valor incorporado, pero en los que también se necesita el built-in de ese nombre.
El cambio de nombre en Python 3 es parte de los cambios de "core languages" descritos en PEP 3100 :
Para deshacerse de la confusión entre
__builtin__
y__builtins__
, se decidió cambiar el nombre de__builtin__
(el módulo) abuiltins
, y dejar__builtins__
(el gancho de la caja de arena) solo.