Python物件型別判斷與函式過載

pythontab發表於2013-08-05

1. 判斷物件型別

透過type函式可以知道物件的型別,示例程式碼如下:

x = 'Hello'
s = type(x) 
print s 
x = 'Hello'
s = type(x)
print s

2. 函式過載

在寫函式時,時常遇到需要應付不同的引數型別以及不同的引數數量的情況。

在C++中,通常定義多個“同名不同參”的函式來過載搞定,

但Python中的過載可以用另外的方法實現:引數型別判斷+預設值

import os, sys 
def tracelog(s='', n=40): 
    if isinstance(n, int): 
        print '-'*n 
    else: 
        print '-'*40
    if isinstance(s, str): 
        print s 
    elif isinstance(s, list): 
        s1 = '' 
        for x in s: 
            s1 = s1 + ' ' + x 
        print s1 
  
def main(): 
    tracelog(n=50) 
    tracelog(sys.argv) 
    tracelog(n=20) 
  
main()
import os, sys
 
def tracelog(s='', n=40):
    if isinstance(n, int):
        print '-'*n
    else:
        print '-'*40
    if isinstance(s, str):
        print s
    elif isinstance(s, list):
        s1 = ''
        for x in s:
            s1 = s1 + ' ' + x
        print s1
 
def main():
    tracelog(n=50)
    tracelog(sys.argv)
    tracelog(n=20)
main()

上面的程式碼定義了一個函式tracelog,這個函式會把s引數列印出來,s引數可以是字串或列表,同時還能列印指定長度的橫線

其中:isinstance函式就是用來判斷物件是否為特定型別的函式,第二個引數就是物件型別,可以透過type函式查詢到。

相關文章