目錄
一、函數的參數和返回值
(1)參數: 負責給函數傳遞一些必要的數據或者信息
- 形參(形式參數): 在函數定義的時候用到的參數沒有具體值,只是一個佔位的符號,成爲形參;
- 實參(實際參數): 在調用函數的時候輸入的值。
(2)返回值: 函數的執行結果
- 使用return關鍵字;
- 如果沒有return,默認返回一個None;
- 函數一旦執行return語句,則無條件返回,即結束函數的執行;
關於返回值案例可以看上一個博客(https://blog.csdn.net/zaishuiyifangxym/article/details/83271882)
參數分類:
(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
運行結果:
參考資料
[1] https://study.163.com/course/introduction/1004987028.htm