[20] Python函數(一)

1. 概述

本章將開始介紹函數。最近有點急事沒有怎麼更新,還請大家諒解。

  • 計算機編程的原理簡要介紹
  • 集成開發環境PyCharm
  • 變數名、數字、字元串、列表
  • 句式、注釋
  • 輸入和輸出
  • 條件判斷語句
  • 循環語句
  • 各類數據結構
  • 函數
  • 模塊和引入

2. 函數

函數(function)是程序不可缺少的一部分,使用函數可以大大簡化程序的複雜程度,尤其是我們在需要重複使用某段代碼時,函數的優越性就會顯現出來。我們之前也接觸過各種函數,比如長度函數len(),Python幫我們寫好了並內置了一段代碼,可以數出括弧里的序列有幾個元素,而我們需要做的,只要簡單的敲上len就能數數,不用再費勁去自己寫了。

list1 = [1, 2, 3, 4, 5, 6, ]nlength1 = len(list1)n

這裡面length1就等於6,Python運行時看見len就直接「召喚」了背後的一堆代碼,把list1放進那段默默無聞的代碼,得出結果後賦值給變數length1。

但是代碼畢竟是人打的,彈性和變數比較大,就像程序一樣,Python的內置函數不可能涵蓋我們所有的想像和需求,這時候就需要我們自定義函數。

3. 自定義函數

自定義函數有特定的句型特徵,

def function_name(param1, param2, ...):n # code heren

首先我們要寫def,也就是英文單詞define(定義)的意思,意思是我們定義了一個函數,然後空一格,寫上函數的名字,套上括弧,裡面寫上參數名。我們之後會講到參數,不知道參數的同學不用擔心。函數裡面也可以沒有參數,但是括弧必須有,比如下面這個,

def print1():n print(One)n

我們之後在主要程序中如果要輸出One,我們只要使用該函數print1()就行了,比如這樣:

print1()n

程序看到這個,就會去尋找裡面定義的print1的函數,運行print1的代碼,在屏幕上輸出One。當然,這個print1的函數也是很沒有意思。我們可以寫一些更有用的代碼。

4. Lorem Ipsum

我們肯定在各種網站設計、模版裡面看到過這個東西,

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.n

我們直接去其官網複製下來,Lorem Ipsum官網,這段文字只是用於填空,讓網站模版設計有字的地方別空著,其內容並沒啥特別的意思。如果我們想用Python在程序中輸出這段文字,而且如果程序里要求輸出多遍,我們可以這樣:

print(Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.)n...n...n...nprint(Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.)n

代碼看著就煩,可能邏輯比較清楚,但是由於lorem ipsum太長了,整段代碼也看著很冗雜。這時候我們可以用函數,

def lorem_ipsum():n print(Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.)n

這個樣子我們就把這輸出函數變成了一個函數。我們就可以只要在代碼里寫lorem_ipsum()就能輸出這一大段文字了。

5. 運行帶有函數的程序

接著上面的lorem ipsum,我們在一個程序中可以定義多個函數,

def lorem_ipsum():n print(Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.)nndef de_finibus():n print(Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?)n

如果這上面就是我們程序的所有代碼,我們運行它,會發現儘管有倆輸出print,實際上啥也沒輸出,原因是,他們在函數裡面,如果我們不使用函數,也就是不在主程序中「召喚」函數,這些函數就是僅僅被定義在那,閑著做裝飾,實際上不會被運行。

如果我們在上面代碼後面添加那麼幾行,就可以讓這程序完整,

lorem_ipsum()nde_finibus()n

最後程序看著長這樣,

def lorem_ipsum():n print(Lorem ipsum ... laborum.)nndef de_finibus():n print(Sed ut ... nulla pariatur?)nnde_finibus()nlorem_ipsum()nlorem_ipsum()nde_finibus()n

這裡我就為了美觀把那些長文字中間給手動省略了,大家心裡清楚這代表啥就知道了。程序運行的時候會根據縮進,先運行倒數第四行,也就是我們主程序第一行,我們「召喚」了de_finibus(),程序就會查找這個函數並運行該函數里的代碼,即輸出Sed ut那段文字;接下來倒數第三行(主程序第二行),運行lorem_ipsum(),輸出Lorem ipsum那段文字;接下來我們又用了lorem ipsum,輸出Lorem ipsum那段文字;最後我們又用了de finibus,輸出Sed ut那段文字。

我們可以看到,定義了函數之後,我們可以在主程序中隨時隨地使用,不用重複寫代碼,大大減少了代碼的冗雜程度,使代碼更加靈活。

接下來我會介紹帶有參數的函數、返回語句等重要的函數組成部分。


推薦閱讀:

隨著計算機發展,有2進位、8進位、16進位,為什麼沒32進位、64進位?
SOSP'17 Monotasks: Architecting for Performance Clarity in Data AnalyticsnFrameworks
人臉識別總結
以現有計算機技術,如果造一台可有具有所有人腦思維功能的計算機,那麼這台計算機會佔地多大面積?
得到去msra實習的機會,該怎麼徵求導師同意?

TAG:Python | 计算机科学 | 编程 |