运维开发网

python11-28笔记(1.6-1.7)

运维开发网 https://www.qedev.com 2020-03-11 10:18 出处:51CTO 作者:wooinsung
1.6多类型传值和冗余参数多类型传值:比如deffun(x,y),定义2个形参定义一个元组t=(1,2),如果把元组当做实参传入到函数中,会报错如何将元组当做不同类型的参数传入到函数中fun(t)代表传入的是元组或者这样调用fun((1,2))注意实参的个数要和形参一致,但是不能这样传入fun(t,1)这样会语法错误也可以这样传参fun(x=1,y=2),但是要和形参定义的名字一致字典传参dic=

1.6 多类型传值和冗余参数

多类型传值:

比如def fun(x,y),定义2个形参

定义一个元组t=(1,2),如果把元组当做实参传入到函数中,会报错

如何将元组当做不同类型的参数传入到函数中

fun(t) 代表传入的是元组或者这样调用

fun((1,2))

注意实参的个数要和形参一致,但是不能这样传入 fun(t,1) 这样会语法错误

也可以这样传参 fun(x=1,y=2),但是要和形参定义的名字一致

字典传参

dic={"x":1,"y":2,"z":3}

fun(dic) "" 代表传入的参数是字典类型

错误 dic={'a':1,'n':2,'c':3}

fun(**dic) 这样传参也是错误的 字典的key值必须和函数形参定义的一致

冗余参数:(处理多余实参)

有时候传入实参的时候传入了更多的参数,需要处理。

def fun(x,*args,**kwargs): x是命名参数 后面2个可以不传入实参

In [26]: fun(2,2)

2

(2,) 第二个参数传入

{}

In [27]: fun(2,2,y=2) 第三个参数传入字典的key和value

2

(2,)

{'y': 2}

总结,冗余参数会传到元组里,默认参数(y=xx,c=xx)会传到字典里,或者直接用**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'#获取进程文件的路径

with open(pwd) as damem:

for p_da in damem:#对每个进程内存累加并得出总内存和占比

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 '进程号:%s 占用内存:%s k'%(i, meminfo(i))

1.7 函数的递归调用

定义函数的时候,在函数体内调用自身叫做递归,通常用作阶乘计算,也可以用循环来实现

循环实现:

#!/usr/bin/python

def factorial(n):

sum=1

for i in range(1,n+1):

sum *=i

return sum

print factorial(5)

递归调用有一个前提,不能一直无限调用下去,必须有一个结束递归的条件

递归调用

def factorial(n):

if n == 0:

return 1

else:

return n * factorial(n-1)

print factorial(5)

必须有最后的默认结果

if n == 0

递归参数必须向默认结果收敛的:

factorial(n-1)

0

精彩评论

暂无评论...
验证码 换一张
取 消