每個編程語言中(諸如:Java、C++、C)等都有函數(shù)的,Python也不例外

函數(shù)的主要作用有哪些呢?

1、將程序的功能進行模塊化,功能模塊清晰

2、減少重復代碼的工作量

3、便于閱讀及維護、調(diào)試等


一、函數(shù)的結(jié)束及返回值

            #?-*-?coding:?utf-8?-*-

def?f1():
????print("This?is?Fun()")
????return??#函數(shù)調(diào)用結(jié)束
????print("--?End?1--")
????print("?Print?2")
????return?"---?End?2??--"

f1()
print(type(f1()))
          

運行結(jié)果:

This is Fun()

This is Fun()

1.函數(shù)在遇到return語句時,此時函數(shù)調(diào)用已經(jīng)結(jié)束

2.函數(shù)是有返回值的,只不過這里是None類型

再看下面的例子:

            def?mth_return():
????return?1,"String",["a","b"],{"K1":1,"Key2":2}
print(mth_return())
print(type(mth_return()))
          

運行結(jié)果:

(1, 'String', ['a', 'b'], {'K1': 1, 'Key2': 2})

此時,函數(shù)的返回值是一個元組

二、函數(shù)的參數(shù)

? 對于函數(shù),其函數(shù)名后面的變量通常稱為:形參,調(diào)用函數(shù)時,提供的值稱為:實參

            #?-*-?coding:?utf-8?-*-

def?method(name,age):??#name,age是形參
????print(name,age)
def?method2(name,age?="18"):??#提供默認參數(shù)值
????print(name,age)

n?=?"Mr.James"
method(n,38)??#n是實參
method2("Zhang")
method2("Mr.Zhang",28)
          

運行結(jié)果:

Mr.James 38

Zhang 18

Mr.Zhang 28

三、函數(shù)的關(guān)鍵字參數(shù)

? ?對于上面的例子,其函數(shù)是位置位置參數(shù),位置一一對應,不能多也不能少

? ?下面的這個這個例子跟上面的有點不一樣,在Python中稱之為:關(guān)鍵字參數(shù)

            #?-*-?coding:?utf-8?-*-

def?test(name="James",age=29):
????print("name:{},{}".format(name,age))

test(age=20,name="Mr.Zhang")
          

運行結(jié)果:

name:Mr.Zhang,20

四、函數(shù)的可變長參數(shù)

?對于位置參數(shù)而言,形參及實參需要一一對應,若有時不確定需要哪些參數(shù)或為了日后能很好的擴展,Python中提供了可變長參數(shù)

用法:def function(self,*args,**kwargs)

具體例子:

例子1:

            #?coding?=?utf-8

def?test(name,*args):
????print(name)
????print(args)
????print(args[3])

test("Mr.Zhang",1,2,3,["a","b"],{"Key1":1,"Key2":2})??#?*args?返回的是一個元組
          

運行結(jié)果:

Mr.Zhang

(1, 2, 3, ['a', 'b'], {'Key1': 1, 'Key2': 2})

['a', 'b']

例子2:

            #?coding?=?utf-8
def?test2(name,*args,**kwargs):??#?**kwargs返回的是一個字典
????print(name)
????print(args)
????print(kwargs)

test2("Mr.Zhang",1,2,3,['a','b'],{"Key1":1,"Key2":2},age=18,sex="F")
          

運行結(jié)果:

Mr.Zhang
(1, 2, 3, ['a', 'b'], {'Key1': 1, 'Key2': 2})
{'age': 18, 'sex': 'F'}