函數(shù)的返回值
返回值
- 在程序開發(fā)中,有時(shí)候,會(huì)希望一個(gè)函數(shù)執(zhí)行結(jié)束后,告訴調(diào)用者 一個(gè)結(jié)果 ,以便調(diào)用者針對(duì)結(jié)果作后續(xù)的處理
- **返回值 **是函數(shù) 完成工作后,最后給調(diào)用者的一個(gè)結(jié)果
- 在函數(shù)中使用 **return **關(guān)鍵字可以返回結(jié)果
- 調(diào)用者 可以使用變量 來(lái)接收函數(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,與上一個(gè)函數(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)
# 形式二,注: 其實(shí)兩種方式是一樣的,只是看起來(lái)一個(gè)加了括號(hào)一個(gè)沒(méi)加,但其實(shí)后面都是用的元組
b,a=(a,b)
print(b,a)
函數(shù)的參數(shù)
不可變與可變參數(shù)
- 在函數(shù)內(nèi)部,針對(duì)參數(shù)使用 賦值語(yǔ)句 ,不會(huì)影響調(diào)用函數(shù)時(shí)傳遞的 實(shí)參變量
- 不管是可變還是不可變類型的參數(shù),針對(duì)參數(shù)使用 ** 賦值語(yǔ)句** ,會(huì)在 函數(shù)內(nèi)部修改局部變量的引用 ,不會(huì)影響 外部變量的引用
- 當(dāng)參數(shù)是** 可變類型**時(shí),在函數(shù)內(nèi)部,使用 方法 修改了數(shù)據(jù)的內(nèi)容,會(huì)影響到外部的數(shù)據(jù)
示例
# 可變與不可變類型參數(shù),使用賦值語(yǔ)句 不會(huì)影響外部調(diào)用時(shí)的 變量
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ù),使用 方法賦值,會(huì)影響外部調(diào)用時(shí)的 變量
def test2(num_list):
  # 形式一
  num_list.append(9)
  # 形式二
  num_list.extend([2,2,2])
  # 形式三(默認(rèn)使用的也是 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í),可以給 **某個(gè)參數(shù) **指定一個(gè) 默認(rèn)值 ,具有默認(rèn)值的參數(shù)就叫 缺省參數(shù)
- 調(diào)用函數(shù)時(shí),如果沒(méi)有傳入缺省參數(shù)的值,則在函數(shù)內(nèi)部會(huì)使用 參數(shù)的默認(rèn)值
- 函數(shù)的缺省參數(shù),將常見的值設(shè)置為參數(shù)的缺省值,從而 簡(jiǎn)化函數(shù)的調(diào)用
- 缺省參數(shù)的定義位置,應(yīng)該放在參數(shù)列表的末尾
- 如果有 ** 多個(gè)缺省參數(shù),調(diào)用時(shí)需要指定參數(shù)名,** 這樣解釋器才能知道參數(shù)的對(duì)應(yīng)關(guān)系
def test1(name,work="工程師",gender="男"):
  print("名字是:%s,職位是:%s,性別是:%s" %(name,work,gender))
test1("張三",gender="女")
test1("李四",work="設(shè)計(jì)師")
test1("王五",work="設(shè)計(jì)師",gender="人妖")
輸出結(jié)果

多值參數(shù)
- 
參數(shù)名前增加一個(gè)** * 可以接收 元組** 
- 
參數(shù)名前增加 兩個(gè)** * 可以接收 字典** 
- 
一般在給多值參數(shù)命名時(shí),習(xí)慣使用以下兩個(gè)名字 - ***args 存放 元組 參數(shù),前面有一個(gè) ***
- ****kwargs 存放 字典 參數(shù),前面有兩個(gè) ***
 
- 
args 是 arguments 的縮寫,有變量的含義 
- 
**kw 是 keyword 的縮寫,kwargs 可以記憶 鍵值對(duì)參數(shù) ** 
示例
# 測(cè)試普通參數(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ù)時(shí),如果希望:
- 將一個(gè) 元組變量,直接傳遞給 args
- 將一個(gè) 字典變量,直接傳遞給 kwargs
 
- 就可以使用 ** 拆包,** 簡(jiǎn)化參數(shù)的傳遞,拆包的方式是**:**
- 
在 元組變量前**,增加一個(gè) *** 
- 
在 字典變量前**,增加兩個(gè) * ** 
 
- 
示例
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é)果
**

遞歸
- 一個(gè)函數(shù),內(nèi)部自己調(diào)用自己
- 當(dāng) 參數(shù)滿足一個(gè)條件時(shí),函數(shù)不再執(zhí)行,這個(gè)非常重要,通常被稱為 遞歸的出口,否則 就會(huì)出現(xiàn) 死循環(huán)
示例
# 使用遞歸 計(jì)算累加  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文章 4403瀏覽量 66583
- 
                                程序開發(fā)
                                +關(guān)注關(guān)注 0文章 30瀏覽量 10801
- 
                                Return
                                +關(guān)注關(guān)注 0文章 9瀏覽量 7966
發(fā)布評(píng)論請(qǐng)先 登錄
快速掌握Python的遞歸函數(shù)與匿名函數(shù)調(diào)用
Labview遞歸函數(shù)的使用案例
請(qǐng)問(wèn)python-樹莓派如何通過(guò)按鍵控制步進(jìn)電機(jī)正反轉(zhuǎn)?
C++教程之函數(shù)的遞歸調(diào)用
遞歸指的是在函數(shù)的定義中使用函數(shù)自身的方法
C++的實(shí)驗(yàn)教程之函數(shù)的遞歸算法資料免費(fèi)下載
 
    
 
           
        
 
         Python-函數(shù)的進(jìn)階與遞歸
Python-函數(shù)的進(jìn)階與遞歸 
                 
  
     
            
             
             
                 
             工商網(wǎng)監(jiān)
工商網(wǎng)監(jiān)
        
評(píng)論