Nic*_*man 2 python scope standard-library built-in
Python包含内置的max()函数.但是,尽管它内置于它不是一个关键字.也就是说,你被允许这样做max=4.这是有道理的,因为最大的东西出现了很多.但!如果使用max作为变量,则禁用该范围中的max函数.
所以,如果你这样做:
max = 4
max(1, 2)
Run Code Online (Sandbox Code Playgroud)
你会得到一个错误int object not callable.再次,有道理.但有没有办法指定你想要max函数?喜欢std.max()?这适用于所有其他内置功能.
小智 5
的__builtin__(Python的2)/builtins(Python 3中)模块提供另一种方式来访问所有内置/标准标识符这样的情况下:
>>> import __builtin__
>>>
>>> __builtin__.max is max
True
>>>
>>> max = 2
>>> __builtin__.max([0, max])
2
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
大多数应用程序通常不会显式访问此模块,但在提供与内置值同名的对象的模块中可能很有用,但在该模块中也需要该名称的内置.
Python 3中的名称更改是PEP 3100中描述的"核心语言"更改的一部分:
为了摆脱之间的混乱
__builtin__和__builtins__,因此决定重新命名__builtin__(模块)来builtins,并留下__builtins__单独(沙盒钩).
| 归档时间: |
|
| 查看次数: |
1270 次 |
| 最近记录: |