1. 程式人生 > >Pytohn自定義函數基本操作

Pytohn自定義函數基本操作

htm 函數功能 都沒有 proc stat 運算 watermark 傳遞參數 普通


本章包含知識點

1、定義函數;

2、變量和全局變量區別;

3、形參,實參,默認參數;

4、多參傳遞,榮譽處理;

運行環境 ipython ,交互功能比python清晰,明了。

函數介紹

函數是編程語言當中非常重要的組成部分

會寫到 三個部分

?自定義函數、

?函數中定義傳遞參數、

?變量的作用域

一個腳本當中 一個功能要反復的出現,一般會使用函數。 功能更多 會定義個類。

只會定義數據類型還是不夠的。

有的時候 會執行一堆動作,就要用到函數。

從數學函數過渡到Python 函數


?數學函數
?f(x >3*x
提供X值,函數進行3倍運算,並返回對應值
?F (x,y) x*y
可以有多個參數,作為輸入
?返回復合對象,作為輸出

數學函數 定義方法

數學函數當中給它一個值,返回一個結果。

涉嫌到 定義 函數 接收參數,在函數當中進行*2倍的運算,然後返還,這種參數可以有多個,作為數據的輸入。輸入到函數裏面去,函數拿到數據後,處理完了,作為輸出,這就是一個基本函數運行的過程。

python函數和數學函數 相差不大

?python函數

?執行單獨的操作

?采用零個或者多個參數作為輸入

?經過處理, 得到返回值(單個或復合對象) 作為輸出

python 函數使用第一個案例。

1. 定義一個函數,名字為a3,需要得到一個值為x

2. 返回並且進行運算x*2

調用方法

用名字a3, 傳遞一個值為10。這個值就傳遞了給了x,x拿到函數裏面去,進行*2,return返回值。

這就是一個輸入、操作、返回的過程。

用 python寫一個自定義函數

解釋器環境為 ipython 內含交互

def是關鍵字

技術分享圖片

def知識,在python中 def即使對象,也是函數。

因為def定義了一個模塊變量,或者說是類的變量,它本身是一個函數對象,屬於對象的函數就是對象的屬性,當然,你也可以叫他"方法"。

python 的函數和其他語言的函數有很大區別。它是可以被其他變量覆蓋的

叫做函數或者方法都可以。

看你的習慣,因為python裏一切皆為對象,所以叫方法總是沒錯的,同時python也不反對面向過程的編程,於是叫函數也沒錯.
一般情況,我把類中def的叫作方法,把py腳本中縮進為零的def叫做函數.

參考百度百科回答 python裏def:是叫函數還是方法?


函數



? 定義: 函數就是完成特定功能的一個語句組,這組語句可以作為一個單位
使用,並且給它取一個名字。
? 調用: 可以通過函數名在程序的不同地方多次執行(這通常叫做函數調
用),卻不需要在所有地方都重復編寫這些語句。
?自定義函數
? 用戶自己編寫的
? 預定義的Python函數
?系統自帶的一些函數,可以直接使用

為什麽使用函數


?降低編程的難度
?復雜的大問題分解成一系列更簡單的小問題,小問題繼續劃分成更小的問題,當
問題細化為足夠簡單時,我們就可以分而治之。這時,我們可以使用函數來處理
特定的問題,各個小問題解決了,大問題也就迎刃而解了。
?代碼重用
?我們定義的函數可以在一個程序的多個位置使用,也可以用於多個程序。此外,
我們還可以把函數放到一個模塊中供其他程序員使用,同時,我們也可以使用其
他程序員定義的函數。這就避免了重復勞動,提供了工作效率。

定義和調用
def
functionN ame (parameter1,parameter2) :

"" "註釋” " " 函數是做什麽用的
statement1
statement2
rerurn
valueToReturn

不 return 就會只是一個空值。

functionName (x,y )

定義名字是有規定的,

如果只有一個單詞 全小寫,

如果有兩個以上後面單詞第一個字母要大寫。

後面可以有參數,可以沒有。

函數返回值改成 print ,沒有返回值,返回的會是空值,

函數功能變了,變成打印數據。

調用它的話,就變成打印數據了,

雖然調用的時候,功能上感覺沒什麽區別,但是,註意交互 返回Out沒有了,

我們可以接收到這個返回值 r = a3(10) ,發現r裏面是空的沒有東西返回。

因為沒有 顯示語句,不會接受到信息,就不會返回信息。

返回值看需求 ,一般都會留一個返回值。

技術分享圖片

把概念搞清楚

返回值

變量作用域

實參、形參、默認參數、

多參數及冗余處理

返回值第二個例子

返回絕對值。

技術分享圖片返回值,給調用者,

誰執行了,誰就是調用者;

函數返回值

函數被調用後會返回一個指定的值

函數調用後默認返回None

?return 返回值

?返回值可以是任意類型

? return執行後,函數終止

? 區分返回值和輸出

return 執行後,函數終止案例

第一個函數為 打印操作,

指定值為a,返回的結果為 函數內語句全部執行;

第二個函數操作第二個操作為 返回 結果;

指定值為a,返回結果為 start,執行到 return函數就會終止很明顯體現。

這種結構下面代碼雖然是沒有 意義的,但是如果在 if 不同分支下,return出不同結果,還是很有用的。

函數的返回值,是返回給調用者的。輸出是雖然也是在屏幕上,但是那個是程序輸出的結果。

技術分享圖片

變量的作用域例子

把概念搞清楚

?變量作用域

?實參、形參、默認參數

?多參數及冗余處理

定義函數

定義函數 和定義變量是不一樣的,定義函數過後,函數裏面的變量是不能被直接使用的。報錯 顯示 未定義名稱

變量 b = 100

直接生效,返回100

定義變量 會立即生效;

技術分享圖片

技術分享圖片

雖然b定義變量 b= 100

定義函數裏面 定義b = 20

但是函數並沒有被調用,所以變量b = 20不會被執行的。

技術分享圖片

既然沒有被 執行,那下面就執行一下。

執行的時候就相當於 f = 10,看了下 b的返回值,還是100;原因在於,函數在執行的時候,僅在函數當中執行,對於外面的全局變量是不受任何影響的,外面的b是多是,是沒有任意關系的。

技術分享圖片

叫做 變量的作用域

在腳本當中,或者程序當中直接定義的變量都叫做 全局變量,在函數或類當中,這樣的變量叫做局部變量,只在函數內部起作用對外部是沒有任何影響的。

變量作用域

如果經過操作之後,想讓個值 變成 全局變量或者把外面全局變量的值進行更改,該怎麽辦?

這個時候就用到 下面所講的

變量 作用域

強制聲明為全局變量

?語法為global

如果你要把一個局部變量,變成全局變量也是可以的。

技術分享圖片

在函數裏面先 聲明 b是全局變量

查看之前的全局變量 b 此時為 100

使用 函數 後 變量 b 也為 10.全局變量生效。

把全局變量 b的 標簽 指到了 b上面。

這就是全局變量和局部變量。

目前大概了解一下,函數外面的變量 和 函數裏面的變量;

參數

本文開頭 二倍運算的時候,我們還定義了一個東西,括號裏面的數,稱之為 參數,這個可以賦值,可以調用。

技術分享圖片

參數雖然分為 實參、形參、默認參數、在python當中。只需要看到括號裏面的數,稱之為 參數就行了。如果別人問,還是需要知道什麽為實參、形參、默認參數、=。=

參數(量)
?def fun(形參)
?fun()
?x是默參數)
?deffun (x=0)

定義函數的時候,括號裏面的形參 稱之為 形式參數

調用函數 傳值時,實際的那個值,就是它的實參

我在定義函數的時候,給某一個值,指定了一個值,就是它的 默認參數

參數 例子

技術分享圖片這個叫做 形式 參數,因為你不知道 它的值是什麽,只是定義了一個x。說它是個參數。

技術分享圖片當調用這個函數的時候,需要傳值了,傳了一個20,這個20就是 實際參數。但我在運行這個程序的時候,會把這個這個值帶入 x,x帶入函數當中,裏面的操作就是 函數的事情。

還有可能出現一種情況,f2這個值定義了一個 x,它就必須要傳遞一個參數,如果不傳參數,

就不知道f2裏面有沒有參數。

那麽執行的時候就會報錯。

技術分享圖片

可以看到 第一個 函數帶入,執行了內容,x = 2 乘2

第二個 不給參數,函數執行了 默認參數。x = 3 乘2

所以這個就叫做 默認參數

技術分享圖片

如果傳遞多個參數 也是不行的,

但是 有一種 情況是可以 解救的,不傳參數就行了,

不傳參數 ,那麽就在定義參數的時候,給他一個默認參數。

技術分享圖片

通過以上案例了解,

什麽 是--形式參數--實際參數---默認參數

多參數例子

參數搞清楚了,下面就是多參數,

以上執行的參數 都是只有一個參數

如果 定義復雜一點的,比如說要定義一個 餅幹機器,

技術分享圖片

這就是多個參數了,運用 元祖做的。定義函數的時候可一指定多個參數,那麽多個參數當中,還有一些參數,我想給他默認值,那就要設計一下 參數的順序了。

因為通常來講,我們傳遞值的時候,是從左向右給他賦值的,所以你要是給它 默認值的話 就要 從右向左,給他默認值。列入下面第二個例子

多參數例子 二

技術分享圖片

註意 如果是設置 默認參數,多參數的話,一定是從右向左。

因為將來,你傳遞 值 5的時候,是從左往右,將來調試的時候,x = 5 ,y什麽都沒有的話,傳進來 草莓的,會給 x ,y是什麽都得不到的。

所以註意 默認參數的 設置方式,一定是 從右向左去。

或者全部設置成默認參數,直接使用默認參數。

技術分享圖片

多參數傳遞

技術分享圖片

如果定義好 一個 普通的列表,對函數使用看起來可以調用。

結果為失敗, 原因是因為x 參數得到值後進行操作,先第一個賦值給%d,得到一個字符串,而%d要的整數,數字,到這裏面就運行不下去了。

如果你想傳遞一個 列表或者元祖的話,只需要在前面傳遞一個*號,這樣會把裏面的列表或元祖進行一個拆分,分別賦值給函數,但是如果參數不統一的話,也是不可以的。

技術分享圖片

列表傳值

傳遞多個參數進去使用函數時,前面添加*號 函數名 [*x]

技術分享圖片

字典傳值

當然除了列表,還有一直類型這種傳值,那就是字典。

和列表不一樣的地方 就是 在加一個 *號 就可以了。

函數名{**x}

技術分享圖片

字典是取決於 字典中的 k,如果k和函數定義的不一樣的,那麽就不能執行。

技術分享圖片

這就是 傳值。

當你定義,一個可以多參數的函數的時候,你可以傳遞列表,也可以傳遞字典。

也會發現 傳遞的過多,或者過少的話的情況,

看下面的舉例,

技術分享圖片

這個時候就設計到,冗余處理

冗余處理

當你傳遞的參數幣,定義好的函數多的時候,就該用到 冗余處理,

冗余處理是在函數定義的時候就進修改;

如果只能接受兩個值,那麽就定義一個參數去接受多余的。

定義參數的信息,前面加 *號。

此為第一種,以類似字典形式存取值;

技術分享圖片

第二種方式

如果是單個參數,還是可以冗余處理的,

可如果,指定了 key和value,鍵值對的這種值

元祖接收不了 ,應該是一個字典。

技術分享圖片

所以在函數裏面再次進行修改,在加一個,傳遞字典是兩個*號。接收 也是兩個*號。

讓冗余 變成字典存儲裏面。

技術分享圖片

通過本章,

1知道如何定義一個函數,

函數的工作過程就是,傳遞給它一個值,它進行處理,在返回給我們。

2定義函數過程

函數的返回值的重要性

3函數裏面的變量,和全局變量的區別,如何申明為全局變量

4明白什麽是 形參,實參,什麽是默認參數。

5知道怎麽去處理 多參數的傳遞,和冗余處理。關於自定義函數的基本內容

2018年1月13號 王宇林




Pytohn自定義函數基本操作