1、定義函式:
def 函式名(引數列表):
函式體
形參–函式完成其工作所需的一項資訊
實參–呼叫函式時傳遞給函式的資訊
def
name
(username)
:#函式內部的引數為形參
print
('姓名:'
, username.title())
name(
'alice'
)#呼叫函式時,傳遞給函式的資訊
輸出:姓名: alice
2、引數傳遞:
①位置引數:傳入的引數(實參)按照形參的順序傳遞。
注1:若是實參型別是同一型別,則結果會與預期不符。
注2:如果實參型別是不同型別,且沒有按照順序傳遞實參則會在程式執行過程中報錯。
②關鍵字引數:傳入引數(實參)可以不考慮順序。在傳入實參時將名稱與值關聯。
例:讓輸出結果為name為alice,輸出結果age為20。
def
name
(username,age)
:print
('name:'
, username.title())
print
('age:'
, age)
name(age =
20,username =
'alice'
)#按照關鍵字傳入實參不需要考慮順序
輸出:
name: alice
age: 20
③預設引數:在定義函式時,直接給其中乙個引數乙個預設的值,若呼叫函式的時候沒有傳遞這個引數,則採用預設值。
def
name
(username,age =18)
:print
('username:'
, username.title())
print
('age:'
, age)
'''函式的重複呼叫'''
name(
'alice',20
)#使用函式呼叫時傳入的引數
print
('\n'
)name(
'alice'
)#使用預設引數
輸出:
username: alice
age: 20
username: alice
age: 18
④等效的函式呼叫:位置引數、關鍵字引數、預設引數可混合使用。
⑤不定長引數:加了乙個星號(*)的引數會以元組(tuple)的形式匯入。加了兩個星號(**)的引數會以字典(dictionary)的形式匯入。
例:以元組形式匯入
def
name
(username,
*hobby)
:print
('username:'
, username.title())
print
('hobby:'
, hobby)
name(
'tom'
)print
('\n'
)name(
'alice'
,'playgames'
,'football'
,'basketball'
)
輸出:
username: tom
hobby: ()
username: alice
hobby: ('playgames', 'football', 'basketball')
注:例如上述當沒有給*hobby指定引數時,它就是乙個空的元組。
例:以字典形式匯入
def
name
(username,
**hobby)
:print
('username:'
, username.title())
print
('hobby:'
, hobby)
name(
'tom'
)print
('\n'
)name(
'alice'
,intersting =
'playgames'
,hobby =
'football'
)
輸出:
username: tom
hobby: {}
username: alice
hobby:
⑥傳遞列表
向函式中傳遞引數列表,列表可能是名字、數字、或者更複雜的物件(比如:字典)。將列表傳遞給函式後,就可以之間訪問其中的內容。
def
users
(usernames)
:for name in usernames:
message =
"hello,"
+ name.title(
)print
(message)
names =
['alice'
,'tom'
,'jack'
,'rose'
]users(names)
#呼叫函式將列表傳輸其中,並且直接訪問
輸出:
hello,alice
hello,tom
hello,jack
hello,rose
3、匿名函式
使用lambda來建立匿名函式,匿名函式是指不在使用def語句這樣的標準形式定義函式。
①lambda簡述:
★lambda只是乙個表示式,函式體比def簡單的多。
★lambda的主體是乙個表示式,而不是乙個**塊。僅能在lambda表示式中封裝有限的邏輯進去。
★lambda函式擁有自己的命名空間,且不能訪問自己引數列表之外或全域性命名空間裡的引數。
②語法結構
lambda [引數1[,引數2,…引數n]]:表示式
例:
#使用lambda定義函式
sum=
lambda a,b : a + b
#呼叫sum函式
print
('add:'
,sum(2
,3))
輸出:add: 5
4、返回值(return):以舉例形式說明
①返回簡單值:
def
name
(first_name,last_name)
: full_name = first_name +
' '+ last_name
return full_name.title(
)#使用renturn返回簡單值
username = name(
'thomas'
,'edison'
)print
(username)
輸出:thomas edison
②利用條件控制語句使得實參變成可選的
def
name
(first_name,last_name,middle_name ='')
:#使用預設引數,並且置為空字元,使得引數可選
if middle_name:
full_name = first_name +
' '+ middle_name +
' '+ last_name
else
: full_name = first_name +
' '+ last_name
return full_name.title(
)username1 = name(
'thomas'
,'edison'
,'alva'
)print
(username1)
username2 = name(
'thomas'
,'tom'
)print
(username2)
輸出:
thomas alva edison
thomas tom
③返回字典
def
name
(first_name,last_name)
: person =
#使用變數儲存為字典的形式
return person
username = name(
'thomas'
,'edison'
)print
(username)
輸出:
python3筆記 函式
建立函式 def 函式名 引數列表 函式語句 函式的命名規則 乙個單詞直接小寫 多個單詞,每個單詞小寫,以下劃線分隔 文件化說明 函式首行加 或 使用函式名.doc 屬性 可以檢視函式文件 help 函式名 callable 函式名 判斷函式是否可以被呼叫 pass 佔位 引數預設引數 預設值最好是...
python3筆記3 容器的使用(2)
一 字典 字典是一種可變的容器模型,且可儲存任意型別的物件。字典的每個鍵值key與value對之間用冒號 進行分割。每個對之間用 分割。整個字典包含在花括號 之中。格式如下所示 dict 字典中的key值是唯一的,但是value則不一定。value值可以是任意資料型別的,但是key鍵是不可變的。1 ...
python3 筆記1 變數
變數 可變的量,區別於常量,常量為固定不可變的量 變數的定義方式 變數名 value 例 a 1 多個變數的命名格式 變數名1,變數名2 value1,value2 例 a,b 1,2 刪除變數名格式 del 變數名 刪除後的變數名再也無法訪問 在定義變數名時盡量做到見名知意,例如 你定義乙個變數為...