启用以后的语言特性
可能破坏现有代码语言方面的变动会不断引进。一开始,是以选用扩展功能的方式出现,默认是关闭的。要开启这类功能,可以使用以下形式的特定的import语句:
from __future__ import featurename
这个语句一般应该出现在模块文件的顶端,因为这是以每个模块为基础,开启特殊的代码编译。
混合用法模式:__name__和__main__
这是一个特殊的与模块相关的技巧,可把文件作为模块导入,也可以以独立程序的形式运行。每个模块都有个名为__name__的内置属性,Python会自动设置该属性。
- 如果文件是以顶层程序文件执行,在启动时,__name__就会设置为字符串“__mian__”
- 如果文件被导入,__name__就会改设成客户端所了解的模块名。
结果就是模块可以检测自己的__name__,来确定它是在执行还是在导入。
实际上,一个模块的__name__变量充当一个使用模式标志,允许它编写成一个可导入的库和一个顶层脚本。尽管简单,我们将会看到这一钩子几乎在可能遇到的每个Python程序文件中应用。
在文件末端的__name__测试中的自我测试程序代码,可能是Python中最常见并且是最简单的单元测试协议。
#!/usr/bin/env python
# coding=utf-8
print('I am:',__name__)
def minmax(test,*args):
res=args[0]
for arg in args[1:]:
if test(arg,res):
res=arg
return res
def lessthan(x,y):return x<y
def grtrthan(x,y):return x>y
if __name__=='__main__':
print(minmax(lessthan,4,2,1,5,6,3))
print(minmax(grtrthan,4,2,1,5,6,3))
无论是否用于测试,结果都是让代码有两种不同的角色:作为工具的库模块,或者是作为可执行的程序。