代碼詳解Python的函數基礎(1)
1.函數調用
# 1.調用函數,需要知道函數的名稱和參數 # 2.調用函數傳入的參數需要和函數定義的參數數量和類型一致 # 如調用abs函數 print("-2的絕對值為:",abs(-2)) print("100的絕對值為:",abs(100)) # 3.函數名是指向一個函數對象的引用,可以把函數名賦給一個變量,相當於給這個函數起別名 abs1 = abs # 變量abs1指向abs函數 print("-1的絕對值為:",abs1(-1))
# 結果輸出:
-2的絕對值為: 2
100的絕對值為: 100
-1的絕對值為: 1
2.函數定義
# 定義函數使用def # 語法: """ def 函數名(參數1,參數2,...): 函數體 return 返回值 """ def compareAB(a,b): if a > b: print("a值大於b值!") elif a == b: print("a值等於b值!") else: print("a值小於b值!") # 調用函數 compareAB(5,3) # 結果輸出: # a值大於b值!
# 空函數:可以用來作為占位符 def nop(): pass # 參數檢查:Python解釋器可以幫我們檢查參數個數是否正確,但無法檢查參數類型是否正確 # 數據類型檢查實例 def myAbs(x): if not isinstance(x,(int,float)): raise TypeError("Bad Operand Type.") if x >= 0: return x else: return -x # 傳入"a"將拋出錯誤 myAbs("A")
# 結果輸出: --------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-8-21934e00955a> in <module> 15 16 # 傳入"a"將拋出錯誤 ---> 17 myAbs("A") <ipython-input-8-21934e00955a> in myAbs(x) 7 def myAbs(x): 8 if not isinstance(x,(int,float)): ----> 9 raise TypeError("Bad Operand Type.") 10 if x >= 0: 11 return x 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的值為%f,\ny的值為%f"%(x,y)) # 結果輸出: # x的值為151.961524, # y的值為70.000000
# 實例1:由歐拉角轉換成對應的四元數 # 由角度計算四元數的值 import math # yaw:繞z軸旋轉的角度; # pitch:繞y軸旋轉的角度; # roll:繞x軸旋轉的角度; def eulerToQuaternion(yaw,pitch,roll): w = math.cos(roll/2.0)*math.cos(pitch/2.0)*math.cos(yaw/2.0)+math.sin(roll/2.0)*math.sin(pitch/2.0)*math.sin(yaw/2.0) x = math.sin(roll/2.0)*math.cos(pitch/2.0)*math.cos(yaw/2.0)-math.cos(roll/2.0)*math.sin(pitch/2.0)*math.sin(yaw/2.0) y = math.cos(roll/2.0)*math.sin(pitch/2.0)*math.cos(yaw/2.0)+math.sin(roll/2.0)*math.cos(pitch/2.0)*math.sin(yaw/2.0) z = math.cos(roll/2.0)*math.cos(pitch/2.0)*math.sin(yaw/2.0)-math.sin(roll/2.0)*math.sin(pitch/2.0)*math.cos(yaw/2.0) return x,y,z,w # 繞z軸90度 print("繞z軸90度的四元數為:",(eulerToQuaternion(math.pi/2,0,0))) # 繞y軸90度 print("繞y軸90度的四元數為:",(eulerToQuaternion(0,math.pi/2,0))) # 繞x軸90度 print("繞x軸90度的四元數為:",(eulerToQuaternion(0,0,math.pi/2)))
# 結果輸出:
繞z軸90度的四元數為: (0.0, 0.0, 0.7071067811865476, 0.7071067811865476)
繞y軸90度的四元數為: (0.0, 0.7071067811865476, 0.0, 0.7071067811865476)
繞x軸90度的四元數為: (0.7071067811865476, 0.0, 0.0, 0.7071067811865476)
總結
本篇文章就到這裡瞭,希望能夠給你帶來幫助,也希望您能夠多多關註WalkonNet的更多內容!