python學習 程式的解耦

2021-09-25 17:05:23 字數 3490 閱讀 7421

---

----

----

----

----

----

----

----

----

----

----

----

----

----

----

----

----

- 注:如果你對python感興趣,我這有個學習python基地,裡面有很多學習資料,感興趣的+q群:688244617--

----

----

----

----

----

----

----

----

----

----

----

----

----

----

----

----

-import os

deffile_handler

(backend_data,res=

none

,type

='fetch'):

# 查詢功能

iftype

=='fetch'

:with

open

('test_new.txt'

,'r'

)as read_f:

ret =

tag =

false

for read_line in read_f:

if read_line.strip(

)== backend_data:

tag =

true

continue

if tag and read_line.startswith(

'backend'):

break

if tag:

print

(read_line,end='')

return ret

iftype

=='change'

:# 修改功能

with

open

('test_new.txt'

,'r'

)as read_f, \

open

('test_new.txt_new'

,'w'

)as write_f:

tag =

false

has_write =

false

for read_line in read_f:

if read_line.strip(

)== backend_data:

tag =

true

continue

if tag and read_line.startswith(

'backend'):

tag =

false

ifnot tag:

write_f.write(read_line)

else:if

not has_write:

for record in res:

write_f.write(record)

has_write =

true

os.rename(

'test_new.txt'

,'test_new.txt.bak'

) os.rename(

'test_new.txt_new'

,'test_new.txt'

) os.remove(

'test_new.txt.bak'

)def

fetch

(data)

:print

('您輸入的資訊是:'

,data)

backend_data=

'backend %s'

% data

return file_handler(backend_data)

defchange

(data)

:print

('開始修改功能'

)print

('使用者輸入的資訊是:'

,data)

backend=data[0]

['backend'

] backend_data=

'backend %s'

%backend

old_server_record =

'%s server %s %s\n'%(

*9,data[0]

['record'][

'server'])

new_server_record =

'%s server %s %s\n'%(

*9, data[1]

['record'][

'server'])

print

('您想要修改的記錄:'

,old_server_record)

res=fetch(backend)

print

(res)

ifnot res or old_server_record not

in res:

return

'您要修改的資訊不存在'

else

: index = res.index(old_server_record)

res[index]

=new_server_record

res.insert(0,

'%s\n'

%backend_data)

file_handler(backend_data,res=res,

type

='change'

)if __name__==

'__main__'

: msg=

''' 1:查詢

2:修改

5:退出

'''msg_dic=

while

true

:print

(msg)

choose =

input

('請輸入您要的選項:'

).strip()if

not choose:

continue

if choose ==

'5':

break

data =

input

('請輸入您的資訊:'

).strip(

)if choose !=

'1':

data =

eval

(data)

res = msg_dic[choose]

(data)

# 查詢到的結果放到乙個列表裡輸出

print

('最終的結果:'

,res)

程式中的耦合與解耦學習(二) 內聚性

內聚性 cohesion 也稱為內聚力,是一軟體度量,是指機能相關的程式組合成一模組的程度,或是各機能凝聚的狀態或程度。是結構化分析的重要概念之一。量測內聚性的方式很多,有些方法是由分析源 得到非量化的結果,有些方法則是檢查源 的文字特徵,以得到內聚性的量化分數。內聚性是屬於順序式的量測量,一般會以...

關於解耦的思考

前言 以前記得在知乎上看過,乙個神奇的例子,大致上來說就是乙個手機接觸到了金屬湯匙,結果手機顯示檢測的未知裝置。其實從一方面看來這也算是乙個 復用的思想吧。在設計程式的時候,我們都會盡力提高 的復用性,這也導致在方法中會產生依賴的關係,但是對於使用者而言,依賴關係會新增諸多的限制,因此在設計程式的時...

解耦的簡單理解

重用性是物件導向設計的主要目標之一,而緊耦合便是它的敵人。當我們看到系統中乙個元件的改變迫使系統其他許多地方也發生改變的時候,就可以診斷為緊耦合了。簡單實現 class registrationmgr abstract class notifier else abstract function in...