当前课程知识点:计算思维与人工智能基础 >  第三部分:python基础 >  第六章:函数、模块与面向对象 >  6.3魔法函数的应用

返回《计算思维与人工智能基础》慕课在线视频课程列表

6.3魔法函数的应用在线视频

下一节:6.4模块与包

返回《计算思维与人工智能基础》慕课在线视频列表

6.3魔法函数的应用课程教案、知识点、字幕

下面我们给大家介绍一下Python中的魔法函数

我们在前面定义类的时候

大家用过这个_init_这样的函数的定义

那么这个函数呢

它定义好的是在类实例化的时候它会自动执行

所以说我们可以看到

在Python中内置的以双下划线开始和结束的这些函数呢

都称之为魔法函数

那么魔法函数它的作用和特点是什么呢

那魔法函数是可以为所写的类增加一些额外的功能

每个魔法方法呢

都是在对内建方法

比如说str这样的一个重写

在自定义的类中可以实现之前的内置函数

那么在执行特定的操作的时候呢

它可以自动调用这个魔法函数

我们举一个例子

假如我们要定义一个人的类people

那他本身有属性

name和age

那么需要利sorted对我们people这个数组进行排序

那么排序的规则是按name和age同时排序

那如果name不同的时候呢就比较name

如果相同的时候呢就比较age

那由于people类呢本身不具有比较功能

所以我们要定义一些内部的函数来进行比较

那我们来看一下

我们需要定义这个class People

我们可以看得到它是一个集成object 这样的一个类

那我们首先定义它的init

那么init这个构造函数的定义里面引入了name和age

那么把name和age进行赋值

那另外一块我们可以看得到一个_str这样的一个函数

那么这个函数定义是我们让他返回

self.name加上冒号再加上我们的通过str转换的什么呀

self的age是这样子的

那么这个函数下划线名称下划线

这个执行我们之前print的时候

它可以自动调用这个函数

另外下面有一个_lt_

这个函数呢 是它的含义是lt

也就是小于号的这样的意思

我们进来的other这个参数以后呢

它返回一个什么样的值呢

那么返回的时候呢

是通过这样一个迭代的条件的表达式来去返回的

如果我们的名称name姓名不相等的时候呢

他就小的返回

否则的话他就按照什么呀

年龄小的进行返回

那么这是我们在这个类people里面定义了三个我们的魔法函数

一个是init

一个是str

和我们的lt这样的三个魔法函数

那么他这个魔法函数什么时候调用呢

init的函数我们知道是在实例化的时候

类的实例化的时候他就初始化的时候它就调用啊

那么下面这个呢

str呢是他是在print输出对象的时候

就他就可以调用这个

那个lt呢这个是在排序的时候

它可以自动触发掉

也就是我们在一些特定的操作的时候

他就可以触发这个魔法函数的内部的调用

那么在这个调用里面的我们可以看的到啊

通过我们这个把我们的主函数呢

调用触发它来调用我们这个调用我们上面这个什么呀

代码

打印的时候呢

我们可以看的到这个print的时候呢

他就我们这里面就可以自动执行str这个魔法函数

那么连接

那么连接了以后呢

我们可以看的到这个也是一个什么呀

一个for循环的

把每一个item取出来啊

那么首先第一个是什么呀

排序

那么排序有一个序排好序以后

item们取出来取出来然后转换成一个字符串

通过join进行什么呀连接

那么连接的时候空tab几个空格键几个空格

然后呢把他输出是这样的一个过程

所以呢我们进来了以后这个people呢

首先比对根据我们这个sort呢他就激活了什么呀

这个执行这个触发这个lt这个函数

那么就对people里面

如果name相不等的话

name小的会放到前面

所以a,b,c放在前面

a,b,c名称相等时候他把年龄要放到前面

年龄小的放到前面啊

那么这是这样的一个比较复杂的这样一个过程

我们通过一个函数就把它串接执行

是这样的一个过程

那我们在jupyter里面看一下执行的结果

再给大家引进几个其他的魔法函数

看一下他们的执行情况

我们看我们刚才这段代码

我们通过主函数的

然后调用它呢

可以看到它实际的运行结果会是什么样子的啊

我们来看这个地方会报了一个错误

那我们前面应该先执行我们这个函数

然后再执行我们这个

运行的调用主函数来调用它

我们可以看到这个执行的结果呢

就是

按照我们前面的函数的写的那个思路

给我们做了一个什么排序

那下面这个呢

我们可以看到他不仅用了什么呀

这样子的一个构造函数

初始化的构造函数

还用了一个_del_

这也是我们的一个什么

叫称之为什么呀

析构函数

那么这个_del_是我们可以喊他是在删除当前这个类的时候

或者类的对象的时候呢

他就触发这个del个函数

我们看这是定义了我们这个foo里面的init

还有个del这个

那么在下面的时候我们第一步

把我们类的实例化这个对象赋给一个foo这个变量

那么通过foo那么可以显式的也可以显式的去调用它

那么显式的调用它和我们隐式的调用只是显示结果

那么print的我们输出这个我们这个类的地址

我们输出打印他的时候

那么他是一个对象

就是一个地址

那么在把这个我们啥

这个我们实例化成对象把他删除

那么删除以后再输出它的时候

我们看他的结果会是什么样子的

我们运行以后可以看第一步呢

我们是哦实例化这个

所以他要执行我们这个什么样

自动会执行我们的init的方法

所以他会输出什么呀

第一句

那么第二个呢

我们是显式的调用它

del这个方法那么要用del的方法

我们的输出呢

是他啊

第三个的时候我们要打印我们这个什么呀

我们实例化的这个对象

那他得到的一个

是一个地对象的一个地址

那么最后呢

在下面一步呢

我们是要删除这个实例化这个对象

删除后我们可以看它会自动执行这个方法

于是他会出现什么

删除这个foo下面这个del这个字符串的输出

那么最后一步再要输出打印这个foo的话

他会报错

因为我们这个实例化的这个对象已经被他删除掉

所以他就会报错啊

那这个就是我们析构函数和del也是我们这里面的

一种魔法函数的一个使用

那我们在Python里面呢

会有许多这样子的魔法函数

那么刚才用了的init

看到的有这个str

还有这个lt

除了这些呢

还有一些

比如说我们要删除一个对象的析构函数del

刚才有个例子也看到了

还有new

new我们是实例化一个对象的时候

他跟init是很相似的

激活的时候都是通过我们什么呀

我们实例化一个类

实例化一个对象这样子来去激活使用他

那他必须new是要有个返回return的

还有一些比如说add

还有一些异常的用的这些魔法函数

那我们在自己的后面的编程中可以试着去用一些

那么除了在Python中的

我们用的这个环境jupyter下面呢

他也有他自己的一些魔法函数

比如说我们给列了几个

大家可以看一下这样百分号

两个百号还写着writefile就是调用外部的Python的脚本

我们是.py的文件

我们可以啊

我们在jupyter下面是不可以执行的

那我们可以怎么样

通过writefile后面这样可以执行

或者用百分号

一个百分号run也可以是他这效果是一样的

那我们也可以测一些一段脚本的啊

他的一些时间

那么一段脚本的或者一个单元中的代码是两百分号timeit

那么单行语句的调用的是那是一个百分号timeit

还有这个我们可以看得到这个matplotlib

是一个是一个是一个库

是一个画图的库

我们这个里面加样子matplotlib inline呢

就是可以把matplotlib生成的图像在我们这个jupyter这个页面里面

就可以直接的展示啊

writefile写文件

用百分号pdb是调试程序

还有百分号pwb是我们查看当前的目录

百分号ls呢就是我们list去看当前的这个目录啊

是这样子的

像我们像这个这段代码

就是我们把这个mat

这是倒包import是倒matplotlib下面的pyplot

把她给了一个像别名一样plt

然后呢我们这里面X几个是什么呀

我们一个列表y这个列表

那我们通过他呢

就可以把这两个列表的值是对应

pyplot是一个折线图啊

那我们都可以画成他的一个折线图

如果不写这个啊 我们的那个matplotlibinline的话

那他第一步执行的时候

他是只说我们生成了一个这样的一个2d的这样的一个图像对象

那么给了一个在什么什么的地址下

我们第二次在执行的时候

他才能出现这个图像

如果用这个matplotlib

这个这个inline这一句的

这一句我们的魔法命令的话

这个魔法函数的话

那么他就直接可以把所在的地址和这个

我们的这个图一起就展示出来

那我们下面看一下在jupyter下面它的使用

我们在jupyter下看我们刚才这段代码这个执行

那么这个是没有用魔法函数

我们执行第一次

可以看他出现这样子的

我们只有再执行一次啊

他才出我们这个图

如果我们这个是写了他这个魔法函数matplotlibinline的话

我们只要执行啊

你给他的地址和他的图片都会展示出来

这是他的区别

那么刚才我们说看一下这个目录结构

通过list百分号运行一下

我们可以看的到啊

我们当前这个目录啊

所在的地址我们也可以看到这个简单的就看一下目录

就可以看到当前这个路径

就可以从这个地方看到

这是我们简单的几个jupyter的魔法函数

那还有很多呢

在我们的学习中

大家可以试试去使用

那关于魔法函数的这一节的内容呢

我们就给大家介绍到这

计算思维与人工智能基础课程列表:

第一部分:计算思维

-1.计算思维的提出

-2.计算思维的要素与应用

-3.培养计算思维

-4.智能时代的教师与教学

-章测试

第二部分:人工智能

-1.人工智能的发展

-2.人工智能的实现与机器学习

-3.人工智能产业

-章测试

第三部分:python基础

-第一章:python简介

--1.1python的介绍

--1.2.anaconda的安装

--章测试

-第二章:编码规范

--2.1 python编码规范

--2.2常量和变量

--章测试

-第三章:数据类型

--3.1数据类型概述

--3. 2.数据转换

--3.3数据类型区别

--章测试

-第四章:基本运算

--4.1.基本运算符

--4.2比较运算符

--4.3逻辑运算符

--4.4位运算符

--4.5成员运算符与身份运算符

--4.6运算符的优先级

--章测试

-第五章:程序控制结构

--5.1顺序结构

--5.2条件结构

--5.3循环结构

--5.4跳转结构

--5.5异常处理

--章测试

-第六章:函数、模块与面向对象

--6.1函数的定义与调用

--6.2面向对象

--6.3魔法函数的应用

--6.4模块与包

--章测试

-第七章:文件操作

--7.1文件的打开与读取

--7.2文件的写入

--7.3CSV模块的应用

--章测试

-第八章:python生态库

--8.1第三方库的安装

--8.2标准库-Os库与Sys库

--8.3.标准库-Time库

--8.4标准库-Random库

--8.5标准库-Turtle库

--8.6第三方库-词云库

--8.7第三方库-pyinstaller库

--8.8第三方库-numpy库(上)

--8.9第三方库-numpy库(下)

--8.10第三方库-pandas库

--8.11第三方库-matplotlib库

--章测试

-第九章:TensorFlow基础

--9.1TensorFlow简介

--9.2TensorFlow 2.0的改进

--9.3TensorFlow的数据应用

--9.4 TensorFlow的设备应用

--9.5.TensorFlow中常用操作

--章测试

-第十章:实例分析与实践

--10.1认识回归问题

--10.2房价的预测

--10.3手写数字识别

--10.4卷积神经网络的介绍

--10.5全连接网络的搭建

--10.6卷积神经网络的实现服饰图片的分类

--10.7LeNet的介绍

--章测试

-第十一章:人工智能在自然语言中的应用

--11.1自然语言处理

--11.2命名实体识别技术

--11.3词向量表示

--11.4自然语言处理的挑战及应用

--章测试

6.3魔法函数的应用笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。