2012年4月19日 星期四

[Python]自己定義例外處理

Python允許使用者自己定義一個新的例外處理
要建立一個新的例外處理很簡單:
class TestException(Exception): pass
上面程式碼定義一個新的例外處理叫TestException,並且繼承自一個Exception的Class
什麽時候要定義一個新的例外處理呢? 當要從好幾層迴圈離開的時候就很好用
以下是一個從許多表格中找出特定值的範例:
found = False
for record in table:
    for field in record:
        for item in field:
            if item == target:
                found = True
                break
        if found:
            break
    if found:
        break
if found:
    print "found"
else:
    print "not found"
傳統的寫法要從最內層迴圈一層一層break出來,程式碼變得很冗長
這時候可以定義一個新的例外處理,當找到target的時候就raise我們新定義的例外處理
如此一來程式碼可以變得比較簡潔
class FoundException(Exception): pass
try:
    for record in table:
        for field in record:
            for item in field:
                if item == target:
                    raise FoundException()
except FoundException:
    print "found"
else:
    print "not found"

2012年4月18日 星期三

[Python]目前執行的OS平台

在Python中要知道目前執行的OS平台很簡單
只需要去檢查sys.platform這個變數就可以了
sys.platform會保存目前執行OS平台的名字("win32" or "linux2")
因此我們可以用一行簡單的程式碼就知道目前執行的OS平台是什麽
isWindows = True if sys.platform.startswith("win") else False
這行程式碼在windows上執行時,osPlatform的值會被設成True
在其他OS執行的時候(ex: Linux, FreeBSD...),會被設定成False