Python基礎--函數的定義和調用

1、函數的做用:

提升代碼的可讀性,減小代碼的冗餘,方便調用和修改,組織結構清晰

2、函數的定義:函數遵循先定義後調用的原則

一、無參函數

def funcname():   #def 是關鍵字,後跟函數名():
        子代碼    #函數要執行的代碼  
        return    #return返回值,沒有時默認爲none

二、有參函數

def funcname(參數1,參數2):  #參數個數能夠爲一個和多個
    函數體
    return

3、函數參數分類

def func(x,y):
    res=x+y
    return  res

f=func(1,2)
print(f)

形式參數:定義函數時的參數,本質就是變量名,上例中的x,y就是形式參數

實際參數:執行函數時的參數,本質就是變量的值,實參必須有一個明確的值,上例中的1,2就是實際參數

一)、實際參數:函數

一、按照位置傳遞給相應的參數
def func(x,y):
    res=x+y
    return  res

f=func(1,2)
print(f)
二、按照關鍵字傳值,將再也不受位置的限制
def func(x,y):
    res = x+y
    return res

func(y=2,x=1)
三、按位置傳值和按照關鍵字傳值混用
    1)按位置傳值必須在關鍵字傳值的前面
    2)對於一個形參只能賦值一次

二)、形式參數:code

一、位置參數:必須傳值的參數
二、默認參數:定義時賦值的參數就是默認參數,默認參數必須放在位置參數的後面,有默認參數時,能夠不傳遞參數
三、*args:動態參數,一個*時能夠隨意傳遞位置參數,打印結果是把參數做爲一個元組輸出
def f1(*a):
    print(a, type(a))


f1(123, 456, 789, [1, 2, 43])


打印結果
(123, 456, 789, [1, 2, 43]) <class 'tuple'>
四、動態參數**,傳參時必須key,value的形式傳遞,最後會生成一個字典的形式
def f2(**a):
    print(a, type(a))
f2(k1=123, k2=456)

打印結果爲
{'k1': 123, 'k2': 456} <class 'dict'>
五、能夠同時接受單個參數和key/value參數
def f3(*a, **aa):   #會把全部的位置參數做爲一個元組,key/value參數做爲一個字典
    print(a, type(a))
    print(aa, type(aa))
f3(11, 22, 33, k1=123, k2=456)

打印結果爲
(11, 22, 33) <class 'tuple'>
{'k2': 456, 'k1': 123} <class 'dict'>
六、把列表,元組,字典傳入函數
def f4(*args):
    print(args, type(args))
li = [11, 22, 33, 44]
f4(li, 123)  # 直接列表的名字,會把列表當作一整個元素當作函數生成後的元組的一個元素
f4(*li)  # 使用*列表,會把列表內的每一個元素當作函數生成後的元組的每一個元素,相似於循環生成元組,元組列表相似

打印結果爲
([11, 22, 33, 44], 123) <class 'tuple'>
(11, 22, 33, 44) <class 'tuple'>
七、把字典傳入函數
def f5(**kwargs):
    print(kwargs, type(kwargs))
dic = {"k1": 123}
f5(**dic)  # 將字典傳入到函數,須要使用雙星號(**)

打印結果爲
{'k1': 123} <class 'dict'>
八、混合使用
def f6(x, *args, **kwargs):
    print(x)
    print(args)
    print(kwargs)
f6(1, 2, 3, 4, 5, k="a", v="z")

打印結果爲
1
(2, 3, 4, 5)
{'v': 'z', 'k': 'a'}

總結:形式參數的傳入順序: 位置參數-----*args-----**kwargs----默認參數class

4、函數的調用和返回值

函數的返回值是return,函數不加return時默認的返回值是None,return能夠返回任意值,也能夠多個值,return後不跟參數默認返回的是None
def func(x,y):
    print(x,y)
    res=x+y
    return res

f=func(1,2)    #函數遵循先定義後調用原則,函數的調用就是func(1,2) 函數名加(),函數的執行結果,須要在調用時賦值給變量,而後print
print(f)

執行結果爲
1 2  #函數執行時內部代碼的執行結果
3   #3即爲函數的執行結果,函數的執行結果是返回給函數自己的
相關文章
相關標籤/搜索