python 定義函數

#-*- coding:UTF-8 -*-

# python中定義一個函數要使用def語句,依次寫出函數名、括號、括號中的參數和冒號:,而後在縮進塊中寫函數體,
# 函數的返回值用return返回

 def  my_abs(x):
    if x>=0:
         return x 
     else:
         return  -x
    
#若是沒有return語句,函數執行完畢也會返回結果,結果爲None
# return None 能夠簡寫爲return     

# 定義一個什麼都不作的空函數,能夠用pass語句
 def   nop():
     pass
# 調用函數時,若是參數個數不對,python解釋器會自動檢查出來,跑出TypeError
# my_abs(1,2)
# TypeError: my_abs() takes exactly 1 argument (2 given)

#若是參數類型不對,Python解釋器沒法幫咱們檢查。
# my_abs('A')
#內置函數 abs會檢查出參數錯誤
 abs('A')
# TypeError: bad operand type for abs(): 'str'


# 修改一下my_abs的定義,對參數類型作檢查,只容許整數和浮點數類型的參數,數據類型檢查能夠用內置函數instance實現:
def  my_abs(x):
    if not isinstance(x,(int,float)):
        raise TypeError("bad  operand  type")
    if x>=0:
        return  x
    else:
        return  -x

my_abs('A')        
# TypeError: bad  operand  type


# 返回多個值
import  math
def  move(x,y,step,angle=0):
    nx=x+step*math.cos(angle)
    ny=y=step*math.sin(angle)
    return  nx,ny
x,y=move(100,100,60,math.pi/6)
print x,y

#同時得到返回值151.961524227 30.0

#其實這只是一種假象,返回的是單一直

r=move(100,100,60,math.pi/6)
print  r
# (151.96152422706632, 29.999999999999996)
#返回值原來是一個tuple
相關文章
相關標籤/搜索