#-*- 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