函數(shù)
自定義函數(shù)
函數(shù)的參數(shù)
函數(shù)的返回值
函數(shù)的作用域
函數(shù)介紹
函數(shù)

image.png
函數(shù)介紹 ( 熟悉 )
函數(shù)介紹:
函數(shù)是組織好的,可重復(fù)使用的,用來實(shí)現(xiàn)單一,或相關(guān)聯(lián)功能的代碼段。
函數(shù)作用:
提高 應(yīng)用的模塊性 與 代碼的復(fù)用性
自定義函數(shù) ( 掌握 )
定義規(guī)則:
- 函數(shù)代碼塊以 def 關(guān)鍵詞 開頭 ,后接 函數(shù)標(biāo)識符名稱 和 圓括號()
- 圓括號中間 可以 放入?yún)?shù)
- 函數(shù)內(nèi)容以 冒號 起始,并且 縮進(jìn)。

image.png
注意:
- 函數(shù) 只有在調(diào)用時才會執(zhí)行,通過 function_name(param) 進(jìn)行調(diào)用
函數(shù)的參數(shù)
- 形參與實(shí)參
- 可變類型參數(shù)與不可變類型參數(shù)
- 位置參數(shù)
- 關(guān)鍵字參數(shù)
- 默認(rèn)值參數(shù)
- 可變長度參數(shù)
形參與實(shí)參:
- 形參 就是 函數(shù)定義中的 參數(shù),沒有實(shí)際的值,通過別人賦值后才有意義,相當(dāng)于變量。
- 實(shí)參 就是 調(diào)用函數(shù)時傳入的 參數(shù),是一個實(shí)際存在的參數(shù)。

image.png
def test_one(b): # 函數(shù)定義時傳入:形參
print(b)
a = 1
test_one(a) # 函數(shù)調(diào)用時出入:實(shí)參
'''
這整個過程,相當(dāng)于
a = 1
b = a
'''
可變類型參數(shù)與不可變類型參數(shù):
- 不可變類型參數(shù)在函數(shù)體內(nèi)對變量重新賦值,相當(dāng)于重新開辟了一塊內(nèi)存來保存值
- 可變類型參數(shù)在函數(shù)體內(nèi)***可以改變原有的值****.
def test_one(a):
# 整數(shù)為不可變對象
a = 10
print('inner:', a, id(a))
# inner: 10 496030912
a = 1
test_one(a)
print('outer:',a , id(a))
# outer: 1 496030768
def test_one(li):
# 列表時可變數(shù)據(jù)類型
li.extend([1, 22])
print('inner:', li, id(li))
# inner: [1, 2, 3, 4, 1, 22] 23983968
li = [1, 2, 3, 4]
test_one(li)
print('outer:',li ,id(li))
# outer: [1, 2, 3, 4, 1, 22] 23983968
位置參數(shù):
-
位置參數(shù)也就是實(shí)參與 形參 順序 一一對應(yīng),而不論變量名
關(guān)鍵字參數(shù): - 以 形參 = 實(shí)參 形式指定,不論參數(shù)位置
# 實(shí)現(xiàn)兩個數(shù)字相加
def sum_nums(num1,num2):
res = num1 + num2
print(f'num1:{num1}')
print(f'num2:{num2}')
print(f'{num1} + {num2} = {res}')
num1 = int(input('請輸入num1:'))
num2 = int(input('請輸入num2:'))
# sum_nums(num1,num2)
# 位置參數(shù):實(shí)參于形參的順序是一一對應(yīng)。無論變量名。實(shí)參于形參個數(shù)一致
sum_nums(num1=num1, num2=num2)
# 關(guān)鍵字參數(shù):不受位置影響
默認(rèn)值參數(shù):
-
形參處進(jìn)行賦值,所以當(dāng)調(diào)用時不傳該參數(shù)就默認(rèn)使用形參處的值。當(dāng)調(diào)用時傳了該參數(shù),則覆蓋
掉默認(rèn)參數(shù)。
# 默認(rèn)值參數(shù),當(dāng)不傳時,就為形參指定的值。
# 如果在實(shí)參中傳了,會覆蓋掉形參中指定值。
def test_one(a, b=2):
a = a + b
print(a, b)
a = 1
test_one(a, 10) # 11 10
可變長度參數(shù):
- *args 接收時會轉(zhuǎn)為元組數(shù)據(jù)類型
- **kwargs 接收時會轉(zhuǎn)為字典數(shù)據(jù)類型
# *age-->可變長度的參數(shù),你可以傳也可以不傳,并且長度不做限制。但是會給你統(tǒng)一打包為元組。
def test_one(*args): # 形參
print(args)
test_one('amy', 2, 3, 4, 5, 7) # amy 2 3 4 5 7
# *age-->可變長度的參數(shù),你可以傳也可以不傳,并且長度不做限制。但是會給你統(tǒng)一打包為元組。
def test_one(*args): # 形參
print(args)
test_one('amy', 2, 3, 4, 5, 7) # ('amy', 2, 3, 4, 5, 7)
# 注意:python3.0以后,*args參數(shù)后面只能跟關(guān)鍵字參數(shù)
def test_one(*args, a=1, b): # 形參
print(args)
test_one("amy", 2, 3, 4, 5, 7, a=10, b=20)
# ('amy', 2, 3, 4, 5, 7)
# **kwargs-->可變長度的參數(shù),你可以傳也可以不傳,并且長度不做限制。實(shí)參傳需要傳入鍵值對,然后形參將它打包成字典
def test_one(**kwargs):
print(kwargs)
test_one(a=1, b=2, c=3)
# {'a': 1, 'b': 2, 'c': 3}
解包:
- a,b,c = (1,2,3)
# 拆包
# a, b, c = (1, 2, 3)
# print(a,b,c,sep='\n')
# 位置參數(shù) 形參實(shí)參個數(shù)一致 并且一一對應(yīng)
def test_one(a, b, c):
print(a, b, c)
tu = (1, 2, 3)
test_one(*tu) # 1 2 3
test_one(1, 2, 3) # 1 2 3