1. 程式人生 > >Python學習第十八篇——低耦合函數設計思想

Python學習第十八篇——低耦合函數設計思想

json格式 轉化 tor pre 感覺 格式 數據格式 思想 方便

 1 import json
 2  2 def greet_user(filename):
 3  3     try:
 4  4         with open(filename) as f_obj:
 5  5             username = json.load(f_obj)
 6  6     except FileNotFoundError:
 7  7         username = input("what is your name?")
 8  8         with open(filename,w) as f_obj:
 9  9             json.dump(username,f_obj)
10 10 print("we‘ll remember you when you come back, "+username+"!") 11 11 else: 12 12 print("hello,"+username+".;") 13 13 14 14 greet_user("username.json")

這段代碼1描述了這樣一個功能,打開“username.json”文件夾,該文件夾中存儲了用戶姓名,如果不存在該文件夾,可以創建該文件夾,並且這裏創建了一個函數來描述這件事情:

該代碼段實際上完成了兩個功能:1 讀取"username.json"文件夾。2 創建“username.json”文件。

實際上,在代碼設計的時候,我們通常應該具有這樣的思想:將我們要做的工作,劃分為具體的代碼函數塊,使得函數看起來更加簡潔,擴展性也越強,在編寫程序的時候,我們應該具備這樣的意識。

下面,將上述的的代碼拆成兩部分功能,代碼2如下:


1 import json


2 def get_stored_username():


3 filename = "username.json"


4 try:


5 with open(filename) as f_obj:


6 username = json.load(f_obj)


7 except FileNotFoundError:


8 return None


9 else:


10 return username


11


12 def greet_user():


13 username = get_stored_username()


14 if username:


15 print("hello,"+username+".")


16 else:


17 username = input("what is your name?")


18 filename = "username.json"


19 with open(filename,"w") as f_obj:


20 json.dump(username,f_obj)


21 print("we‘ll remember you when you come back, "+username+"!")


22 greet_user()



上述代碼完成了函數1的功能。但是函數的耦合程度降低了,因此,寫代碼的時候,需要註意自己的代碼風格,盡量養成低耦合代碼的習慣。

在此,總結一下上述代碼中的一些知識點:

1 json模塊非常好用,首先明確一個重要的概念:json是一種數據交換格式,即本質是數據格式的轉換, 這種格式方便我們信息。

2 json.dump()用於將Python對象編碼成json字符串

3 json.load()將json格式轉化成python對象

將上述2抽象一下,變成我們將我們Python中的比如字符串,整型數,字典,列表,這些存儲在一個文件在.json的文件類型中

將3抽象一下,變成,將.json類型的文件加載成字符串,整型數等等。

如果不考慮數據的本質,我們可以認為,這就是簡單的寫文件和讀文件的操作

4 代碼2中的第八的return None,None是一個關鍵字(姑且這麽叫),我們再看代碼2中第十四行代碼 if username,可以發現,可以感覺username,None來判斷邏輯值,實際上:

python 中,None,空列表[],空字典{},空元組(),0都一系列代碼空和無的對象都會被轉化成Flase,其他表示1,真,有的對象被轉化成True

5 代碼2中的第10行代碼,表示Python中的函數返回值類型可以是任意你想要的值,包括數值,字符串,列表,字典等,因此在寫函數的時候,要註意靈活使用。

Python學習第十八篇——低耦合函數設計思想