Python基礎——函數基礎和函數參數

一、函數的基本內容

1、函數標準格式

def 函數名(參數):
    函數接口
    函數體
    return 返回值

函數名命名規則: 字母、數字和下劃線組成,和變量命名規則一致

return 後面可以返回任意表達式,但不能是賦值語句

2、函數調用:

函數名(參數)

def f1(s):
    print("我是{}".format(s))

f1('小可愛')

# 輸出結果:我是小可愛

:要先定義才能調用哦!

3、參數
  • 形參:函數沒有調用的時候,它沒有任何意義;在調用時,必須傳入參數,所以也叫必須參數
  • 實參:與形參位置是一一對應的,所以也叫位置參數;缺一不可,缺了或多了都會報錯
  • 正確使用:
def f(x, y):
    print("我是{}{}".format(x, y))
f(1, 2)

#輸出結果:我是12
  • 缺參數時:
def f1(x, y):
    print("我是{}{}".format(x, y))

f1(1)

    輸出結果:在這裏插入圖片描述

  • 多參數時:
def f1(x, y):
    print("我是{}{}".format(x, y))

f1(1, 2, 3)

    輸出結果:在這裏插入圖片描述

  • 默認參數:不傳參,用默認值,傳參它也能接收;一定要放在必須參數後面,否則會報錯

  • 關鍵字參數
    f(x=1, y=2)
    通過關鍵字去找對應的必須參數,這樣就不需要一一對應了。

  • 動態參數
    一般寫法:def f(*args, **kwargs) ;
    *args:調用參數時,所有傳入的多餘的位置參數都會被args接收生成一個元組;
    **kwargs:函數調用時,多餘的關鍵字參數,都會被kwargs接收,生成一個字典

def sum(**kwargs):
    print("b:", kwargs["b"])
    r = 0
    for i in kwargs.values():
        r += i
    print(r)

sum(a=1, b=3, c=7, d=100)

'''
輸出結果:
b: 3
111
'''
  1. 擴展:爲動態參數傳入列表、字典、元組
def f1(*args):
    print(args)

li = [1, 2, 3]
f1(4, 5, 6)   #輸出結果:(4, 5, 6)
f1(li, 2333)    #輸出結果:([1, 2, 3], 2333)
f1(*li)    #輸出結果:(1, 2, 3)
3、return

注意 return 和 print 的區別,return是函數的返回值,返回值可以賦值給變量,而print只是打印出來

二、常用內置函數

函數名 作用
len 求長度
min 求最小值
max 求最大值
sorted 排序
reversed 反向
enumerate 返回一個可以遍歷的對象
eval 取出字符串的內容,當做表達式進行運算並有返回值
exec 執行字符串,沒有返回值
filter 過濾器,每個可迭代對象去執行函數,獲取滿足條件的,不滿足的刪去
map 對於可迭代參數,應用函數,結果返回
zip 配對

enumerate:

li = ['a', 'b', 'c']
for i in enumerate(li):
    print(i)
print(list(enumerate(li)))

在這裏插入圖片描述
eval:

a = "1 + 2 + 3"
print(eval(a))

# 輸出結果:6

filter:

def f1(i):
    return i > 10

li = [1, 90, 23, 49, 5]
print(list(filter(f1, li)))

#輸出結果:[90, 23, 49]

map:

def f1(i):
    return i > 10

li = [1, 90, 23, 49, 5]
s = [11, 34, 57]
print(list(map(f1, li)))

#輸出結果:[False, True, True, True, False]

filter和map的區別是: filter是對對象的篩選,獲取的是對象元素,map獲取的是表達式的值(True或False)

zip:

s1 = [1, 2, 3]
s2 = ['a', 'b', 'c']
a = zip(s1, s2)
print(dict(a))

#輸出結果:{1: 'a', 2: 'b', 3: 'c'}

三、練習

題目:定義一個函數,對指定數據進行排序,通過參數來決定是正向排序還是反向排序。

def f(*args, s=1):
    if s == 0:
        print(sorted(args)
)
    elif s == 1:
        print(sorted(args, reverse=True))
    else:
        print("寫錯啦!")
li = [4,2,8,5,10]
f(*li)            #[10, 8, 5, 4, 2]
# f(*li, s=0)      #[2, 4, 5, 8, 10]
# f(*li, s=1)      #[10, 8, 5, 4, 2]
# f(*li, s=2)      #寫錯啦!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章