Python:莫烦2(函数,类,模块)

定义函数

原文链接:https://mofanpy.com/tutorials/python-basic/interactive-python/function/
函数的定义
输出
如果像上面这样的功能,我们还想拿出来函数处理的结果,其实也就是让函数可以 return 出来一个值。
在这里插入图片描述

参数设置

在这里插入图片描述
有些函数的参数并不是一直变化的,我们还可以设置一个参数默认值,节省写代码的时间和代码量
在这里插入图片描述

全局和局部变量

在这里插入图片描述
不过我们还存在另一种情况,就是允许内部来修改外部的值。为了办这件事,modify_name() 必须先向外面打一个申请报告,向外面申请自己要去修改公用的 filename。 怎么打申请呢?就是用到了下面这种方式:
在这里插入图片描述

定义 class

在这里插入图片描述
用 class File 来创建一个大概念(类),注意我们通常约定类的名字要首字母大写。 然后用 my_file = File() 来创建一个具体的文件。 每个具体的个体都带有这个类的基本属性,如 create_time, name。就像每个人都会有人类这个类当中的性别,年龄一样。

有了对类的基本理解,我们再具体说明一下Python中定义类的做法。比如这个 self 是啥意思? self 是作为类自己的一个索引,不管你在定义类的时候,想要获取这个类的什么属性或功能,都可以通过 self 来获取。 比如这个 File 类中,获取类自己的 create_time,就写成了 self.create_time。之后在说类的功能的时候, 也是通过 self 来在类内部调用的。

而这里的 init() 是什么呢?每当你进行一次 my_file = File() 这种操作的时候,把类给实例化的时候, File 类都会触发一次 init 功能,所以这是一个功能,用于初始化一些设置。

class 的功能

上面提到了,其实这个最基础的 init 也是类的一个功能,那么就可以像函数功能教学 那样当成真正的功能来使用。比如在 init() 里加上传入参数。并且在初始化 File() 的时候传入你要 init 的参数。
在这里插入图片描述
定义更多功能
在这里插入图片描述
当然,类的功能也是可以有返回值的,比如我想定义一个获取文件信息的功能。类的功能定义,相比普通的函数定义, 除了多出了一个 self,其他的并没有多大区别,所以你可以参考我讲函数的那一节来学习。

在这里插入图片描述
在这里插入图片描述

继承

我们可以通过继承的方式,将细分类嵌入到抽象类中,减少共有属性/功能的重复开发。
在这里插入图片描述

私有属性和功能

在这里插入图片描述
在这里插入图片描述

特殊方法

在这里插入图片描述

Module 模块

一般来说,如果你的工程在一个脚本文件中就能写完搞定,那么就不用搞module这种概念, module主要是为了一个相对比较大的工程,涉及到多个文件之间的互相调用关系。

文件中的代码

还是我们的大背景,如果我们要设定一个文件管理系统,这个系统中肯定有很多功能,有文件查找,文件修改,权限管理等等。 每一个可以被分类的功能都可以被放在特定的一个组里。我们就从最简单的module说起。

假设我写好了一些功能,这些功能可以被其他人使用。 我是直接给一段代码给别人使用呢,还是给一个Python文件?我还是喜欢给文件的,因为管你写了什么代码, 你给我个文件,我对你的代码就无感知,我只需要按照功能从你的文件中调取出来特定功能就好了。 比如有人给了我一份 file.py 文件。这个文件里有 create_filename() 的功能。

引用 module

在这里插入图片描述
你点运行,就会发现,它能打印出你在 file.py 里定义的那个 new_file.txt 名字,这就证明我们能成功引用之前写的功能了。 也就意味着,我们引用 file.py 这个文件的写法是 import file。 而调用 file.py 里的 create_name() 的写法是 file.create_name()
在这里插入图片描述
在这里插入图片描述
给模块重命名
如果你的 file.py 里面有多个函数,你也可以一起写在 import 里。
在这里插入图片描述
如果函数真的很多,而且你也不想一一写出来,你可以有两种方式来达成简化的目的,前一种已经介绍了,后一种是新的方式。
在这里插入图片描述

大项目的模块管理

结构如图:
在这里插入图片描述
正规的 module 中,我们常会看到一个 init.py 文件,这个文件其实就有点像 class 里的 def init(self), 你可以在里面写上要如何初始化你的 files 目录。也可以设定目录中个元素的关系。

我在 init.py 中写下了下面这段话,待会我们来演示一下这段话的作用。
在这里插入图片描述
设置好 init.py 后,我们就能直接从 files 里 import get_video_size 这个属于 video.py 的功能了。
在这里插入图片描述
但是和 video.py 同级的 text.py 就无法通过这种 import 方式获取到 text.py 的功能。
在这里插入图片描述
如果我们要获取到 text.py 的功能,我们得这样 import:
在这里插入图片描述

读写文件

创建文件

在这里插入图片描述这个文件会被保存在哪呢?正常来说,他会保存在你脚本的当前目录下,比如所你运行的是 me.py 脚本, 那么 new_file.txt 就会被创建在这个脚本的同级目录中。

如果你觉得要写一个 f.close() 或者有时候你怕自己忘记要 close(), Python 人性化地提供了另外一种打开文件的方式。 这个方式把打开和关闭嵌入到了一个 with 架构中。所以再也不用担心忘记关闭文件了,这种 with 的模式也是我个人比较喜欢的模式。 下面这个案例,除了使用了 with 模式,我还换了一种写入数据的方式 writelines(), 当你传入的时候像列表样的数据时, 列表中的每个元素就是一行记录,数据会分行来写。

注意,在列表里,每个元素最后都最好写一个\n来表示要另起一行。不然读出来的时候就黏在一起了。不信你试试。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值