Python 函數定義及調用(2)——參數詳解

目錄

一、函數的參數和返回值

二、舉例說明 

1、普通參數

2、默認參數

3、關鍵字參數

4、 收集參數


 

一、函數的參數和返回值

(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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章