search
尋找貓咪~QQ 地點 桃園市桃園區 Taoyuan , Taoyuan

[Python零基礎入門]函數(2)

定義函數

除了用Python庫中的函數,也可以自己定義函數,使用def:

def my_abs(x): if x>=0: return x else: return -x

也可以使用保存的.py文件訪問其中的函數:

這裡用到的import函數之後會學,跟模塊有關。

空函數

在使用IDE寫代碼的時候,有時候會用到空函數:

def nop: pass

這個函數什麼也沒幹,放個pass可以讓函數先運行起來。

pass也可以在條件或者是循環中用:

if age>=18: pass

當然不是年齡大於18就pass掉了。

參數檢查

我們定義的my_abs函數如果輸入的參數個數不對,會報錯:

def my_abs(x): if x>=0: return x else: return -xmy_abs(12)

但是如果輸入的參數不是整數,會出現另一個錯誤:

def my_abs(x): if x>=0: return x else: return -xmy_abs('1')

我們再來看看庫中自帶的abs函數是怎麼報錯的:

abs(12)

bs('1')

可以看出來報出來的錯誤不一樣,而且abs函數在輸入錯誤的參數類型的時候指出了我們做了什麼錯事,而我們自己定義的函數則是說明了在輸入一個錯誤類型的參數進入這個函數會發生什麼事情:str>=int是不能執行的。

因此我們可以設置自己的參數判斷:

def my_abs(x): if not isinstance(x(intfloat)): raise TypeError('bad operand type') if x>=0: return x else: return -xmy_abs('1')

返回多個值

Pthon中函數返回多個值的時候,其實是打包返回一個tuple,比如下面這個函數:

#!/usr/bin/env python3# -*- coding: utf-8 -*-#坐標移動的函數#導入math包,可以使用sin,cos函數import mathdef point_move(xylengthangle=0): new_x=x+length*math.cos(angle) new_y=y+length*math.sin(angle) return new_xnew_yprint(point_move(00100math.pi/6))

從返回的結果可以看出來,返回值是一個tuple,但是注意一下,tuple的括弧有時候是省略的。

xy=point_move(00100math.pi/6)print(xy)

得到的還是相同的結果。

再來看一個小程序:

import mathdef solve(abc): delta=b**2-4*a*c if delta<0: print('No solution') else: x1=(-b+math.sqrt(delta))/(2*a) x2=(-b-math.sqrt(delta))/(2*a) return x1x2print(solve(121))print(solve(111))

當方程無解的時候,執行if後面的語句,同時因為沒有寫返回什麼,所以函數的返回值是None,這個在CMD中 不顯示,但是在IDE中編譯的時候會顯示。



熱門推薦

本文由 yidianzixun 提供 原文連結

寵物協尋 相信 終究能找到回家的路
寫了7763篇文章,獲得2次喜歡
留言回覆
回覆
精彩推薦