1. 程式人生 > >函數(一)

函數(一)

檢查 3.2 abc 執行函數 分享 space imp new 解決方案

1、形參與實參

形參即變量名,實參即變量值,函數調用時,將值綁定到變量名上,函數調用結束,解除綁定。

2、參數類型

  2.1 位置參數:按照從左到右的順序定義的參數。 位置形參:必選參數 位置實參:按照位置給形參傳值

  2.2 關鍵字參數:按照key=value的形式定義的實參,無需按照位置為形參傳值

  註意:(1)關鍵字實參必須在位置實參右面 (2)對同一個形參不能重復傳值

  2.3 默認參數:形參在定義時就已經為其賦值,可以傳值也可以不傳值,經常需要變得參數定義成位置形參,變化較小的參數定義成默認參數(形參)。

  註意:(1)只在定義時賦值一次(2)默認參數的定義應該在位置形參右面(3)默認參數通常應該定義成不可變類型

  2.4 可變長參數:可變長指的是實參值的個數不固定,而實參有按位置和按關鍵字兩種形式定義,針對這兩種形式的可變長,形參對應有兩種解決方案來完整地存放它們,分別是*args,**kwargs。

  2.5 命名關鍵字參數:*後定義的參數,必須被傳值(有默認值的除外),且必須按照關鍵字實參的形式傳遞,可以保證,傳入的參數中一定包含某些關鍵字。

#-------------*args----------------
def a(x,y,*args):
    print(x,y,args)
a(1,2,3,4,5,6)
# 1 2 (3, 4, 5, 6)
a(1,2,*[3,4,5,6])
# 1 2 (3, 4, 5, 6) def a(x,y,z): print(x,y,z) a(*[1,2,3]) # 1 2 3
#-------------**kwargs--------------
def a(x,y,**kwargs):
    print(x,y,kwargs)
a(1,2,b=3,c=4,d=5)
# 1 2 {‘b‘: 3, ‘c‘: 4, ‘d‘: 5}
a(1,y=2,b=1,c=2,d=3)
# 1 2 {‘b‘: 1, ‘c‘: 2, ‘d‘: 3}
a(1,2,**{"b":4,"c":5,"d":6})

def a(x,y,z): print(x,y,z) a(**{"z":4,"y":5,"x":6})#必須一樣 # 6 5 4
#---------*args+**kwargs-------------
def a(x,y):
    print(x,y)
def b(*args,**kwargs):
    print("----")
    a(*args,**kwargs)
def a(x,y,*args,a=1,b,**kwargs):
    print(x,y)
    print(args)
    print(a)
    print(b)
    print(kwargs)
a(1,2,3,4,5,b=3,c=4,d=5)

3、摘錄別人的練習題:

3.1 寫函數,,用戶傳入修改的文件名,與要修改的內容,執行函數,完成批了修改操作。

技術分享圖片
def modify_file(filename,old,new):
    import os
    with open(filename,r,encoding=utf-8) as read_f,        open(.bak.swap,w,encoding=utf-8) as write_f:
        for line in read_f:
            if old in line:
                line=line.replace(old,new)
            write_f.write(line)
    os.remove(filename)
    os.rename(.bak.swap,filename)

modify_file(/Users/jieli/PycharmProjects/爬蟲/a.txt,alex,SB)
View Code

3.2 寫函數,計算傳入字符串中【數字】、【字母】、【空格] 以及 【其他】的個數。

技術分享圖片
def check_str(msg):
    res={
        num:0,
        string:0,
        space:0,
        other:0,
    }
    for s in msg:
        if s.isdigit():
            res[num]+=1
        elif s.isalpha():
            res[string]+=1
        elif s.isspace():
            res[space]+=1
        else:
            res[other]+=1
    return res

res=check_str(hello name:aSB passowrd:alex3714)
print(res)
View Code

3.3 寫函數,判斷用戶傳入的對象(字符串、列表、元組)長度是否大於5。

技術分享圖片
#
View Code

3.4 寫函數,檢查傳入列表的長度,如果大於2,那麽僅保留前兩個長度的內容,並將新內容返回給調用者。

技術分享圖片
def func1(seq):
    if len(seq) > 2:
        seq=seq[0:2]
    return seq
print(func1([1,2,3,4]))
View Code

3.5 寫函數,檢查獲取傳入列表或元組對象的所有奇數位索引對應的元素,並將其作為新列表返回給調用者。

技術分享圖片
def func2(seq):
    return seq[::2]
print(func2([1,2,3,4,5,6,7]))
View Code

3.6 寫函數,檢查字典的每一個value的長度,如果大於2,那麽僅保留前兩個長度的內容,並將新內容返回給調用者。
dic = {"k1": "v1v1", "k2": [11,22,33,44]} PS:字典中的value只能是字符串或列表

技術分享圖片
def func3(dic):
    d={}
    for k,v in dic.items():
        if len(v) > 2:
            d[k]=v[0:2]
    return d
print(func3({k1:abcdef,k2:[1,2,3,4],k3:(a,b,c)}))
View Code

函數(一)