一、定義和呼叫函式
1. 定義函式
格式
functionname:函式名
parameterlist:引數。可以為空,可以為多個引數,用逗號隔開
comments:可選引數
functionbody:可選引數,語句體呼叫函式後要執行的功能程式碼
函式:系統函式、自定義函式
呼叫函式:
呼叫函式就是執行函式
系統函式、自定義函式都是用函式名來呼叫
pass空語句:不做任何事情,起到佔位作用,可以用…來代替pass
自定義函式
num1、num2、str都是函式的引數,在函式體中,函式類似於變數
函式呼叫、呼叫函式
計算兩個數相加
2。 引數和返回值
主調函式和被呼叫函式之間一般都有資料傳遞關係
引數:
形參:定義函式時,括號裡的引數
實參:呼叫函式時,函式後面的引數
引數的作用是傳遞資料給函式使用
實參:
值傳遞:實參為不可變物件時,改變形參的值,實參值不變
引用傳遞:實參為可變物件時,改變形參的值,實參的值也會改變
位置引數(必備引數)
必須按照正確的順序傳遞到函式中,即呼叫時數量和位置必須與定義的相同
關鍵字引數:使用形參的名字來輸入引數的值,不需要與形參的的位置一致
例1
:
引數傳遞
列表作為引數傳遞
這裡在最後的一個輸出會多一個號,可以最佳化
字典作為引數傳遞
可變引數(不定引數)
傳入函式中的實際引數可以是0個、1個或多個
可變引數的兩種形式:
*parameter——接受任意多個實際引數並將其放到一個元組中
**parameter——接受任意多個顯示賦值的實際引數,並將其放到一個字典中
使用已存在的列表作為函式的可變引數,在列表名稱前加
使用已存在的字典作為函式的可變引數,可在字典的名稱前面加
返回值
作用:將函式處理的結果返回給呼叫它的程式
返回值不是必須的,如果沒有return語句,預設返回None
返回值可以是任意型別,只要return得到執行,就會直接結束函式的執行
返回一個值,該值可以是任意型別
返回多個值,儲存為一個元組
例
:輸出一個列表中的偶數
二、變數的作用域
作用域
指程式程式碼能夠訪問該變數的區域,即變數的有效範圍
區域性變數
:
在函式內部定義的變數,只能在函式內使用
只在函式執行時建立,執行之前、之後都不存在
全域性變數
:
在函式外定義的變數
函式內定義,但是用global關鍵字修飾後的變數
在定義後的任何地方都有效
如果全域性變數和區域性變數重名,函式體內只有區域性變數有效
例
:
三、匿名函式
python使用lambda來建立匿名函式
lambda是一個表示式,函式體比def簡單
lambda的主體是表示式,不是程式碼塊。僅能在lambda表示式中封裝有限的邏輯
lambda函式擁有自己的名稱空間,不能訪問自有引數列表以外或全域性命名空間裡的引數
語法:
匿名函式主要應用在需要一個函式而不必去命名這個函式
lambda函式看似只能寫一行,卻不同於C或C++的行內函數
行內函數的目的是呼叫小函式時不佔用棧記憶體從而增加執行效率
lambda優勢:
更精簡,省略定義普通函式的過程,適合寫指令碼
提高了程式碼可讀性
替代比較抽象且呼叫次數不多的函式,簡化命名
四、內建函式
1。 數值運算函式
2。 字串處理函式
例
:
數學運算函式
字串處理函式
拓展
:
透過指定分隔符對字串進行切片
語法:
str – 分隔符,預設為所有的空字元,包括空格、換行(\n)、製表符(\t)等
num – 分割次數。預設為 -1, 即分隔所有
如果第二個引數 num 有指定值,則分割為 num+1 個子字串。
按照行(’\r’, ‘\r\n’, \n’)分隔,返回一個包含各行作為元素的列表
語法:
keepends – 在輸出結果裡是否去掉換行符
預設False,不包含換行符
True則保留換行符
將序列中的元素以指定的字元連線生成一個新的字串
語法:
sequence – 要連線的元素序列
五、其他常用內建函式
1。 help()
檢視命令幫助手冊
2。 type()
檢視變數型別
作業練習
: 答案參考【https://urlify。cn/a6Vreq】
定義一個getMax( )函式,返回三個數(從鍵盤輸入的整數)中的最大值
定義一個函式,判斷輸入的三個數字是否能夠構成三角形的三條邊
定義一個函式,求兩個正整數的最小公倍數
編寫函式,可以接收任意多個整數並輸出其中的最大值和所有整數之和
-END-