函數定義、返回值、函數參數


函數的定義

什么是函數

函數就是一種具備某一功能的工具,事先將工具准備好就是函數的定義,遇到場景拿來就用。

怎么使用函數

def 函數名(等同於變量)():   # 定義函數
    """對函數的描述"""
    代碼塊

函數名()   # 函數調用

注冊功能函數

def register():
    """注冊功能"""
    count = 0
    while count < 3:
        username_inp = input('請輸入你的用戶名:').strip()
        pwd_inp = input('請輸入你的密碼:').strip()
        re_pwd_inp = input('請再次確認你的密碼:').strip()

        if re_pwd_inp != pwd_inp:
            print('兩次密碼輸入不一致!')
            count += 1
            continue

        with open('userinfo.txt', 'a', encoding='utf-8') as fa:
            fa.write(f'{username_inp}:{pwd_inp}\n')
            print('注冊成功')
            break
            
register()

登錄功能函數

def login():
    """登錄功能"""
    username_inp = input('請輸入你的用戶名:').strip()
    pwd_inp = input('請輸入你的密碼:').strip()

    user_info = f'{username_inp}:{pwd_inp}'

    with open('userinfo.txt', 'r', encoding='utf-8') as fr:
        data = fr.read()
        user_info_list = data.split('\n')

        if user_info in user_info_list:
            print('登錄成功')
        else:
            print('登陸失敗')

login()

函數的定義的三種形式

空函數

定義了一個函數,但啥都沒有

def func():
    pass

有參函數

def add(x, y):
    """有參函數"""
    print(int(x) + int(y))

add(1, 2)

無參函數

def func():
    print('hello world')

函數的調用

使用函數名()的形式就可以調用函數了

def func(x, y):
    """給定兩個數, 打印較大的數"""
    if x > y:
        print(x)
    else:
        print(y)

print(func)
func(10, 20)   # 加括號就能調用(執行內存中的代碼)

# 打印結果:
<function func at 0x00000253DFEF0950>   # 函數的地址
20

函數的返回值

return 返回一個值

def add(x, y):
    return x + y



res = add(1, 2)
print(res)

# 打印結果
3

return沒有返回值,默認返回None

def add(x, y):
    print(x, y)
    # return x + y



res = add(1, 2)
print(res)

# 打印結果:
1 2
None

return可以返回多個值,可以返回任意數據類型,默認用元組形式返回

def add(x, y):
    print(2)
    return x, y, x + y


res = add(1, 2)
print(res)

# 打印結果:
2
(1, 2, 3)

return會終止函數,不運行下面的代碼,即使有多個return,只會執行第一個return,不會執行下一個

def add(x, y):
    print(2)
    return x, y, x + y    # 遇到return就會終止函數
    print('hello world')
    return x


res = add(1, 2)
print(res)

# 打印結果:
2
(1, 2, 3)

函數的參數

形參和實參

形參

在函數定義階段括號內定義的參數,稱之為形式參數,簡稱形參,本質上就是變量名

def func(x, y):
    print(x)
    print(y)

實參

在函數調用階段括號內傳入的參數,稱之為實參

func(1, 2)

位置參數

位置形參

在函數定義階段,按照從左往右的順序依次定義的參數,稱之為位置形參

def func(x, y):
    print(x)
    print(y)

位置實參

在函數調用階段,按照從左往右的順序定義的參數,稱之為位置實參,依次傳值給位置形參

func(1, 2)

默認形參

在函數定義階段,就已經被賦值

def func(x, y=10):
    print(x)
    print(y)

func(2)
  • 在定義階段就已經賦值,在調用時可以不用傳值;如果傳值,就使用傳的值
  • 默認形參必須在位置形參之后

關鍵字實參

在調用函數時,按照位置形參名傳值

func(y=2, x=1)

關鍵字實參必須在位置實參后面

可變長參數

可變長形參之*

形參中的*會將溢出的位置實參全部接收,然后存儲元組的形式,然后把元組賦值給*后的參數。需要注意的是:*后的參數名約定俗成為args。

def f1(*args):
    print('args:', args)


f1(1, 23, 4)  # args接收位置實參多余的參數

# 打印結果:
args: (1, 23, 4)

可變長形參之**

'''
形參中的**會將溢出的關鍵字實參全部接收,然后存儲字典的形式,然后把字典賦值給**后的參數。需要注意的是:**后的參數名約定俗成為kwargs。
'''

def f2(a,**kwargs):
    print('kwargs:', kwargs)


f2(x=12, a=10, b=9)    # kwargs接收關鍵字實參多余的參數

# 打印結果:
kwargs: {'x': 12, 'b': 9}

可變長實參之*

def func1(a,b,c,d):
    print(a,b,c,d)

lt = [1,2,3,4]
func1(*lt)     # *lt列表中的元素打散成位置實參依次傳給位置形參

可變實參之**

def func(a, b):
    print(a, b)


dic = {'a': 1, 'b': 2}
func(**dic)               # **dic把字典打散成關鍵字實參然后傳給函數func


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM