函數(shù)的返回值
返回值
- 在程序開發(fā)中,有時候,會希望一個函數(shù)執(zhí)行結(jié)束后,告訴調(diào)用者 一個結(jié)果 ,以便調(diào)用者針對結(jié)果作后續(xù)的處理
- **返回值 **是函數(shù) 完成工作后,最后給調(diào)用者的一個結(jié)果
- 在函數(shù)中使用 **return **關(guān)鍵字可以返回結(jié)果
- 調(diào)用者 可以使用變量 來接收函數(shù)的返回結(jié)果
**返回值示例
**
# 單返回值示例
def test1():
name="zs"
return name
n=test1()
print("名字是:%s" %n)
# 多返回值,返回元組
def test2():
name="zs"
age=12
return name,age
n,a=test2()
print("名字是:%s,年齡是:%d" %(n,a))
#第二種返回值接收形式
result=test2()
print(result)
print("名字是:%s,年齡是:%d" %(result[0],result[1]))
# 多返回值,返回元組2,與上一個函數(shù)返回的結(jié)果是一樣的
def test3():
name="zs"
age=12
return (name,age)
n,a=test3()
print("名字是:%s,年齡是:%d" %(n,a))
輸出結(jié)果
交換變量的值
a=100
b=10
# 形式一
b,a=a,b
print(b,a)
# 形式二,注: 其實兩種方式是一樣的,只是看起來一個加了括號一個沒加,但其實后面都是用的元組
b,a=(a,b)
print(b,a)
函數(shù)的參數(shù)
不可變與可變參數(shù)
- 在函數(shù)內(nèi)部,針對參數(shù)使用 賦值語句 ,不會影響調(diào)用函數(shù)時傳遞的 實參變量
- 不管是可變還是不可變類型的參數(shù),針對參數(shù)使用 ** 賦值語句** ,會在 函數(shù)內(nèi)部修改局部變量的引用 ,不會影響 外部變量的引用
- 當參數(shù)是** 可變類型**時,在函數(shù)內(nèi)部,使用 方法 修改了數(shù)據(jù)的內(nèi)容,會影響到外部的數(shù)據(jù)
示例
# 可變與不可變類型參數(shù),使用賦值語句 不會影響外部調(diào)用時的 變量
def test1(num,num_list):
num=10
num_list=[4,5,6]
print("函數(shù)內(nèi)部num值:%d" %num)
print("函數(shù)內(nèi)部num_list值:",num_list)
gl_num=3
gl_num_list=[1,2,3]
test1(gl_num,gl_num_list)
print("函數(shù)外部num值:%d" %gl_num)
print("函數(shù)外部num_list值:",gl_num_list)
# 可變類型的參數(shù),使用 方法賦值,會影響外部調(diào)用時的 變量
def test2(num_list):
# 形式一
num_list.append(9)
# 形式二
num_list.extend([2,2,2])
# 形式三(默認使用的也是 extend)
num_list+=[3,3,3]
print("函數(shù)內(nèi)部調(diào)用后的值是:",num_list)
gl_num_list2=[1,1,1]
test2(gl_num_list2)
print("函數(shù)外部調(diào)用后的值是:",gl_num_list2)
輸出結(jié)果
缺省參數(shù)
- 定義函數(shù)時,可以給 **某個參數(shù) **指定一個 默認值 ,具有默認值的參數(shù)就叫 缺省參數(shù)
- 調(diào)用函數(shù)時,如果沒有傳入缺省參數(shù)的值,則在函數(shù)內(nèi)部會使用 參數(shù)的默認值
- 函數(shù)的缺省參數(shù),將常見的值設(shè)置為參數(shù)的缺省值,從而 簡化函數(shù)的調(diào)用
- 缺省參數(shù)的定義位置,應(yīng)該放在參數(shù)列表的末尾
- 如果有 ** 多個缺省參數(shù),調(diào)用時需要指定參數(shù)名,** 這樣解釋器才能知道參數(shù)的對應(yīng)關(guān)系
def test1(name,work="工程師",gender="男"):
print("名字是:%s,職位是:%s,性別是:%s" %(name,work,gender))
test1("張三",gender="女")
test1("李四",work="設(shè)計師")
test1("王五",work="設(shè)計師",gender="人妖")
輸出結(jié)果
多值參數(shù)
-
參數(shù)名前增加一個** * 可以接收 元組**
-
參數(shù)名前增加 兩個** * 可以接收 字典**
-
一般在給多值參數(shù)命名時,習慣使用以下兩個名字
- ***args 存放 元組 參數(shù),前面有一個 ***
- ****kwargs 存放 字典 參數(shù),前面有兩個 ***
-
args 是 arguments 的縮寫,有變量的含義
-
**kw 是 keyword 的縮寫,kwargs 可以記憶 鍵值對參數(shù)
**
示例
# 測試普通參數(shù),元組,字典傳參
def test(num,*args,**kwargs):
print(num)
print(args)
print(kwargs)
test(1,2,3,4,5,nmae="zs",age="12")
輸出結(jié)果
**元組和字典的拆包
**
- 在調(diào)用帶有多值參數(shù)的函數(shù)時,如果希望:
- 將一個 元組變量,直接傳遞給 args
- 將一個 字典變量,直接傳遞給 kwargs
- 就可以使用 ** 拆包,** 簡化參數(shù)的傳遞,拆包的方式是**:**
-
在 元組變量前**,增加一個 ***
-
在 字典變量前**,增加兩個 *
**
-
示例
def test(*args,**kwargs):
print(args)
print(kwargs)
# 不使用拆包
test(1,2,3,name="zs",age=12)
# 使用拆包
t_tuple=(1,2,3)
d_dict={"name":"zs","age":12}
test(*t_tuple,**d_dict)
**輸出結(jié)果
**
遞歸
- 一個函數(shù),內(nèi)部自己調(diào)用自己
- 當 參數(shù)滿足一個條件時,函數(shù)不再執(zhí)行,這個非常重要,通常被稱為 遞歸的出口,否則 就會出現(xiàn) 死循環(huán)
示例
# 使用遞歸 計算累加 1+2+3....num
def sum_num(num):
# 定義出口
if num==1:
return 1
tmp=sum_num(num-1)
return num+tmp
total=sum_num(10)
print("累加的值是:",total)
輸出結(jié)果
-
函數(shù)
+關(guān)注
關(guān)注
3文章
4346瀏覽量
62977 -
程序開發(fā)
+關(guān)注
關(guān)注
0文章
30瀏覽量
10335 -
Return
+關(guān)注
關(guān)注
0文章
9瀏覽量
7644
發(fā)布評論請先 登錄
相關(guān)推薦
評論