python系列教程_python基础学习系列教程2-进阶之路中绕不开的知识点。
本文是在上一篇的基础上编写的,若要查看见:雨滴测试: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-进阶之路中绕不开的知识点。相关推荐
- python twisted教程_Python Twisted 学习系列20(转载stulife最棒的Twisted入门教程)
第二十部分 轮子中的轮子: Twisted和Erlang 简介 在这个系列中,有一个事实我们还没有介绍,即混合同步的"普通Python"代码与异步Twisted代码不是一个简单的任 ...
- python画图零基础入门教程_Python画图学习入门教程
本文实例讲述了Python画图的基本方法.分享给大家供大家参考,具体如下: Python:使用matplotlib绘制图表 python绘制图表的方法,有个强大的类库matplotlib,可以制作出高 ...
- python代码测试_Python入门学习系列——Python代码测试
Python代码测试 对于编写的代码,可以使用unittest模块中的相关方法进行测试. 测试函数 首先定义一个简单的函数,该函数用来合并名称并返回. name_function.py: def ge ...
- python ide安装_Python基础学习笔记(一)安装以及IDE的配置
一.初识Python 版本:python-3.4.3.amd64 初次接触Python,没有使用Python 2.x进行开发真实项目的经历.所以不知2.x版本和3.x版本孰优孰劣,目前是作为一门兴趣来 ...
- python 复数幂_python基础学习——运算符(1)
python非常显著的一个特点是计算能力超级强,支持各种计算,本文主要介绍几大常用的运算符在python中的应用方法:包括7大运算符:算术运算符.比较运算符.赋值运算符.逻辑运算符.成员运算符.身份运 ...
- python票务系统_python基础学习:模拟火车订票系统
2020-12-20 str1 = ["车次", "出发站-到达站", "出发时间", "到达时间", "历时 ...
- Python学习教程(Python学习路线_Python基础学习教程_Python视频教程):初学者新手怎样快速入门Python
Python学习教程(Python学习路线_Python基础学习教程_Python视频教程):初学者新手怎样快速入门Python? 人生苦短,我用Python!!!短短几个字,现在在各大学习类平台随处 ...
- 视频教程-快速入门Python基础教程_Python基础知识大全-Python
快速入门Python基础教程_Python基础知识大全 十余年计算机技术领域从业经验,在中国电信.盛大游戏等多家五百强企业任职技术开发指导顾问,国内IT技术发展奠基人之一. 杨千锋 ¥99.00 立即 ...
- 视频教程-快速入门Python基础教程_Python基础进阶视频-Python
快速入门Python基础教程_Python基础进阶视频 十余年计算机技术领域从业经验,在中国电信.盛大游戏等多家五百强企业任职技术开发指导顾问,国内IT技术发展奠基人之一. 杨千锋 ¥199.00 立 ...
最新文章
- 玩转车联网1---初识OBD和行车助手
- 如何二值图转化为灰度图_木工真空吸附雕刻机如何用精雕5.21把精雕图模型转为灰度图...
- 怎么添加本地音乐_网易云音乐:60G免费云盘+隐藏彩蛋、技巧
- mysql xa 和普通事务_一文看懂MySQL中基于XA实现的分布式事务
- 【debug】 烧写 ttn-otaa.ino提示 undefined reference to ‘table_g‘ / ‘table_get_ostime‘
- 笨小猴(洛谷P1125题题解,Java语言描述)
- 遗传算法 优化 工具箱 matlab pareto front,matlab遗传算法三目标优化,出来的pareto前沿图只是二维图...
- Linux常用命令—文件处理命令—文件处理命令
- elasticsearch将数据导出json文件【使用elasticdump】
- MySQL:unknown variable #39;master-host=masterIP#39; [ERROR] Aborting
- 2007年网络安全技术发展分析
- C语言——判断一个数是否为素数(2种方法)
- mpa和pis_1psia等于多少mpa
- python怎么算列表的平方_总算明了python如何求平方
- 关于骨骼(Skeleton)、绑定(Rigging)、蒙皮(Skinning)、刷权重(Weight Painting)那些事儿(9月3日 更新)
- LeetCode动态规划题解
- 再谈留数定理计算实积分
- 吴军的数学通识讲义 读书笔记
- 信息安全技术实验PGP邮件加密系统工具下载过程记录
- 代码托管和服务功能多元化,看码客帮如何做软件众包
热门文章
- 安卓手机管理器_神器推荐,安卓手机拯救者来了!!!
- html() 无效,Internet Explorer无效HTML解析代码漏洞
- matlab 传递函数求截止频率,高分求解RC滤波电路的传递函数和截止频率
- mbot编程机器人怎么连接蓝牙_台式机蓝牙怎么连接
- Android图片完整性检验,Android安全测试之应用完整性校验检测
- python工程师干什么的_Python就业前景和工资待遇分析,你学Python了吗?
- 第十三章 大型网站典型故障分析案例(待续)
- tomcat7的安装与maven安装
- zoj2587唯一最小割
- [转]java中的值传递和引用传递