python11-28笔记(1.6-1.7)
1.6 多類型傳值和冗余參數(shù)
多類型傳值:
比如def fun(x,y),定義2個(gè)形參
定義一個(gè)元組t=(1,2),如果把元組當(dāng)做實(shí)參傳入到函數(shù)中,會(huì)報(bào)錯(cuò)
如何將元組當(dāng)做不同類型的參數(shù)傳入到函數(shù)中
fun(t) 代表傳入的是元組或者這樣調(diào)用
fun((1,2))
注意實(shí)參的個(gè)數(shù)要和形參一致,但是不能這樣傳入 fun(t,1) 這樣會(huì)語(yǔ)法錯(cuò)誤
也可以這樣傳參 fun(x=1,y=2),但是要和形參定義的名字一致
字典傳參
dic={"x":1,"y":2,"z":3}
fun(dic) "" 代表傳入的參數(shù)是字典類型
錯(cuò)誤 dic={'a':1,'n':2,'c':3}
fun(**dic) 這樣傳參也是錯(cuò)誤的 字典的key值必須和函數(shù)形參定義的一致
冗余參數(shù):(處理多余實(shí)參)
有時(shí)候傳入實(shí)參的時(shí)候傳入了更多的參數(shù),需要處理。
def fun(x,*args,**kwargs): x是命名參數(shù) 后面2個(gè)可以不傳入實(shí)參
In [26]: fun(2,2)
2
(2,) 第二個(gè)參數(shù)傳入
{}
In [27]: fun(2,2,y=2) 第三個(gè)參數(shù)傳入字典的key和value
2
(2,)
{'y': 2}
總結(jié),冗余參數(shù)會(huì)傳到元組里,默認(rèn)參數(shù)(y=xx,c=xx)會(huì)傳到字典里,或者直接用**dic傳入字典
#!/usr/bin/python
#coding:utf-8
import os
x='/proc/'
def fun(x):
if x.isdigit():
return True
return False
def meminfo(y):
pwd= x+y+'/status'#獲取進(jìn)程文件的路徑
with open(pwd) as damem:
for p_da in damem:#對(duì)每個(gè)進(jìn)程內(nèi)存累加并得出總內(nèi)存和占比
if p_da.startswith('VmRSS'):
p_mem = p_da.split()[1]
p_mem = float(p_mem)
return p_mem
for i in os.listdir(x):
if fun(i):
if meminfo(i) > 0:
print '進(jìn)程號(hào):%s 占用內(nèi)存:%s k'%(i, meminfo(i))
1.7 函數(shù)的遞歸調(diào)用
定義函數(shù)的時(shí)候,在函數(shù)體內(nèi)調(diào)用自身叫做遞歸,通常用作階乘計(jì)算,也可以用循環(huán)來(lái)實(shí)現(xiàn)
循環(huán)實(shí)現(xiàn):
#!/usr/bin/python
def factorial(n):
sum=1
for i in range(1,n+1):
sum *=i
return sum
print factorial(5)
遞歸調(diào)用有一個(gè)前提,不能一直無(wú)限調(diào)用下去,必須有一個(gè)結(jié)束遞歸的條件
遞歸調(diào)用
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1)
print factorial(5)
必須有最后的默認(rèn)結(jié)果
if n == 0
遞歸參數(shù)必須向默認(rèn)結(jié)果收斂的:
factorial(n-1)
轉(zhuǎn)載于:https://blog.51cto.com/4833797/2323489
總結(jié)
以上是生活随笔為你收集整理的python11-28笔记(1.6-1.7)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 英语_Java常用英语汇总(更
- 下一篇: 为什么将表格的method改为post后