说明:本文是在上一篇的基础上写的,上一篇图文见:零基础如何自学python? 这些知识点是你进阶的必经之路 1.python函数所谓的函数,就是具有特定功能的代码块,比如说登录,本身可以使用函数来实现登录的功能。 若要通过函数实现功能,一般都会要两个步骤:
1.1 函数的定义 函数的定义一般会包括5个部分,分别是关键字,函数名字,圆括号,函数体,以及返回语句。需要说明的是,有的函数可以不用返回语句 。 1.2 函数的调用 函数的调用其实就是要使用函数这个功能了,如我们实现了一个加法的函数,这时我们要使用它来计算,就需要进行调用。调用时也非常简单,直接在调用处编写函数名即可,如上面的定义的函数,如果调用的话,如下: 那么编写函数的函数从这里也可以看出,通过函数的调用,可以是函数进行重复使用,减少代码量 。 1.3 函数名 函数名可以随便起,但是在同一个文件不能重复起相同的名字 。同时为了函数在调用时被更好的理解,一般其的函数名要有语义,什么是语义呢 ? 简单的说就是通过函数的名字,就知道你这个功能是干什么用的 ? 比如我们要实现的是加法操作,那么就可以使用add来表示 。 有时候函数名字会用到多个英文名,这时要用_将多个英文隔开,同时需要注意的是,函数名字都需要小写 。如:get_info()函数 。 比较规范的函数命名:
不规范的函数命名:
需要说明的是,虽然以上命名的函数不太规范,但是它不会报错,只是在python不提倡如上方式命名。 1.4 函数体 函数体就是具体的业务,如果你定义的函数是登录,那么函数体实现的就是登录的业务,如果你定义的函数是订单,那么函数体实现的就是订单。 函数的执行体其实并非以上这么简单 。一般来说,函数体其实就是由多行代码组成的业务逻辑代码 。 1.5 函数的返回 函数的返回是用于退出该函数,函数的返回使用return来表示,也就是说遇到了return语句,意味着一个分支的结束或者整个一个业务的结束 。 return语句后面的值是非常灵活的,它不仅可以跟任意数据类型,而且也支持表达式,函数。如果return后面没有任何值,默认为None
1.6 函数的参数 函数的参数,就是圆括号()内定义的名字;为了能使函数更好的满足各种业务需求,就要求函数的参数接收不同类型的数据;不同个数的数据,这时函数的参数就派上用场了 。在函数的参数中,一般包括如下四种参数:
形式参数和实际参数 在介绍函数的参数之前,就不得不提到形式参数和实际参数 。
位置参数 所谓的位置参数,主要是指调用函数时的参数数量和位置要和定义的形参中的一致。传多或传少都会报异常(TypeError)。 关键字参数 使用位置参数有个弊端就是,如果参数很多的话,你就很难记住那个参数在前,那个参数在后,这样可能会导致本来要给第一个参数传值,结果传给了第二个参数 。 那么,使用关键字参数就可以解决以上的问题 。 关键字参数是指传值时要以key=value形式,key代表函数中的形参名称,value就是传递给函数的实际的值。 默认参数 如果函数调用时,传递的实际参数经常会是一个值,那我们就可以给这个参数设置默认值 。如果设置默认参数,需将在位置参数后 。 可变化参数 这里的可变化参数指的传递参数的数量可以发送变化,比如我可以传递3个参数,也可以传递6个,甚至更多 。 可变化参数有两种类型:
那么可变参数和位置参数,关键字参数最大的不同就是传递参数的数量不受限制 。 以下为列表形式的可变参数: 以下为字典形式的可变参数: 也可以将两种可变形式的参数结合起来使用 1.7 匿名函数 在前面介绍的函数中,每个函数都会有一个唯一的名称用于标识,在python语法中还有一种无名字的函数,简称匿名函数。它使用关键字lambda表示,普通的函数若可以用一行进行实现的话,那么该函数就可以使用匿名函数来代替。 2.面向对象面向对象编程(Object-oriented Programming,简称 OOP),面向对象是一种编程思想。 面向对象将现实的事物抽象出来,然后抽象成 类 ( class ),给类定义属性和方法后,再将类实例化成 实例 ( instance ) ,通过访问实例的属性和调用方法来进行使用。 2.1 类的定义 类是具有相同特性(数据元素)和行为(功能)的对象的抽象。因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象, 语法格式: class 类名(): 多个(≥0)类属性... 多个(≥0)类方法... 从上图我们可以看出:
2.2 类的实例 当我们创建一个类后,这个类并不能直接使用,必须需要创建具体的对象才能使用类中的属性和方法。 创建类的对象,也叫类的实例化对象 ,或者类申明对象 。 同时类的对象可以申明多个对象 。每个对象就是类的一个具体化实例 。 2.3 构造方法 虽然通过以上案例可知,通过实例化的对象直接调用类属性,但是一般不会这么写,理由是直接调用的属性如果写错会报错,而且也可以通过构造方法来赋值更加方便。 python的构造方法使用 __init__() 方法来表示,每次调用类的时候会自动被调用 ,主要用来初始化数据。 2.4.self介绍 python规定,类内的方法,至少要包括一个参数,这个参数名就是self.当然如果你改成其它的名称也不会报错 。 只是python中这只是一种约定的俗称。 这个self其实就是代表对象自己,当同一个类中实例化了多个对象,当不同的对象调用类中的方法时,就会把对象的引用作为第一个参数自动传给被调用的方法.这样python解释器就就知道到底是哪个对象调用的该方法. 2.5 类的方法 在python中,类的方法包括普通方法,静态方法,类方法。 普通方法:就是上面案例中使用到的方法,在方法内都会默认带个self参数,且只能被对象调用; 静态方法:在方法前使用@staticmethod装饰的且不带self参数的方法叫静态方法,类的静态方法可以有参数也可以没有参数,直接使用类名调用 类方法:默认带个cls参数,可以被类和对象调用,需要在方法前加@classmethod装饰器 普通方法 静态方法 类方法 2.6 类的变量 在类中的变量主要包括类变量,实例变量和局部变量,其主要区别就是作用范围不同 。作用范围从大到小来进行排序的话依次是:类变量>实例变量>局部变量 类变量
类变量 实例变量
实例变量 局部变量
局部变量 2.7 封装 面向对象有三大特性,分别是分装,继承和多态 。 那么什么是封装呢 ? 简单的来说就是给数据和行为设置权限,从而保护隐私数据。也就是说该让用户访问到的数据,我们可以开放给用户,让用户可以直接使用,不该让用户访问的数据,我们可以通过将数据隐藏起来,从而达到无法访问的目的。 就好比我们使用的鼠标和键盘,至于鼠标内部的零件长什么样,我们不知道,也不用关注,只需要将按键和操作的部件提供给用户即可。那么这个就是一个封装的例子 。 python的封装其实就是将不该让用户访问的数据设置为私有的,从而达到隐藏的目的。
上面通过_设置的私有变量和方法还能被访问,这是因为在python中并不会真正的限制你调用,这种设置更多的是一种约定的俗称 。 以下是将变量和方法通过双下划线设置 注意:以上说的是并不能被直接被调用,而非不能被调用 。 2.8 继承 类的继承是两个或多个类产生了一定的关系,其中一个是父类,另外一个就是子类。这就像生活中父与子的关系 。在python中的子类会继承会获得父类的所有非私有的功能 。对于父类中的功能,都是拿来即用。 继承 2.9 多态 有时候我们在父类中定义了一个方法,但是由于父类的方法又不满足要求,我们想在父类的方法基础上进行扩展,怎么办呢 ? 这时就用到了多态 。要使用到多态就必须满足两个条件:
多态 那如果想通过子类对象调用父类的方法呢 ? 就可以通过super关键字来进行调用 本文未完待续,欢迎感兴趣的同学关注和转发,谢谢 。 |
|