本文是在上一篇的基础上编写的,若要查看见:雨滴测试:python基础系列教程1-可能是你见过的最通俗易懂的教程​zhuanlan.zhihu.com

五. python函数

所谓的函数,就是具有特定功能的代码块,比如说登录,本身可以使用函数来实现登录的功能。

若要通过函数实现功能,一般都会要两个步骤:函数的定义

函数的调用

1.函数的定义

函数的定义一般会包括5个部分,分别是关键字,函数名字,圆括号,函数体,以及返回语句。需要说明的是,有的函数可以不用返回语句 。

2.函数的调用

函数的调用其实就是要使用函数这个功能了,如我们实现了一个加法的函数,这时我们要使用他来计算,就需要进行调用。调用时也非常简单,直接在调用处编写函数名即可,如上面的定义的函数,如果调用的话,如下:

那么编写函数的函数从这里也可以看出,通过函数的调用,可以是函数进行重复使用,减少代码量 。

3.函数名

函数名可以随便起,但是在同一个文件不能重复起相同的名字 。同时为了函数在调用时被更好的理解,一般其的函数名要有语义,什么是语义呢 ? 简单的说就是通过函数的名字,就知道你这个功能是干什么用的 ? 比如我们要实现的是加法操作,那么就可以使用add来表示 。

有时候函数名字会用到多个英文名,这时要用_将多个英文隔开,同时需要注意的是,函数名字都需要小写 。如:get_info()函数 。

比较规范的函数命名:login()

get_info()

get_total_score()

不规范的函数命名:xxx()

getInfo()

GetInfo()

需要说明的是,虽然以上命名的函数不太规范,但是它不会报错,只是在python不提倡如上方式命名。

4.函数体

函数体就是函数具体的业务,如果你定义的函数是登录,那么函数体实现的就是登录的业务,如果你定义的函数是下单,那么函数体实现的就是下单。

函数的执行体其实并非以上这么简单 。一般来说,函数体其实就是由多行代码组成的业务逻辑代码 。

5.函数的返回

函数的返回是用于退出该函数,函数的返回使用return来表示,也就是说遇到了return语句,意味着一个分支的结束或者整个一个业务的结束 。

return语句后面的值是非常灵活的,它不仅可以跟任意数据类型,而且也支持表达式,函数。如果return后面没有任何值,默认为Nonereturn None,如果是None,可以忽略不写 。

return value,value可以是代码块中计算出来的值,也可以是一个表达式 。

return val1,...,valn。return也可以返回多个值。

6.函数的参数

函数的参数,就是圆括号()内定义的名字;为了能使函数更好的满足各种业务需求,就要求函数的参数接收不同类型的数据;不同个数的数据,这时函数的参数就派上用场了 。在函数的参数中,一般包括如下四种参数:位置参数

默认参数

关键字参数

可变参数

形式参数和实际参数

在介绍函数的参数之前,就不得不提到形式参数和实际参数 。形式参数,是在括号内的参数就叫形式参数,也称形参

实际参数,调用函数时,实际传入到函数内的值 ,也称实参。

位置参数

所谓的位置参数,主要是指调用函数时的参数数量和位置要和定义的形参中的一致。传多或传少都会报异常(TypeError)。

关键字参数

使用位置参数有个弊端就是,如果参数很多的话,你就很难记住那个参数在前,那个参数在后,这样可能会导致本来要给第一个参数传值,结果传给了第二个参数 。

那么,使用关键字参数就可以解决以上的问题 。

关键字参数是指传值时要以key=value形式,key代表函数中的形参名称,value就是传递给函数的实际的值。

默认参数

如果函数调用时,传递的实际参数经常会是一个值,那我们就可以给这个参数设置默认值 。如果设置默认参数,需将在位置参数后 。

可变化参数

这里的可变化参数指的传递参数的数量可以发送变化,比如我可以传递3个参数,也可以传递6个,甚至更多 。

可变化参数有两种类型:分别是用来接收列表形式的可变参数,调用函数时跟位置参数一样

用来接收字典形式的可变参数 。调用函数时跟为关键字参数一样。

那么可变参数和位置参数,关键字参数最大的不同就是传递参数的数量不受限制 。

以下为列表形式的可变参数:

以下为字典形式的可变参数:

也可以将两种可变形式的参数结合起来使用

7.匿名函数

在前面介绍的函数中,每个函数都会有一个唯一的名称用于标识,在python语法中还有一种无名字的函数,简称匿名函数。它使用关键字lambda表示,普通的函数若可以用一行进行实现的话,那么该函数就可以使用匿名函数来代替。

六.面向对象

面向对象编程(Object-oriented Programming,简称 OOP),面向对象是一种编程思想。

面向对象将现实的事物抽象出来,然后抽象成 类 ( class ),给类定义属性和方法后,再将类实例化成 实例 ( instance ) ,通过访问实例的属性和调用方法来进行使用。

1.类的定义

类是具有相同特性(数据元素)和行为(功能)的对象的抽象。因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象,

语法格式:

class 类名():

多个(≥0)类属性...

多个(≥0)类方法...

从上图我们可以看出:类 : 通过class + 类名 申明一个类。

属性 : 在类中可以申明变量,类中的变量称为属性

方法:在类中的函数称为方法

2.类的实例

当我们创建一个类后,这个类并不能直接使用,必须需要创建具体的对象才能使用类中的属性和方法。

创建类的对象,也叫类的实例化对象 ,或者类申明对象 。 同时类的对象可以申明多个对象 。每个对象就是类的一个具体化实例 。

3.构造方法

虽然通过以上案例可知,通过实例化的对象直接调用类属性,但是一般不会这么写,理由是直接调用的属性如果写错会报错,而且也可以通过构造方法来赋值更加方便。

python的构造方法使用 __init__() 方法来表示,每次调用类的时候会自动被调用 ,主要用来初始化数据。

4.self介绍

python规定,类内的方法,至少要包括一个参数,这个参数名就是self.当然如果你改成其它的名称也不会报错 。 只是python中这只是一种约定的俗称。

这个self其实就是代表对象自己,当同一个类中实例化了多个对象,当不同的对象调用类中的方法时,就会把对象的引用作为第一个参数自动传给被调用的方法.这样python解释器就就知道到底是那个对象调用的该方法.

5.类的方法

在python中,类的方法包括普通方法,静态方法,类方法。

普通方法:就是上面案例中使用到的方法,在方法内都会默认带个self参数,且只能被对象调用;

静态方法:在方法前使用@staticmethod装饰的且不带self参数的方法叫静态方法,类的静态方法可以有参数也可以没有参数,直接使用类名调用

类方法:默认带个cls参数,可以被类和对象调用,需要在方法前加@classmethod装饰器

以下为普通方法

静态方法:

类方法:

6.类的变量

在类中的变量主要包括类变量,实例变量和局部变量,其主要区别就是作用范围不同 。作用范围从大到小来进行排序的话依次是:类变量>实例变量>局部变量

类变量类变量是定义在类内,方法之外的变量 。

类方法的调用方式有 2 种,既可以使用类名直接调用,也可以使用类的实例化对象调用。

实例变量实例变量指的是在任意类方法内部,以“self.变量名”的方式定义的变量,其特点是只作用于调用方法的对象。

定义的实例变量可以在类中的不同方法间共享数据 。

实例变量只能通过对象名访问,无法通过类名访问。

局部变量局部变量是直接在方法内定义的变量且以“变量名=值”的方式进行定义

局部变量的使用范围也仅限于所定义的方法内

7.封装

面向对象有三大特性,分别是分装,继承和多态 。

那么什么是封装呢 ? 简单的来说就是给数据和行为设置权限,从而保护隐私数据。也就是说该让用户访问到的数据,我们可以开放给用户,让用户可以直接使用,不该让用户访问的数据,我们可以通过将数据隐藏起来,从而达到无法访问的目的。

就好比我们使用的鼠标和键盘,至于鼠标内部的零件长什么样,我们不知道,也不用关注,只需要将按键和操作的部件提供给用户即可。那么这个就是一个封装的例子 。

python的封装其实就是将不该让用户访问的数据设置为私有的,从而达到隐藏的目的。默认情况下,python类的变量和方法都是共有的,他们的名称前都没有下划线

如果类中的变量和函数,其名称以双下划线“__”开头,则该变量和函数就为私有的,只有在类内访问 。

如果是以_下划线开头的方法和属性,则是无法导入的。

上面通过_设置的私有变量和方法还能被访问,这是因为在python中并不会真正的限制你调用,这种设置更多的是一种约定的俗称 。

以下是将变量和方法通过双下划线设置

注意:以上说的是并不能被直接被调用,而非不能被调用 。

8.继承

类的继承是两个或多个类产生了一定的关系,其中一个是父类,另外一个就是子类。这就像生活中父与子的关系 。在python中的子类会继承会获得父类的所有非私有的功能 。对于父类中的功能,都是拿来即用。

9.多态

有时候我们在父类中定义了一个方法,但是由于父类的方法又不满足要求,我们想在父类的方法基础上进行扩展,怎么办呢 ? 这时就用到了多态 。要使用到多态就必须满足两个条件:继承:多态一定是发生在父类和之类之间的。

重写:子类重写父类的方法,注意两个方法的名字一定是一样的,否则不叫重写 。

那如果想通过子类对象调用父类的方法呢 ? 就可以通过super关键字来进行调用

本文未完待续,喜欢的朋友加个关注,后续会有更多测试相关的图文发布。

python系列教程_python基础学习系列教程2-进阶之路中绕不开的知识点。相关推荐

  1. python twisted教程_Python Twisted 学习系列20(转载stulife最棒的Twisted入门教程)

    第二十部分 轮子中的轮子: Twisted和Erlang 简介 在这个系列中,有一个事实我们还没有介绍,即混合同步的"普通Python"代码与异步Twisted代码不是一个简单的任 ...

  2. python画图零基础入门教程_Python画图学习入门教程

    本文实例讲述了Python画图的基本方法.分享给大家供大家参考,具体如下: Python:使用matplotlib绘制图表 python绘制图表的方法,有个强大的类库matplotlib,可以制作出高 ...

  3. python代码测试_Python入门学习系列——Python代码测试

    Python代码测试 对于编写的代码,可以使用unittest模块中的相关方法进行测试. 测试函数 首先定义一个简单的函数,该函数用来合并名称并返回. name_function.py: def ge ...

  4. python ide安装_Python基础学习笔记(一)安装以及IDE的配置

    一.初识Python 版本:python-3.4.3.amd64 初次接触Python,没有使用Python 2.x进行开发真实项目的经历.所以不知2.x版本和3.x版本孰优孰劣,目前是作为一门兴趣来 ...

  5. python 复数幂_python基础学习——运算符(1)

    python非常显著的一个特点是计算能力超级强,支持各种计算,本文主要介绍几大常用的运算符在python中的应用方法:包括7大运算符:算术运算符.比较运算符.赋值运算符.逻辑运算符.成员运算符.身份运 ...

  6. python票务系统_python基础学习:模拟火车订票系统

    2020-12-20 str1 = ["车次", "出发站-到达站", "出发时间", "到达时间", "历时 ...

  7. Python学习教程(Python学习路线_Python基础学习教程_Python视频教程):初学者新手怎样快速入门Python

    Python学习教程(Python学习路线_Python基础学习教程_Python视频教程):初学者新手怎样快速入门Python? 人生苦短,我用Python!!!短短几个字,现在在各大学习类平台随处 ...

  8. 视频教程-快速入门Python基础教程_Python基础知识大全-Python

    快速入门Python基础教程_Python基础知识大全 十余年计算机技术领域从业经验,在中国电信.盛大游戏等多家五百强企业任职技术开发指导顾问,国内IT技术发展奠基人之一. 杨千锋 ¥99.00 立即 ...

  9. 视频教程-快速入门Python基础教程_Python基础进阶视频-Python

    快速入门Python基础教程_Python基础进阶视频 十余年计算机技术领域从业经验,在中国电信.盛大游戏等多家五百强企业任职技术开发指导顾问,国内IT技术发展奠基人之一. 杨千锋 ¥199.00 立 ...

最新文章

  1. 玩转车联网1---初识OBD和行车助手
  2. 如何二值图转化为灰度图_木工真空吸附雕刻机如何用精雕5.21把精雕图模型转为灰度图...
  3. 怎么添加本地音乐_网易云音乐:60G免费云盘+隐藏彩蛋、技巧
  4. mysql xa 和普通事务_一文看懂MySQL中基于XA实现的分布式事务
  5. 【debug】 烧写 ttn-otaa.ino提示 undefined reference to ‘table_g‘ / ‘table_get_ostime‘
  6. 笨小猴(洛谷P1125题题解,Java语言描述)
  7. 遗传算法 优化 工具箱 matlab pareto front,matlab遗传算法三目标优化,出来的pareto前沿图只是二维图...
  8. Linux常用命令—文件处理命令—文件处理命令
  9. elasticsearch将数据导出json文件【使用elasticdump】
  10. MySQL:unknown variable #39;master-host=masterIP#39; [ERROR] Aborting
  11. 2007年网络安全技术发展分析
  12. C语言——判断一个数是否为素数(2种方法)
  13. mpa和pis_1psia等于多少mpa
  14. python怎么算列表的平方_总算明了python如何求平方
  15. 关于骨骼(Skeleton)、绑定(Rigging)、蒙皮(Skinning)、刷权重(Weight Painting)那些事儿(9月3日 更新)
  16. LeetCode动态规划题解
  17. 再谈留数定理计算实积分
  18. 吴军的数学通识讲义 读书笔记
  19. 信息安全技术实验PGP邮件加密系统工具下载过程记录
  20. 代码托管和服务功能多元化,看码客帮如何做软件众包

热门文章

  1. 安卓手机管理器_神器推荐,安卓手机拯救者来了!!!
  2. html() 无效,Internet Explorer无效HTML解析代码漏洞
  3. matlab 传递函数求截止频率,高分求解RC滤波电路的传递函数和截止频率
  4. mbot编程机器人怎么连接蓝牙_台式机蓝牙怎么连接
  5. Android图片完整性检验,Android安全测试之应用完整性校验检测
  6. python工程师干什么的_Python就业前景和工资待遇分析,你学Python了吗?
  7. 第十三章 大型网站典型故障分析案例(待续)
  8. tomcat7的安装与maven安装
  9. zoj2587唯一最小割
  10. [转]java中的值传递和引用传递