python函數及文件操作

定義函數的三種形式

- 無參數函數,通常無返回值
- 有參數函數,函數的功能執行依賴外部傳入的參數,有參數函數通常有返回值
    def add(x,y):
        sum=x+y
        return sum
- 空函數
def insert():
    pass

函數返回值

- 返回值爲None
    沒寫return
    return 啥也不接
    return None
- 一個返回值
    def foo():
        return x
- 多個返回值
    return 值1,值2,值3,值4 --->返回結果組成tuple

調用函數

def dog():
    print('dog')

def cat(cat):
    print('===>',cat)

dog()
cat('加菲')

調用函數的三種方式:

- dog() #直接調用
- 調用函數的表達式形式
    def add(x,y):
        sum=x+y
        return res
    res=add(3,5) * 1000

- 把函數調用當中另外一個函數的參數
    res=max(max(3,5),7)

函數的參數:

- 形參 定義函數時的參數名稱
- 實參 調用函數時傳入的參數

詳細區分函數的參數

- 位置參數
    def foo(x,y,z):
        print(x,y,z)

    foo(1,2,3) 實參位置和形參位置一一對應

- 關鍵字參數:
    def foo(x,y,z)
        print(x,y,z)

    foo(z=3,y=1,x=4)
    foo(1,z=3,y=5)

    注意點:
        1. 關鍵字實參必須在未知實參後面
        2. 不能重複對一個形參傳值

- 默認參數
    def reg(name,age,sex='male'):
        print(name,age,sex)

    注意點:
        1. 定義函數時,默認參數必須在非默認參數之後
        2. 默認參數在定義階段智能賦值一次
        3. 默認參數通常定義成不可變類型

- 可變長參數,
    1. *會把溢出的按位置定義的實參都接受,以元組形式賦值給args
    def foo(x,y,*args):
        print(x,y)
        print(args)
    foo(1,2,3,4,5,6)
    輸出:
        1 2
        (3,4,5,6) tuple形式

    2. def foo(x,y,**kwargs):**會把溢出的按關鍵字定義的實參都接收,以字典的形式賦值給kwargs
           print(x,y)
           print(kwargs)
       foo(1,2,c=2,name='lh',age=18)

    輸出:
        1 2
        {'c': 2, 'name': 'lh', 'age': 18}

    例子:
        def foo(name,age=10,*args,sex='male',height,**kwargs):
            print(name)
            print(age)
            print(args)
            print(sex)
            print(height)
            print(kwargs)
        foo('alex',1,2,3,4,5,sex='female',height='150',a=1,b=2,c=3)

        輸出:
            alex
            1
            (2, 3, 4, 5)
            female
            150
            {'c': 3, 'a': 1, 'b': 2}


        def foo(x,y,z):
            print('from foo',x,y,z)
        def wrapper(*args,**kwargs):
            print(args)
            print(kwargs)
            foo(*args,**kwargs)

        # wrapper(1,2,3,a=1,b=2)
        wrapper(1,z=2,y=3)

        輸出:
            (1,)
             {'z':z,'y':3}
             from foo 1 3 2


文件操作

  • f=open('a.txt','r+') 對文件進行讀寫

  • f=open('a.txt','w+') 寫讀

  • f=open('a.txt','a+') 追加並且讀

f=open('a.txt','w') f.write('1111\n') f.close() 關閉以釋放內存

上下文管理

with open('a.txt','r',encoding='utf-8') as f:

    print(f.read())


with open('txt','r',encoding='utf-8') as read_f,\

    open('aa.txt','w',encoding='utf-8') as write_f:

    for line in read_f:

        write_f.write(line)

    else:#在上面流程執行成功之後,顯示寫入成功

        print('write ok')
  • decode() 解碼

    with open('b.txt','rb') as f:
    
        print(f.read().decode('utf-8'))
  • encode() 編碼

    with open('c.txt','wb') as data:
    
        data.write('工地人'.encode('utf-8'))


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