当你有一个名为max的变量时,使用Python的最大函数?

时间:2016-02-17 23:43:32

标签: python scope standard-library built-in

Python包含内置的max()函数。但是,尽管它内置于它不是一个关键字。也就是说,你被允许做max = 4 max(1, 2) 。这是有道理的,因为最大的东西出现了很多。但!如果使用max作为变量,则禁用该范围中的max函数。

所以,如果你这样做:

int object not callable

您将收到std.max()的错误。再次,有道理。但有没有办法指定你想要max函数?像fig, axes = plt.subplots(nrows=2,ncols=1) 一样?这适用于所有其他内置功能。

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}}(沙箱钩)。