亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

章節
問答
課簽
筆記
評論
占位
占位

什么是函數

對于什么是函數,其實在前面的學習過程當中,已經多次接觸到函數了,比如在set里面,使用remove()函數進行元素的刪除,使用add()函數添加元素,使用update()函數批量添加元素,但是至今為止,我們都沒有對函數有個充分的認識。本章,我們將具體學習函數。
我們知道圓的面積計算公式為:

S = πr²

當我們知道半徑r的值時,就可以通過公式計算出面積,假設我們需要計算3個不同大小的圓的面積:

r1 = 12.34
r2 = 9.08
r3 = 73.1
s1 = 3.14 * r1 * r1
s2 = 3.14 * r2 * r2
s3 = 3.14 * r3 * r3

可以看到,在上述代碼中,出現了幾乎完全重復的代碼,每次計算圓的面積的時候我們都是通過3.14*x*x(其中x是圓的半徑)的方式計算出來的,這樣寫不僅非常麻煩,而且,當我們需要提高圓周率的精度時,把3.14改成3.14159265359的時候,我們需要修改涉及到的三行代碼。
因此,我們可以使用函數,把重復的邏輯代碼封裝起來,這樣子,我們就不需要每次計算的時候,都寫3.14*x*x這樣的代碼了;當我們使用函數的時候,我們只需要定義一次,就可以多次使用。
我們把封裝重復邏輯代碼的過程就做抽象,抽象是數學中非常常見的概念。
比如:計算數列的和,比如:1 + 2 + 3 + ... + 100,寫起來十分不方便,于是數學家發明了求和符號∑,可以把1 + 2 + 3 + ... + 100記作:

這種抽象記法非常強大,因為我們看到∑就可以理解成求和,而不是還原成低級的加法運算。
而且,這種抽象記法是可擴展的,比如:


還原成加法運算就變成了:

(1 x 1 + 1) + (2 x 2 + 1) + (3 x 3 + 1) + ... + (100 x 100 + 1)

可見,借助抽象,我們才能不關心底層的具體計算過程,而直接在更高的層次上思考問題。
寫計算機程序也是一樣,函數就是最基本的一種代碼抽象的方式。
Python不但能非常靈活地定義函數,而且本身內置了很多有用的函數,可以直接調用。

Python調用函數

Python內置了很多有用的函數,我們可以直接調用。比如前面求list的長度len()函數等等,都是Python內置的函數,我們經常會使用到它們。
在這個文檔里面,列舉了Python內置的大部分函數,同學們有興趣可以參考看看。

https://docs.python.org/3/library/functions.html

要調用一個函數,需要知道函數的名稱和參數,比如求絕對值的函數 abs(),它接收一個參數。
對于abs()函數,abs就是函數的名稱,括號()內,就是函數的參數,當函數沒有參數時,默認就是一個空括號。abs接收一個參數,這個參數就是需要求絕對值的數,這個參數可以是整數,也可以是浮點數

abs(-100) # ==> 100
abs(20) # ==> 20
abs(-3.14159) # ==> 3.14159

需要注意的是,傳遞的參數數量一定要和函數要求的一致,不然將會引起錯誤,比如,如果在abs()函數中傳入兩個參數。

abs(1, 2)
# 報錯
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: abs() takes exactly one argument (2 given)

在錯誤提示中,清晰的說明了abs()函數只接收一個參數,但是卻傳遞了兩個參數,所以引起了錯誤。
其次,如果傳入的參數數量是對的,但是參數的類型不能被函數所接受,也會引起錯誤,比如:求絕對值的函數abs(),只有數字才擁有絕對值,如果傳遞一個字符串進去,將會引起錯誤。

abs('3.1415926')
# 報錯
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: bad operand type for abs(): 'str'

這里錯誤提示說,str類型是錯誤的參數類型。
除了abs()函數,還有很多常見的函數,比如cmp()函數,可以比較兩個數的大小,這個時候,cmp()函數就接收兩個參數。
對于cmp(x, y),如果x < y 返回 -1,如果x == y 函數返回0,如果x > y函數返回1。

cmp(1, 2) # ==> -1
cmp(2, 1) # ==> 1
cmp(3, 3) # ==> 0

還有基礎數據類型的轉換函數,int()函數可以將合法的其它類型數據轉換為整數,str()函數可以將其它類型的數據轉換為字符串。

int('123') # ==> 123
int(12.34) # ==> 12

str(123) # ==> '123'
str(1.23) # ==> '1.23'

在學習Python的過程中,我們將會接觸到越來越多的Python內置函數,這些內置函數提供了非常有用的功能,大大降低我們編程的難度。

任務

sum()函數接收一個list作為參數,并返回list所有元素之和。請計算 1*1 + 2*2 + 3*3 + ... + 100*100。

?不會了怎么辦

參考答案:

L = []
x = 1
while x <= 100:
    L.append(x * x)
    x = x + 1

print(sum(L))
||

提問題

寫筆記

公開筆記
提交
||

請驗證,完成請求

由于請求次數過多,請先驗證,完成再次請求

加群二維碼

打開微信掃碼自動綁定

您還未綁定服務號

綁定后可得到

  • · 粉絲專屬優惠福利
  • · 大咖直播交流干貨
  • · 課程更新,問題答復提醒
  • · 賬號支付安全提醒

收藏課程后,能更快找到我哦~

使用 Ctrl+D 可將課程添加到書簽

邀請您關注公眾號
關注后,及時獲悉本課程動態

舉報

0/150
提交
取消
全部 精華 我要發布
全部 我要發布
最熱 最新
只看我的

手記推薦

更多

本次提問將花費2個積分

你的積分不足,無法發表

為什么扣積分?

本次提問將花費2個積分

繼續發表請點擊 "確定"

為什么扣積分?