天天看點

Python之路【3】:Python基礎(二) 函數的了解

面向過程:根據業務邏輯從上到下寫壘代碼

函數式:将某功能代碼封裝到函數中,日後便無需重複編寫,僅調用函數即可

函數作用是你的程式有良好的擴充性、複用性。

同樣的功能要是用3次以上的話就建議使用函數。

标注:不能死記,

函數可以了解為一個一個的功能塊,你把一個大的功能拆分成一塊一塊的,用某項功能的時候就去調用某個功能塊即可!

函數可以了解為:樂高積木,給你一塊一塊的,你可以用這些積木塊組成你想要的任何,功能!

函數可以調用函數!主函數的作用就是把函數進行串聯、調用!函數本身是不能自己執行的如果你不調用就永不執行!

一、背景

在學習函數之前,一直遵循:面向過程程式設計,即:根據業務邏輯從上到下實作功能,其往往用一長段代碼來實作指定功能,開發過程中最常見的操作就是粘貼複制,也就是将之前實作的代碼塊複制到現需功能處,如下

上面的代碼是就面向過程的程式設計,但是如果報警多了的話成百的代碼需要添加如何操作呢?複制粘貼那會死人的!在看下下面的代碼:

第二次必然比第一次的重用性和可讀性要好,其實這就是函數式程式設計和面向過程程式設計的差別:

面向過程:更具需求一行一行壘代碼!邏輯亂、并切代碼重複、不易修改重用性差!

面向對象:對函數進行分類和封裝,讓開發“更快更好更強...”

二、函數式程式設計

函數式程式設計最重要的是增強代碼的重用性和可讀性:

函數的定義主要有如下要點:

def:表示函數的關鍵字

函數名:函數的名稱,日後根據函數名調用函數

函數體:函數中進行一系列的邏輯計算,如:發送郵件、計算出 [11,22,38,888,2]中的最大數等...

參數:為函數體提供資料

傳回值:當函數執行完畢後,可以給調用者傳回資料。

1、傳回值

函數是一個功能塊,該功能到底執行成功與否,需要通過傳回值來告知調用者。

2、參數

為什麼要有參數?看下下面的例子:

如果不定義參數,用函數的話:(每個有相同功能的都寫個函數,說好的代碼簡化呢?

使用函數:(代碼明顯少了很多,把重複的内用改為參數調用!)

函數的有三中不同的參數:

普通參數

預設參數

動态參數

普通參數:

但是普通參數有個問題!你在定義參數的時候定義了幾個參數,你在調用的時候必須給他幾個參數否則就報錯!

預設參數:

在你沒有給他指定參數的時候他就會使用預設的參數!

動态參數:

動态參數顧名思義就是可以動态的去擴充函數參數的數量!

例子:1 (多個單個變量,整合成元組)

例子:2(整合為字典變量)

例子:3(整合了*args,**args)

擴充:發郵件執行個體

import

smtplib

Python之路【3】:Python基礎(二) 函數的了解

内置函數:(就是python把各個子產品中常用的一些方法給拿出來友善使用)

常用的記住之後,要知道怎麼去查:

看下面的例子:

在看下面的例子:

總結:函數的作用域就是在函數裡定義的變量不能被外面使用!但是外部全局定義的全局變量在函數内是可以使用的。

舉個例子來說:你在房子裡可以看到屋内的東西和房子歪的東西,但是你在房子外面就隻能看到房子外的東西不能看到房子内的東西!

原因防止在函數調用的時候防止變量沖突!

問題:我在外面定義的全局變量在函數内可以改他嗎?  #看下面的例子:

但我就是想在函數裡改變全局變量是否可以呢?可以!

return 一般寫在函數的末尾,一般你想看函數的執行結果!然後判斷後面的程式。看下面的例子

操作檔案時,一般需要經曆如下步驟:

打開檔案

操作檔案

一、打開檔案

打開檔案時,需要指定檔案路徑和以何等方式打開檔案,打開後,即可擷取該檔案句柄,日後通過此檔案句柄對該檔案操作。

打開檔案的模式有:

r,隻讀模式(預設)。

w,隻寫模式。【不可讀;不存在則建立;存在則删除内容;】

a,追加模式。【可讀;   不存在則建立;存在則隻追加内容;】

"+" 表示可以同時讀寫某個檔案

r+,可讀寫檔案。【可讀;可寫;可追加】

w+,無意義

a+,同a

"u"表示在讀取時,可以将 \r \n \r\n自動轉換成 \n (與 r 或 r+ 模式同使用)

ru

r+u

"b"表示處理二進制檔案(如:ftp發送上傳iso鏡像檔案,linux可忽略,windows處理二進制檔案時需标注)

rb

wb

ab

二、操作

三、with方法

 為了避免打開檔案後忘記關閉,可以通過管理上下文,即:(建議使用此方法打開檔案)

如此方式,當with代碼塊執行完畢時,内部會自動關閉并釋放檔案資源。

在python 2.7 後,with又支援同時對多個檔案的上下文進行管理,即:

例子:比如要修改nginx.conf 檔案然後還的復原怎麼做?