Pytohn自定義函數基本操作
本章包含知識點
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自定義函數基本操作