1. 程式人生 > >產品經理學Python:參數傳遞方式

產品經理學Python:參數傳遞方式

暫時 ace 微信公眾 聯網 替代 strong 變參 lose 創建刪除

這是關於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,如果桌面沒有這個可以寫入的文件時,會創建一個再寫入。

 1
def 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:參數傳遞方式