python的函數(shù)形參和返回值你了解嗎
函數(shù)的返回值
一個函數(shù)執(zhí)行后可以返回多個返回值
def measure():
print('測量開始。。。。')
temp=39
wetness=50
print("測量結(jié)束")
#元組--可以包含多個數(shù)據(jù),因此可以使用元組一次返回多個值
return (temp,wetness)
result=measure()
print(result)
運行結(jié)果:
測量開始。。。。
測量結(jié)束
(39, 50)
def measure():
print('測量開始。。。。')
temp=39
wetness=50
print("測量結(jié)束")
#元組--可以包含多個數(shù)據(jù),因此可以使用元組一次返回多個值
return (temp,wetness)
#如果函數(shù)返回的類型是元組,同時希望單獨的處理元組中的元素
#可以使用多個變量,一次接收函數(shù)的返回結(jié)果
#使用多個變量接收結(jié)果時,變量的個數(shù)應該和元組的元素個數(shù)一致
gl_temp,gl_wetness=measure()
print(gl_temp)
print(gl_wetness)
運行結(jié)果:
測量開始。。。。
測量結(jié)束
(39, 50)
交換兩個變量的值
a=6
b=100
#使用其他變量
c=a
a=b
b=c
#不使用其他變量
a=a+b
b=a-b
a=a-b
#python專有
a,b=b,a
print("a的值為 %d"%a)
print("b的值為 %d"%b)
函數(shù)的參數(shù)
不可變參數(shù)和可變參數(shù)
在函數(shù)內(nèi)部,針對參數(shù)使用賦值語句,不會改變調(diào)用函數(shù)時傳遞的實參的值
無論傳遞的參數(shù)是可變還是不可變,只要針對參數(shù)使用賦值語句,會在函數(shù)內(nèi)部修改局部變量的引用,不會影響到外部變量的引用
def demo(num,num_list):
print("函數(shù)內(nèi)部")
#在函數(shù)內(nèi)部,針對參數(shù)使用賦值語句,形參的引用發(fā)生了變化,但是實參的引用沒變
num=200
num_list=[1,2,3]
print(num)
print(num_list)
print("函數(shù)內(nèi)部代碼完成")
gl_num=99
gl_list=[2,3,4]
demo(gl_num,gl_list)
print(gl_num)
print(gl_list)
運行結(jié)果:
函數(shù)內(nèi)部
200
[1, 2, 3]
函數(shù)內(nèi)部代碼完成
99
[2, 3, 4]
如果傳遞的參數(shù)是可變類型,在函數(shù)內(nèi)部,使用方法修改了數(shù)據(jù)的內(nèi)容,同樣會影響到外部的數(shù)據(jù)
def demo(num_list):
print("函數(shù)內(nèi)部")
num_list.append([1,2,3])
print(num_list)
print("函數(shù)內(nèi)部代碼完成")
gl_list=[2,3,4]
demo(gl_list)
print(gl_list)
運行結(jié)果:
函數(shù)內(nèi)部
[2, 3, 4, [1, 2, 3]]
函數(shù)內(nèi)部代碼完成
[2, 3, 4, [1, 2, 3]]
+=
在python中,列表變量調(diào)用+=本質(zhì)上在執(zhí)行列表變量的extend方法,不會修改變量的引用
def demo(num,num_lst):
print("函數(shù)開始")
num+=num
num_lst+=num_lst
print(num)
print(num_lst)
print("函數(shù)結(jié)束")
gl_num=9
gl_list=[1,2,3]
demo(gl_num,gl_list)
print(gl_num)
print(gl_list)
運行結(jié)果:
函數(shù)開始
18
[1, 2, 3, 1, 2, 3]
函數(shù)結(jié)束
9
[1, 2, 3, 1, 2, 3]
函數(shù)的參數(shù)
缺省參數(shù)
定義函數(shù)時,可以給某個參數(shù)指定一個默認值,具有默認值的參數(shù)就叫做缺省參數(shù)
調(diào)用函數(shù)時,如果沒有傳入缺省參數(shù)的值,則在函數(shù)內(nèi)部使用定義函數(shù)時指定的參數(shù)默認值
(1)指定函數(shù)的缺省參數(shù)
在參數(shù)后使用賦值語句,可以指定參數(shù)的缺省值
def print_info(name,gender=True):
gender_text="男生"
if not gender:
gender_text="女生"
print("%s 是 %s"%(name,gender_text))
(2) 提示
缺省參數(shù),需要使用最常見的值作為默認值
如果一個參數(shù)的值不能確定,則不應該設(shè)置默認值,具體的數(shù)據(jù)在調(diào)用函數(shù)時,由外界傳遞
(3) 缺省參數(shù)的注意事項
1.缺省參數(shù)的定義位置
必須保證帶有默認值的缺省參數(shù)在參數(shù)列表的末尾
2.調(diào)用多個缺省參數(shù)的函數(shù)
在調(diào)用函數(shù)時,如果有多個缺省參數(shù),需要指定參數(shù)名,這樣解釋器才能夠知道參數(shù)的對應關(guān)系
多值參數(shù)
有時候可能需要一個函數(shù)能夠處理的參數(shù)個數(shù)是不確定的,這個時候,就可以使用多值參數(shù)
- python中有兩種多值參數(shù):
參數(shù)名前增加一個* ,可以接收元組
參數(shù)名前增加兩個*,可以接受字典
- 一般在給多值參數(shù)命名時,習慣使用以下兩個名字:
*args----存放元組參數(shù)
**kwargs—存放字典參數(shù)
def demo(*args,**kwargs):
print(args)
print(kwargs)
demo(1,2,3,4,name="test1",age=14)
運行結(jié)果:
(1, 2, 3, 4)
{'name': 'test1', 'age': 14}
可以看到1,2,3,4被組成了一個元組
name=“test1”,age=14,被組成了一個字典
#計算任意個數(shù)之和
def sum_args(*args):
sum=0
for n in args:
sum+=n
return sum
result=sum_args(1,2,3,4,6)
print(result)
元組和字典的拆包
在調(diào)用帶有多值參數(shù)的函數(shù)時,如果希望:
將一個元組變量,直接傳遞給args
將一個字典變量,直接傳遞給kwargs
就可以使用拆包,簡化參數(shù)的傳遞,拆包的方式是:
在元組變量前,增加一個*
在字典變量前,增加兩個**
#如果不拆包,將gl_args,gl_kwargs組成一個元組
def demo(*args,**kwargs):
print(args)
print(kwargs)
gl_args=(1,2,3,4)
gl_kwargs={"name":"test1","age":12}
demo(gl_args,gl_kwargs)
運行結(jié)果:
((1, 2, 3, 4), {'name': 'test1', 'age': 12})
{}
如果不拆包,將gl_args,gl_kwargs組成一個元組,正確的傳遞方式應該是:demo(1,2,3,4,name=“test”,“age”=12)
但是實參是元組和字典,需要將元素一個一個拆開,所以需要使用拆包
正確的使用方式:
def demo(*args,**kwargs):
print(args)
print(kwargs)
gl_args=(1,2,3,4)
gl_kwargs={"name":"test1","age":12}
demo(*gl_args,**gl_kwargs)
運行結(jié)果:
(1, 2, 3, 4)
{'name': 'test1', 'age': 12}
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
詳解Django中views數(shù)據(jù)查詢使用locals()函數(shù)進行優(yōu)化
這篇文章主要介紹了Django中views數(shù)據(jù)查詢使用locals()函數(shù)進行優(yōu)化,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-08-08
Django rstful登陸認證并檢查session是否過期代碼實例
這篇文章主要介紹了Django rstful登陸認證并檢查session是否過期代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-08-08

