Python 函式定義及呼叫(2)——引數詳解
阿新 • • 發佈:2018-12-16
目錄
一、函式的引數和返回值
(1)引數: 負責給函式傳遞一些必要的資料或者資訊
- 形參(形式引數): 在函式定義的時候用到的引數沒有具體值,只是一個佔位的符號,成為形參;
- 實參(實際引數): 在呼叫函式的時候輸入的值。
(2)返回值: 函式的執行結果
- 使用return關鍵字;
- 如果沒有return,預設返回一個None;
- 函式一旦執行return語句,則無條件返回,即結束函式的執行;
引數分類:
(1)普通引數;(2)預設引數;(3)關鍵字引數;(4)收集引數。
二、舉例說明
1、普通引數
形式:
def 函式名(引數1, 引數2,....): 函式體 # 呼叫 函式名(value1, value2,.......) # 呼叫的時候,具體值參考的是位置,按位置賦值
例如:
def hello(person):
print("大家好,我是函式{0}".format(person))
return "我結束了,啦啦啦"
p = "XiaoMing"
rst = hello(p) # 呼叫函式 hello
print(rst)
執行結果:
2、預設引數
(1)形參帶有預設值;
(2)呼叫的時候,如果沒有對相應形參賦值,則使用預設值。
形式:
def func_name(p1=v1, p2=v2..........): 函式體 # 呼叫1 func_name() # 呼叫2 value1 = 100 value2 = 200 func_name(value1, value2)
例如:
# 預設引數示例 # 報名函式,需要知道學生性別 # 學習python的學生基本都是男生,所以,報名的時候如果沒有特別指定,我們預設是男生 def reg(name, age, gender="male"): if gender == "male": print("{0} is {1}, and he is a good student".format(name, age)) else: print("{0} is {1}, and she is a good student".format(name, age)) # 呼叫 reg("mingyue", 21) # 沒有給第三個引數的值,則使用預設值 reg("xiaojing", 23, "female")
執行結果:
3、關鍵字引數
形式:
def func(p1=v1, p2=v2.....):
func_body
呼叫函式:
func(p1=value1, p2=value2.......)
從形式上看,比較麻煩,但是有以下優點:
(1)不容易混淆, 一般實參和形參只是按照位置一一對應即可,容易出錯
(2)使用關鍵字引數,可以不考慮引數位置
例如:
# 普通引數案例
def stu(name, age, addr):
print("I am a student")
print("我叫 {0}, 我今年 {1}歲了, 我住{2}".format(name, age, addr))
n = "jingjing"
a = 18
addr = "我家"
# 普通引數,只按照位置傳遞,容易出錯
stu(a, n, addr)
print("-" * 50)
# 對於關鍵字引數 案例
def stu_key(name="No name", age=0, addr="No addr"):
print("I am a student")
print("我叫 {0}, 我今年 {1}歲了, 我住{2}".format(name, age, addr))
n = "jingjing"
a = 18
addr = "我家"
執行結果:
4、 收集引數
(1)把沒有位置,不能和定義時的引數位置相對應的引數,放入一個特定的資料結構中。
(2)引數名args不是必須這麼寫,但是,我們推薦直接用args,約定俗成 引數名args前需要由星號
(3)收集引數可以和其他引數共存
形式:
def func(*args):
func_body
# 按照list使用方式訪問args得到傳入的引數
#呼叫:
func(p1, p2, p3, .....)
例如:
# 函式模擬一個學生進行自我介紹,但具體內容不清楚
# args把他看做一個list
def stu(*args):
print("Hello 大家好,我自我介紹以下,簡答說兩句:")
print(type(args)) # type函式作用是檢測變數的型別
for item in args:
print(item)
stu("Xiaoming", 18, "浙江省杭州市", "愛好:喜歡打籃球")
print("-" * 50)
stu("Xiaohong")
執行結果:
5、 收集引數之關鍵字收集引數
(1)把關鍵字引數按字典格式存入收集引數;
(2)kwargs一般約定俗成;
(3)呼叫的時候,把多餘的關鍵字引數放入kwargs;
(3)訪問kwargs需要按字典格式訪問。
形式:
def func(**kwargs):
func_body
# 呼叫:
func(p1=v1, p2=v2, p3=v3........)
例如:
# 自我介紹
# 呼叫的時候需要使用關鍵字引數呼叫
def stu(**kwargs):
# 在函式體內對於kwargs的使用不用帶星號
print("Hello 大家好,我先自我介紹一下:")
print(type(kwargs))
for k, v in kwargs.items():
print(k, "---", v)
stu(name="Xiaoming", age=18, addr="浙江省杭州市", hobby="Play basketball") # 呼叫1
print("-" * 50)
stu(name="Xiaohong") # 呼叫2
執行結果:
參考資料