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)

转载于:https://blog.51cto.com/4833797/2323489

python11-28笔记(1.6-1.7)相关推荐

  1. 贺利坚老师汇编课程28笔记:使用附加段寄存器ES进行拷贝

    指路老师的博客链接 将内存FFFF:0 ~ FFFF:B中的数据拷贝到0:200~0:20b单元中 段地址每循环一次变一次的初始方案 ;初始方案 ASSUME CS:CODE CODE SEGMENT ...

  2. 贺利坚老师汇编课程28笔记:在代码段使用数据加个标号start

    指路老师的博客 编程计算以下8个数据的和,结果存放在AX寄存器里中 第一版代码 ASSUME CS:CODE CODE SEGMENT DW 0123H,0456H,0789H,0ABCH,0DEFH ...

  3. 白板机器学习笔记 P28-P35 支持向量机

    视频地址:https://www.bilibili.com/video/BV1aE411o7qd?p=28 笔记地址:https://www.yuque.com/books/share/f4031f6 ...

  4. python语言特性-------python2.7教程学习【廖雪峰版】(一)

    开始学习廖雪峰的py2.7教程: 2017年6月5日12:54:28 笔记: 廖雪峰python2.7教程 1.用任何编程语言来开发程序,都是为了让计算机干活.  2.Python是一种相当高级的语言 ...

  5. 前端面经笔记 2021.8.28

    前端面经笔记 2021.8.28 下面哪些执行结果为true() A.'foo' == new function(){ return String('foo'); }; B.'foo' == new ...

  6. Li‘s 影像组学视频学习笔记(28)-ROI/病灶体积的计算、Li‘s have a solution and plan.

    本笔记来源于B站Up主: 有Li 的影像组学的系列教学视频 本节(28)主要讲解: 用SimpleITK包进行ROI/病灶体积的计算 1.加载包 import SimpleITK as sitk im ...

  7. 笔记28 接受请求的输入 ——处理表单

    Spittr应用有两个基本的领域概念:Spitter(应用的用户)和 Spittle(用户发布的简短状态更新). 在笔记25中已经对Spittle进行了简单的构建,现在对Spitter进行实现.主要是 ...

  8. 网络存储 linux 访问,Linux基础教程学习笔记28——使用Samba访问网络存储

    Linux基础教程学习笔记28--使用Samba访问网络存储 SMB用于Windows和类Linux系统直接的文件共享 安装samba client包: [root@linuxidc~]# yum i ...

  9. Git笔记(28) 签署工作

    Git笔记(28) 签署工作 1. 签署工作 2. GPG 介绍 3. 签署标签 4. 验证标签 5. 签署提交 6. 使用环境 1. 签署工作 Git 虽然是密码级安全的,但它不是万无一失的 如果从 ...

  10. 视觉SLAM笔记(28) Ceres

    视觉SLAM笔记(28) Ceres 1. 简介 2. 安装 3. 拟合曲线 1. 简介 Ceres 库面向 通用的最小二乘问题的求解 作为用户,需要做的就是定义优化问题,然后设置一些选项,输入进 C ...

最新文章

  1. 814:The Letter Carrier's Rounds
  2. 字节跳动 2019 ICME 双赛道冠军团队方案分享
  3. 0b3398php,思想道德修养与法律基础(九江职业技术学院)知到2020题目及答案
  4. C/C++基本类型字节
  5. 南京铁道学院计算机应用,南京铁道职业技术学院交通运营管理专业怎么样
  6. 360全景倒车影像怎么看_别克关怀-后视镜和倒车影像 倒车时到底看哪个
  7. 求树的直径+并查集(bfs,dfs都可以)hdu4514
  8. Confluence 附件(Attachments)宏
  9. matlab norm函数使用_「matlabnorm」matlab中norm函数的用法 - 金橙教程网
  10. 手机怎么断开电脑微信连接服务器,微信如何用手机退出电脑登录不了怎么办
  11. activti面试突击
  12. Python爬虫:新浪新闻详情页的数据抓取(函数版)
  13. java学习笔记第三周(二)
  14. 2022年TikTok的9个变现模式
  15. ACPC2015 K 树的直径
  16. windows下制作macos安装u盘_制作MacOS系统启动盘教程以及安装教程
  17. 行车记录仪开发方案比较--转载
  18. RGB888 和 RGB565
  19. RGB 颜色透明16进制表示
  20. 轻巧的批量图片压缩工具imgfast

热门文章

  1. python3.7代码_Centos7源代码安装python3.7,centos7,源码,python37
  2. java 数字图片识别_java – 识别图像中的数字
  3. 北斗通信运营商_国内首个“北斗+5G”应用方案发布 配套5G产品将于年底量产上市...
  4. html php滚动代码,html中滚动条的代码是什么?如何设置html滚动条?
  5. failed to initialize nvml driver/library version mismatch ubuntu
  6. Faste R-CNN的安装及测试
  7. toString()和String.valueOf()的区别(转)
  8. Python中字符串操作函数string.split('str1')和string.join(ls)
  9. python2 pip安装包等出现各种编码错误UnicodeDecodeError: 'ascii'(/或者utf-8) codec can't decode byte 0xd2......
  10. MySQL找出锁等待