Python包含内置的max()函数。但是,尽管它内置于它不是一个关键字。也就是说,你被允许做max = 4
max(1, 2)
。这是有道理的,因为最大的东西出现了很多。但!如果使用max作为变量,则禁用该范围中的max函数。
所以,如果你这样做:
int object not callable
您将收到std.max()
的错误。再次,有道理。但有没有办法指定你想要max函数?像fig, axes = plt.subplots(nrows=2,ncols=1)
一样?这适用于所有其他内置功能。
答案 0 :(得分:5)
__builtin__
(Python 2) / builtins
(Python 3)模块为这种情况提供了另一种访问所有内置/标准标识符的方法:
>>> 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
大多数应用程序通常不会显式访问此模块,但在提供与内置值同名的对象的模块中可能很有用,但其中还需要内置该名称。
Python 3中的名称更改是the "core languages" changes described in PEP 3100的一部分:
为了消除
__builtin__
和__builtins__
之间的混淆,决定将__builtin__
(模块)重命名为builtins
,并离开{{单独使用1}}(沙箱钩)。