Python测试开发之函数
对于初学者而言,感觉函数还是不是很好理解,尤其是当写一个脚本,或者是写一个算法,认为可能for循环就已经可以解决的问题为什么还要用函数来实现呢?
今天就来说一下函数的优点,其实函数的最大优点就是可重用,一个函数实现后可以被其他不同的脚本来调用,这也就是体现了代码的重用性。
- 函数的定义:def 函数名():,在定义函数时,一定要用关键字def开头,然后紧接着是函数名,括号里是要传的的参数,当然也可不传,最后面是个冒号:
def add(x,y):
return x+y
这就是一个最简单的函数
2.函数的返回值:Python中自定义的函数如果有return,则返回实际的结果,如果没有返回值,则返回None,这是Python与其他语言的区别之一
3.函数的调用:在定义好一个函数后,如果要实现函数的功能,一定要对其进行引用,不然函数体是不会被执行的,调用的方法也很简单,就是函数名和需要的参数即可
例如上边add函数的调用: add(2,3)即可返回5

注意:此处如果传入两个字符串也是OK的,这也是Python的特殊之处,他会根据传入的值来进行相应操作,如果传入的是两个数字,则进行相加,如果是两个字符串则进行拼接,但是此处必须传入的类型一致,否则会报错,所以可以根据你的需要进行处理,如果要做特定的实现可以用isinstance来判断一下类型,来达到自己想要的效果。


4.函数的传参:函数的参数分为按值传递和按地址传递。按值传递是将不可变的参数传递给函数,按地址传递是将可变的参数传递给函数。此处的可变参数与不可变参数是相对内存地址而言的,如果传入的是字符串、元祖、数字,是不可变对象,就是按值传递,为什么说是不可变的,例如如果将a=1这样一个变量传递给函数,那么就是说将1的内存地址传给函数,那么计算机给1分配过内存地址后就不会在变化,所以说在函数体内对a做的任何操作都不会影响函数体外a的值,来看一个例子就会比较好理解了:
a =1
def print_sth(s):
s=s+1
return s
print print_sth(a)
print a
执行结果:

下面我们来看一下原理:
这就是按值传递的原理,当函数体内对a进行加1操作,实际是指向另一个内存地址了,用id()就可以查看内存地址
5.看了按值传递的原理,按引用传递应该就好理解了,按引用传递就是传递一些可变参数,例如list、dict等,先来看一下他们的内存地址的变化:

可以看到当你在对一个list进行操作时,它指向的内存地址实际是没有变化的,所以说当传递可变参数时,函数体内对变量的操作是会影响函数体外的变量的,看一个例子就更明白了:

现在对函数的按值传递和按引用传递参数应该非常了解了吧。
6.可变参数的表示:*args表示传入的是一个元祖,**args表示传入的是一个字典,在实际使用中当不确定要传入多少个参数时,就可以使用这种方法:
def func(a,*args):
for i in args:
a +=i
return a

你会发现,你传递几个参数都不会出问题,这就是可变参数的好处,然后看一下**args吧:

看完这些,你是否对函数有了很大理解,现在应该感觉函数可以实现很多你想要实现的功能吧,这可不仅仅是几个for循环就能实现的哦,赶快学学函数吧,这也是后面写好代码的基础。
Python测试开发之函数的更多相关文章
- python测试开发django-rest-framework-63.基于函数的视图(@api_view())
前言 上一篇讲了基于类的视图,在REST framework中,你也可以使用常规的基于函数的视图.它提供了一组简单的装饰器,用来包装你的视图函数, 以确保视图函数会收到Request(而不是Djang ...
- python测试开发django-36.一对一(OneToOneField)关系查询
前言 前面一篇在xadmin后台一个页面显示2个关联表(OneToOneField)的字段,使用inlines内联显示.本篇继续学习一对一(OneToOneField)关系的查询. 上一篇list_d ...
- python测试开发django-15.查询结果转json(serializers)
前言 django查询数据库返回的是可迭代的queryset序列,如果不太习惯这种数据的话,可以用serializers方法转成json数据,更直观 返回json数据,需要用到JsonResponse ...
- 2019第一期《python测试开发》课程,10月13号开学
2019第一期<python测试开发>课程,10月13号开学! 主讲老师:上海-悠悠 上课方式:QQ群视频在线教学,方便交流 本期上课时间:10月13号-12月8号,每周六.周日晚上20: ...
- Python测试开发-创建模态框及保存数据
Python测试开发-创建模态框及保存数据 原创: fin 测试开发社区 前天 什么是模态框? 模态框是指的在覆盖在父窗体上的子窗体.可用来做交互,我们经常会看到模态框用来登录.确定等等,到底是怎 ...
- Python测试开发-浅谈如何自动化生成测试脚本
Python测试开发-浅谈如何自动化生成测试脚本 原创: fin 测试开发社区 前天 阅读文本大概需要 6.66 分钟. 一 .接口列表展示,并选择 在右边,点击选择要关联的接口,区分是否要登录, ...
- python测试开发django-41.crispy-forms设计标签式导航菜单(TabHolder)
前言 xadmin的详情页面主要是用form_layout布局,学会了完全可以不用写html代码,也能做出很好看的页面. xadmin的html页面是用的Bootstrap3框架设计的,layout布 ...
- python测试开发django-16.JsonResponse返回中文编码问题
前言 django查询到的结果,用JsonResponse返回在页面上显示类似于\u4e2d\u6587 ,注意这个不叫乱码,这个是unicode编码,python3默认返回的编码 遇到问题 接着前面 ...
- 【python测试开发栈】python基础语法大盘点
周边很多同学在用python,但是偶尔会发现有人对python的基础语法还不是特别了解,所以帮大家梳理了python的基础语法(文中的介绍以python3为例).如果你已然是python大牛,可以跳过 ...
随机推荐
- Spring Cloud官方文档中文版-Spring Cloud Config(上)
官方文档地址为:http://cloud.spring.io/spring-cloud-static/Dalston.SR2/#spring-cloud-feign 文中例子我做了一些测试在:http ...
- Java基础(00)
Java发展史 Java之父:詹姆斯.高斯林(James Gosling). SUN(Stanford University Network 斯坦福大学网络公司)产物. 1995年5月23日,java ...
- Memcached统计命令
1. Memcached stats命令: Memcached stats 命令用于返回统计信息例如 PID(进程号).版本号.连接数等. 语法: stats 输出信息说明: pid: memcach ...
- LeetCode 455. Assign Cookies (分发曲奇饼干)
Assume you are an awesome parent and want to give your children some cookies. But, you should give e ...
- 开发手机APP的神器 --- ionic
前 言 在如今的生活中,手机已经与我们的生活紧紧的联系在了一起.而手机APP更是其中,重要的一环.今天,影子就为大家介绍一种开发手机APP的超级神器---ionic. ioni ...
- 如何在 Apple TV 上使用描述文件
您可以使用 OS X 上的 Apple Configurator 在 Apple TV 上安装配置描述文件. 开始前,请在 Mac 上安装最新版本的 Apple Configurator(如果尚未安装 ...
- 深入理解JavaScript中的继承:原型链篇
一.何为原型链 原型是一个对象,当我调用一个对象的方法时,如果该方法没有在对象里面,就会从对象的原型去寻找.JavaScript就是通过层层的原型,形成原型链. 二.谁拥有原型 任何对象都可以有原型, ...
- Web前端性能优化全攻略[转载]
1. 尽量减少 HTTP 请求 (Make Fewer HTTP Requests) 作为第一条,可能也是最重要的一条.根据 Yahoo! 研究团队的数据分析,有很大一部分用户访问会因为这一条而取得最 ...
- 小米/红米导入VCF联系人乱码问题解决
PS:尽量不要用什么豌豆荚啊.微信啊.QQ啊之类的通讯录备份,那就等于把自己的通讯录免费送给腾讯他们了....还是自己手动的好一些,但是小白用户或者经常丢手机的卖就卖吧,总比联系人都丢了要好~~~ 默 ...
- hadoop的webUI查看Live Nodes为1
开起了两个节点,而且jps查看确实开启了,但是用web端50070查看却一直显示为1 经过排查,将虚拟机直接copy一份,但是之前配置好hadoop环境的namenode格式化(format)生成的文 ...