產品經理學Python:參數傳遞方式
這是關於Python的第5篇文章,主要介紹下參數傳遞方式和如何設計自己的函數。
(一)
本篇主要介紹2種參數傳遞方式。
位置參數
調用函數時,根據函數定義的參數位置來傳遞參數。
1 def right_triangle_area(a,b): 2 return 1/2*a*b 3 4 print(right_triangle_area(3,4)) 5 # 位置參數傳遞
求直角三角形面積,a、b分別為兩條直角邊,這裏調用函數時使用的是位置參數傳遞。在位置參數傳遞中,參數的順序是不可改變的。
關鍵詞參數傳遞
在調用函數時,通過“鍵=值”的形式加以指定。可以讓函數更加清晰、容易使用,無需考慮參數順序。
1 def right_triangle_area(a,b): 2 return 1/2*a*b 3 4 print(right_triangle_area(b=4,a=3)) 5 # 關鍵詞參數傳遞
還有一些類型是默認參數和可變參數等,目前我暫時用不到,就不做詳細分享,有興趣的可以自行百度。
(二)
設計自己的函數
之前介紹了字符串的方法和如何創建函數,這裏將前面的學到的內容整合起來,設計一個簡易的敏感詞過濾器。
1. 傳入參數name(文件名)和msg(信息內容)就可以在桌面寫入文件名稱和內容的函數text_create,如果桌面沒有這個可以寫入的文件時,會創建一個再寫入。
1def text_create(name,msg): 2 # 創建文件,寫入信息 3 desktop_path = ‘/Users/duwangdan/Desktop/‘ 4 # 桌面路徑 5 full_path = desktop_path + name + ‘.txt‘ 6 # 桌面路徑+文件名+文件後綴 7 file = open(full_path,‘w‘) 8 # ‘w‘參數指寫入 9 file.write(msg) 10 # 文件中寫入信息 11 file.close() 12 # 寫入後關閉文件
在上一篇《產品經理學Python:學會創建並調用函數》中提到,定義函數後需要return返回結果。在Python中,return是可選項,沒有return也可以直接定義函數並順利調用,當不寫時,代表返回值是‘None’。
這時敏感詞過濾器的第一部分已完成。
2. 定義一個名為text_filter的函數,傳入參數word,cencored_word(敏感詞)和changed_word(替換詞),cencored_word默認給定‘Awesome’,用changed_word默認空值來替代,實現敏感詞過濾。
1 def text_filter(word,censored_word=‘Awesome‘,change_word=‘‘): 2 # 文本過濾函數 3 return word.replace(censored_word,change_word) 4 # 用replace()方法替換敏感詞
3. 定義一個名為censored_text_create的函數,傳入參數name(文件名),msg(信息),使用第2個函數text_filter,將傳入的msg過濾後儲存在clean_msg中,再將傳入的name和過濾好的clean_msg作為參數傳入text_create函數中,調用censored_text_create函數,可以得到過濾後的文本。
1 def censored_text_create(name,msg): 2 # 創建刪除敏感詞後的文本函數 3 clean_msg = text_filter(msg) 4 # 過濾掉msg中的敏感詞 5 text_create(name,clean_msg) 6 # 傳入name和clean_msg到text_create函數中 7 8 censored_text_create(‘test‘,‘Math is Awesome!‘) 9 # 調用函數
完成以上三步後,我們可以得到自己設計的文本過濾器了。
完整代碼如下:
1 def text_create(name,msg): 2 desktop_path = ‘/Users/duwangdan/Desktop/‘ 3 full_path = desktop_path + name + ‘.txt‘ 4 file = open(full_path,‘w‘) 5 file.write(msg) 6 file.close() 7 8 9 def text_filter(word,censored_word=‘Awesome‘,change_word=‘‘): 10 return word.replace(censored_word,change_word) 11 12 13 def censored_text_create(name,msg): 14 clean_msg = text_filter(msg) 15 text_create(name,clean_msg) 16 17 censored_text_create(‘test‘,‘Math is Awesome!‘)
操作環境:Python版本,3.6;PyCharm版本,2016.2;電腦:Mac
----- End -----
作者:杜王丹,微信公眾號:杜王丹,互聯網產品經理。
產品經理學Python:參數傳遞方式