Python学习 - 垃圾回收、特殊方法和模块

Python学习 - 语法入门:https://blog.csdn.net/wanzijy/article/details/125287855
Python学习 - 数据类型:https://blog.csdn.net/wanzijy/article/details/125341568
Python学习 - 流程控制:https://blog.csdn.net/wanzijy/article/details/125400906
Python学习 - 运算符(操作符):https://blog.csdn.net/wanzijy/article/details/125387919
Python学习 - 列表:https://blog.csdn.net/wanzijy/article/details/125457990
Python学习 - 字典:https://blog.csdn.net/wanzijy/article/details/125567225
Python学习 -元组和集合:https://blog.csdn.net/wanzijy/article/details/125577609
Python学习 - 函数(1):https://blog.csdn.net/wanzijy/article/details/125669084
Python学习 - 函数(2):https://blog.csdn.net/wanzijy/article/details/125739981
Python学习 - 类与对象:https://blog.csdn.net/wanzijy/article/details/125826952
Python学习 - 面向对象之封装:https://blog.csdn.net/wanzijy/article/details/125902925
Python学习 - 面向对象之继承:https://blog.csdn.net/wanzijy/article/details/125963829
Python学习 - 面向对象之多态:https://blog.csdn.net/wanzijy/article/details/127140632
Python - 文件操作(1):https://blog.csdn.net/wanzijy/article/details/127099071
Python - 文件操作(2):https://blog.csdn.net/wanzijy/article/details/127150189
Python学习 - 垃圾回收、特殊方法和模块:https://blog.csdn.net/wanzijy/article/details/126202999
Python学习 - 异常处理:https://blog.csdn.net/wanzijy/article/details/126803672

1. 垃圾回收

程序运行过程中产生的垃圾会影响到程序的运行性能
在程序中,没有被引用的对象就是垃圾
在Python中有自动的垃圾回收机制,它会自动将这些没有被引用的对象删除

“ _del_() ” 是一个特殊方法,会在对象被垃圾回收前调用

2. 特殊方法

也称为魔术方法
特殊方法都是使用 “ __ ” 开头和结尾的
特殊方法一般不需要我们手动调用,需要在一些特殊情况下自动执行

当我们打印对象时,实际上打印的是对象的特殊方法 “ _str_() ” 的返回值

class Person(object):
    def __init__(self, name, age):
        self.name = name
        self.age = age
    def __str__(self):
        return 'Person [name=%s, age=%d]' %(self.name, self.age)

p1 = Person('张三', 18)
print(p1)  #  Person [name=张三, age=18]
print(str(p1))  #  Person [name=张三, age=18]

_repr_()

  • 这个特殊方法会在当前对象使用 repr() 函数时调用
  • repr() 是指定对象在交互模式中直接输出的效果
class Person(object):
    def __init__(self, name, age):
        self.name = name
        self.age = age
    def __repr__(self):
        return 'Hello'
p1 = Person('张三', 18)
print(repr(p1))  #  Hello

object._lt_(self, other)    小于
object._le_(self, other)    小于等于
object._eq_(self, other)    等于
object._ne_(self, other)    不等于
object._gt_(self, other)    大于
object._ge_(self, other)    大于等于

_gt_()

  • 会在对象做大于比较的时候调用,该方法的返回值将会作为比较的结果
  • 需要两个参数,一个 self 表示当前对象,other 表示和当前对象比较的对象
class Person(object):
    def __init__(self, name, age):
        self.name = name
        self.age = age
    def __gt__(self, other):
        return self.age > other.age

p1 = Person('张三', 18)
p2 = Person('李四', 28)
print(p1 > p2)  #  False

_bool_(self)     可以指定对象转换为布尔值的情况

class Person(object):
    def __init__(self, name, age):
        self.name = name
        self.age = age
    def __bool__(self):
        return True  #  这里是什么值,调用bool()函数时就返回什么值
p1 = Person('张三', 18)
print(bool(p1))  #  True

3. 模块(module)

3.1 简介

模块化:指将一个完整的程序分解维一个一个小的模块,通过将模块组合,来搭建出一个完整的程序
采用模块化之后,将程序分别编写到多个文件中

特点:

  • 方便开发
  • 方便维护
  • 可以复用

3.2 创建

在Python中,一个 .py 文件就是一个模块
要想创建模块,实际上就是创建一个 Python 文件
模块名要符合标识符的规范

在模块中引入外部模块:

  • import 模块名(就是 Python 文件的名字,不要 .py 后缀)
  • import 模块名 as 模块别名

可以引入同一个模块多次,但是模块的实例只会创建一个
import 可以在程序的任意位置调用,但是一般情况下,import语句都会统一写在程序的开头

在每一个模块的内部都有一个 _name_ 属性,通过这个属性可以获取到模块的名字
_name_ 属性值为 _main_ 的模块是主模块,一个程序中只会有一个主模块
直接执行谁,谁就是主模块

3.3 包(Package)

包也是一个模块
当模块中的代码过多时,或者一个模块需要被分节为多个模块时,就需要使用到包

包是一个文件夹
包中必须要有一个 _init_.py 文件,这个文件可以包含有包中的主要内容

可以指定引入包中的某一个模块,语法为 import 包名.模块名

在创建包后,包里会有一个名为 _pycache_ 的文件
_pycache_ 是模块的缓存文件
之所以有这个文件,是因为 py 代码在执行前,需要被解析器先转换为机器码,然后再执行;所以我们在使用模块(包)时,也需要将模块的代码先转化为机器码然后再交由计算机执行。而为了提高程序运行的性能,python 会在编译过一次以后,将代码保存到一个缓存文件中,这样在下次加载这个模块(包)时,就可以不再重新编译而是直接加载缓存中编译好的代码

3.4 Python 标准库

开箱即用
为了实现开箱即用的思想,Python 为我们提供了一个模块的标准库
在标准库中,有很多强大的模块我们可以直接使用,并且标准库会随 Python 的安装一同安装

sys 模块:

  • 提供了一些变量和函数,使我们可以获取到 Python 解析器的信息
  • 或者通过函数来操作 Python 解析器
  • sys.argv    获取执行获取代码时命令行中所包含的参数;是一个列表,列表中保存了当前命令的所有参数
  • sys.modules    获取当前程序中引入的所有模块;返回的是一个字典,字典的key是模块的名字,字典的value是模块对象
  • sys.path    是一个列表,列表中保存的是模块的搜索路径(即在文件中引入的模块的所在路径)
  • sys.platform    表示当前Python运行的平台
  • sys.exit()    用来退出程序,可以在括号内加上提示的话语,且提示的话语是用红色字体表示

pprint 模块:

  • 给我们提供一个方法 pprint() 方法可以用来打印的数据做简单的格式化
  • 调用:pprint.pprint()    前面的 pprint 是模块的实例,后面的 pprint 是方法

os模块:

  • 可以对操作系统进行访问
  • os.environ 通过这个属性可以获取到系统的环境变量,返回的是一个对象
  • os.system(cmd的命令) 用来执行操作系统的命令
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LF3_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值