天天看點

python從入門到實踐.mobi_Python程式設計從入門到實踐日記Day30

Python程式設計從入門到實踐日記Day30

第7章 函數(六)

1.傳遞清單

向函數傳遞清單很有用,這種清單包含的可能是名字、數字或更複雜的對象(如字典)。将清單傳遞給函數後,函數就能直接通路其内容。下面使用函數來提高處理清單的效率。

假設有一個使用者清單,我們要問候其中的每位使用者。下面的示例将一個名字清單傳遞給一個名為greet_users()的函數,這個函數問候清單中的每個人:

python從入門到實踐.mobi_Python程式設計從入門到實踐日記Day30
我們将greet_users()定義成接受一個名字清單,并将其存儲在形參names中。這個函數周遊收到的清單,并對其中的每位使用者都列印一條問候語。在第六行代碼處,我們定義了一個使用者清單—usernames,然後調用greet_users(),并将這個清單傳遞給它:
python從入門到實踐.mobi_Python程式設計從入門到實踐日記Day30

輸出完全符合預期,每位使用者都看到了一條個性化的問候語。每當你要問候一組使用者時,都可以調用這個函數。

—  在函數中修改清單

将清單傳遞給函數後,函數就可對其進行修改。在函數中對這個清單所作的任何修改都是永久性的,這讓你能夠高效地處理大量的資料。

來看一家為使用者送出的設計制作3D列印模型的公司。需要列印的設計存儲在一個清單中,列印後移到另一個清單中。下面是在不使用函數的情況下模拟這個過程的代碼:

python從入門到實踐.mobi_Python程式設計從入門到實踐日記Day30
我們首先建立一個需要列印的設計清單,還建立一個名為completed_models的空清單,每個設計列印都将移到這個清單中。隻要清單unprinted_designs中還有設計,while循環就模拟列印設計的過程:從該清單末尾删除一個設計,将其存儲到變量current_design中,并顯示一條消息,指出正在列印目前的設計,再将該設計加入到清單completed_models中。循環結束後,顯示已列印好的所有設計:
python從入門到實踐.mobi_Python程式設計從入門到實踐日記Day30
為重新組織這些代碼,我們可編寫兩個函數,每個都做一件具體的工作。大部分代碼都與原來相同,隻是效率更高。第一個函數将負責處理列印設計的工作,而第二個将概述列印了哪些設計:
python從入門到實踐.mobi_Python程式設計從入門到實踐日記Day30

在第一行代碼處,我們定義了函數print_models(),它包含兩個形參:一個需要列印的清單和一個列印好的模型清單。給定這兩個清單,這個函數模拟列印每個設計的過程:将設計逐個地從未列印的設計清單中取出,并加入到列印好的模型清單中。在第十二行代碼處,我們定義了函數show_completed_models(),它包含一個形參:列印好的模型清單。給定這個清單,函數show_completed_models()顯示列印出來的每個模型的名稱。

這個程式的輸出與未使用函數的版本相同,但組織更為有序。完成大部分工作的代碼都移到了兩個函數中,讓主程式更容易了解。

_

如果大家有什麼好的意見或建議,記得留言哦!

繼續閱讀