__name__和__main__


啓用以後的語言特性

可能破壞現有代碼語言方面的變動會不斷引進。一開始,是以選用擴展功能的方式出現,默認是關閉的。要開啓這類功能,可以使用以下形式的特定的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))


無論是否用於測試,結果都是讓代碼有兩種不同的角色:作爲工具的庫模塊,或者是作爲可執行的程序。






















發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章