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

為了賬號安全,請及時綁定郵箱和手機立即綁定

python函數問題,個人突然覺得C語言類型檢查很有用

任務

首先請定義一個 square_of_sum 函數,它接受一個list,返回list中每個元素平方的和。

我的代碼:

def square_of_sum(L):

? ? sum = 0

? ? for x in L:

? ? ? ? sum = sum + x*x

? ? ? ? return sum

print square_of_sum([1, 2, 3, 4, 5])

print square_of_sum([-5, 0, 5, 15, 25])


完美結果,正確了。但是引發我的思考。這里參數L應該就是一個普通變量,于是我把代碼改成

def square_of_sum(L):

? ? if L>=0:

? ? ? ? return L

? ? else:

? ? ? ? return -L

print square_of_sum(-6)


結果為6,驗證了我的想法。

于是我又仔細看了第一次函數的代碼,發現從這里無法判斷L是不是List,也有可能是set,tuple.

我于是又寫了下面代碼

def square_of_sum(L): ??

? ? sum = 0

? ? for x in L:

? ? ? ? sum = sum + x*x

? ? return sum

print square_of_sum((1, 2, 3, 4, 5))

print square_of_sum((-5, 0, 5, 15, 25))

結果正確


def square_of_sum(L): ??

? ? sum = 0

? ? for x in L:

? ? ? ? sum = sum + x*x

? ? return sum

print square_of_sum(set([1, 2, 3, 4, 5]))

print square_of_sum(set([-5, 0, 5, 15, 25]))

結果正確


所以我明白了,剛才為了完成任務的函數代碼,參數其實可以為3個??梢詮暮瘮祲K代碼看出來(只能從這看出來函數參數的類型)


這里只說要List為參數,但是多了2個類型的參數。

假如我寫了一個函數只能接受一個類型的參數,接受其它類型的參數返回結果就不是預期的了。剛好這個函數也可以接受其它參數,但是代碼中不會報錯,這樣程序就會出現問題啊,所以我覺得C語言類型檢查是很用的。




正在回答

2 回答

python里面也有類型檢查的呀,比如你可以在square_of_sum()中定義一下:

if isinstance(L, list): do something,就會只在L為list類型參數時觸發了

0 回復 有任何疑惑可以回復我~
#1

慕瓜5474458 提問者

非常感謝!
2016-08-10 回復 有任何疑惑可以回復我~

謝謝,但是如果傳其它參數,不是list,難道要寫報錯代碼?這樣就麻煩了,語言的機制是沒有類型檢查的

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
初識Python
  • 參與學習       758397    人
  • 解答問題       8967    個

學python入門視頻教程,讓你快速入門并能編寫簡單的Python程序

進入課程

python函數問題,個人突然覺得C語言類型檢查很有用

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號