python参数_python参数的介绍
一、函數(shù)
1.為什么要使用函數(shù)?
減少代碼的冗余
2.函數(shù)先定義后使用(相當(dāng)于變量一樣先定義后使用)
3.函數(shù)的分類:
內(nèi)置函數(shù):python解釋器自帶的,直接拿來(lái)用就行了
自定義函數(shù):根據(jù)自己的需求自己定義的函數(shù)
def func(): #函數(shù)名打印出來(lái)的是內(nèi)存地址
'''注釋'''
函數(shù)體
4.函數(shù)定義都干了些什么事?
只檢測(cè)語(yǔ)法,不執(zhí)行代碼
5.函數(shù)就是一段功能,盡量把函數(shù)名定義的有意義
6.定義函數(shù)的三種方式:
有參數(shù)的函數(shù):就是接受外部傳進(jìn)來(lái)的值,進(jìn)行一系列的運(yùn)算,最后吧結(jié)果返回出來(lái)
無(wú)參數(shù)的函數(shù):通常只是做一下操作而已
空函數(shù):什么事情都不做就是一個(gè)空函數(shù)(即便是一個(gè)空函數(shù),他也會(huì)有如下屬性)
7.函數(shù)的返回值:可返回任意類型的值
什么時(shí)候需要有返回值:具體情況具體分析
什么時(shí)候沒(méi)有返回值:具體情況具體分析
8.yield和return的區(qū)別
yield 停在那呢,掛起了
yield 能返回多次值;return 返回一次值
yield 保存函數(shù)狀態(tài)
9.函數(shù)的調(diào)用:函數(shù)名加()
10.函數(shù)參數(shù)
形參:定義函數(shù)時(shí)括號(hào)內(nèi)寫(xiě)的參數(shù)
形參在定義階段是不占內(nèi)存空間的,在調(diào)用的時(shí)候才占用內(nèi)存空間
實(shí)參:在調(diào)用函數(shù)時(shí)括號(hào)內(nèi)傳進(jìn)來(lái)的值
函數(shù)參數(shù)的具體用法
1.位置參數(shù):
1.按照位置傳參
按位置定義的形參必須要傳值
按位置定義的實(shí)參按照位置與形參一一對(duì)應(yīng)的傳
2.按照關(guān)鍵字傳數(shù):按照key=value的形式定義的實(shí)參,傳的時(shí)候與位置沒(méi)有關(guān)系
def foo(x,y):
pass
foo(1,2) #與形參一一對(duì)應(yīng)
foo(y=2,x=1) #關(guān)鍵字參數(shù),指名道姓的傳
foo(1,y=2) #混用位置實(shí)參和關(guān)鍵字實(shí)參
#混著用時(shí):注意:1.不能給同一個(gè)形參重復(fù)賦值
2.位置實(shí)參必須在關(guān)鍵字實(shí)參的前面
2.默認(rèn)參數(shù):在定義階段就已經(jīng)為形參賦值了,意味著在調(diào)用階段就可以不為默認(rèn)參數(shù)傳值
如果給默認(rèn)參數(shù)傳值了,就把一開(kāi)始設(shè)置的給替換了。
默認(rèn)參數(shù)定義的場(chǎng)景:大多數(shù)都是男性,女性很少時(shí)就可以設(shè)置個(gè)默認(rèn),當(dāng)然還有其他場(chǎng)景
注意:1.默認(rèn)參數(shù)必須在位置形參后面
2.默認(rèn)參數(shù)的值只在函數(shù)定義階段生效一次,定義之后的修改不會(huì)影響它的值
3.默認(rèn)參數(shù)不要弄成可變類型的,就像是列表,就是一個(gè)坑
3.動(dòng)態(tài)參數(shù)
可變長(zhǎng)度的參數(shù)(長(zhǎng)度指的是參數(shù)的個(gè)數(shù)):參數(shù)*,**
1.*會(huì)把多出來(lái)的值傳給z,并且以元組的形式返回
2.**會(huì)把多出來(lái)的值傳給z,并且以字典的形式返回
3.在實(shí)參中只要碰到*(),就是打散了
只要是可迭代的就可以用*
*就相當(dāng)于for循環(huán)的操作,遇到*先打散
*args,**kwargs(可傳任意值)
可變長(zhǎng)度的參數(shù):從實(shí)參的角度推算出形參對(duì)應(yīng)的形式*和**
針對(duì)按照位置定義的實(shí)參多出來(lái)的那部分,會(huì)被形參中的*處理,并且保存成元組的形式復(fù)制給args
針對(duì)按照關(guān)鍵字定義的實(shí)參多出來(lái)的那部分,會(huì)被形參中的**處理,并且保存成字典的形式復(fù)制給kwargs
1 # 1.舉例一、
2 def foo(x,y,*args):
3 print(x,y)
4 print(args)#args相當(dāng)于(3, 4, 5, 6, 7, 8, 9),那么*args相當(dāng)于*(3, 4, 5, 6, 7, 8, 9)
5 print(args[0])
6 print(*args) # 加個(gè)*就是把上面的元組給打散了,就還是和原來(lái)傳實(shí)參的時(shí)候的形式一樣了
7
8 foo(1,2,3,4,5,6,7,8,9)
9 foo(1,2,3,*(4,5,6,7,8,9)) #也可以這樣傳 就相當(dāng)于foo(1,2,3,4,5,6,7,8,9)
10
11 # 2.舉例二、
12 def bar(x,y,z):
13 print(x,y,z)
14 bar(1,2,3)
15 bar(*['b','a','c']) #bar('b','a','c')
16 bar(*'hel') #bar('h','e','l')
17 bar(*{'a':1,'b':2,'c':3}) #bar('b','a','c')
18 # 強(qiáng)調(diào):如果實(shí)參中出現(xiàn)了*和**,第一時(shí)間打散了去看
19
20 # 3.舉例三、
21 def foo(x,y,**kwargs):
22 print(x,y)
23 print(kwargs) #{'c': 3, 'd': 4, 'f': 6} 吧多余的元素以字典的形式返回了
24 print(*kwargs) #輸出c d f ,就是把字典打散了
25 #
26 # foo(1,y=2,c=3,d=4,f=6)
27
28 # 4.舉例四、
29 def index(x,y,z=1):
30 print(x,y,z)
31 def wrapper(*args,**kwargs):
32 index(args,kwargs)
33 index(*args, **kwargs) #就是打散了
34 wrapper(1,2,3)
35 wrapper(1,2)
36 wrapper(x=1,y=2)
37 wrapper(1,y=2)
38 '''可變長(zhǎng)度的參數(shù):從實(shí)參的角度推算出形參對(duì)應(yīng)的形式 * 和 **
39 針對(duì)按照位置定義的實(shí)參冗余的部分,會(huì)被形參中的 * 保存成元組的形式賦值給args
40 針對(duì)按照關(guān)鍵定義的實(shí)參冗余的部分,會(huì)被形參中的 ** 保存成字典的形式賦值給kwargs
41 強(qiáng)調(diào):
42 如果實(shí)參中出現(xiàn)了 * 和 **,第一時(shí)間打散了去看。
43 '''
強(qiáng)調(diào):
如果實(shí)參中出現(xiàn)了*和**,第一時(shí)間打散了去看
11.命名關(guān)鍵字參數(shù)(了解):在定義階段,在*之后定義的形參稱為命名關(guān)鍵字參數(shù)
特點(diǎn)是:在調(diào)用階段,該參數(shù)必須以關(guān)鍵字的形式被傳值
def foo(x,y,*,a,b):
print(x)
print(y)
print(a)
print(b)
foo(1,2,b=20,a=10)
控制函數(shù)調(diào)用的時(shí)候必須以關(guān)鍵字傳參的時(shí)候就用命名關(guān)鍵字傳參
總結(jié)
以上是生活随笔為你收集整理的python参数_python参数的介绍的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
                            
                        - 上一篇: 怎么判断尾插小板坏了
 - 下一篇: git 合并冲突_git分支管理的策略和