内置方法及模块初识

析构方法__del__

构造方法  申请一个空间
析构方法  释放一个空间之前执行
某对象借用了操作系统的资源,还要通过析构方法归还回去 : 文件资源  网络资源

垃圾回收机制
class A:
    def __del__(self):
        # 析构方法 del A的对象 会自动触发这个方法
        print(‘执行我了‘)
a = A()
del a  # 对象的删除 del
print(a)

class File():
    # 处理文件的
    def __init__(self,file_path):
        self.f = open(file_path)
        self.name = ‘alex‘

    def read(self):
        self.f.read(1024)

    def __del__(self):   # 是去归还/释放一些在创建对象的时候借用的一些资源
        # del 对象的时候   程序员触发
        # python解释器的垃圾回收机制 回收这个对象所占得内存的时候  python自动触发的
        self.f.close()
f = File(‘文件名‘)
f.read()
不管是主动还是被动,这个f对象总会被清理掉,被清理掉就触发__del__方法,触发这个方法就会归还操作系统的文件资源

__item__

item系列 和对象使用[]访问值有联系
obj = {‘k‘:‘v‘}
print(obj)   # 字典的对象
print(obj[‘k‘])

在内置的模块中,
有一些特殊的方法,要求对象必须实现__getitem__/__setitem__才能使用
class B:
    def __getitem__(self, item):
        return getattr(self,item)
    def __setitem__(self, key, value):
        setattr(self,key,value*2)
    def __delitem__(self, key):
        delattr(self,key)
b = B()
# b.k2 = ‘v2‘
# print(b.k2)
b[‘k1‘] = ‘v1‘  # __setitem__
print(b[‘k1‘])  # __getitem__
del b[‘k1‘]     # __delitem__
print(b[‘k1‘])

class B:
    def __init__(self,lst):
        self.lst = lst
    def __getitem__(self, item):
        return self.lst[item]
    def __setitem__(self, key, value):
        self.lst[key] = value
    def __delitem__(self, key):
        self.lst.pop(key)
b = B([‘111‘,‘222‘,‘ccc‘,‘ddd‘])
print(b.lst[0])
print(b[0])
b[3] = ‘alex‘
print(b.lst)
del b[2]
print(b.lst)

__hash__

hash方法
底层数据结构基于hash值寻址的优化操作
hash是一个算法
能够把某一个要存在内存里的值通过一系列计算,
保证不同值的hash结果是不一样的
‘127647862861596‘  ==> 927189778748
对同一个值在多次执行python代码的时候hash值是不同
但是对同一个值 在同一次执行python代码的时候hash值永远不变
print(hash(‘abc‘))  # 6048279107854451739
print(hash(‘abc‘))
print(hash(‘abc‘))
print(hash(‘abc‘))
print(hash(‘abc‘))
print(hash(‘abc‘))

字典的寻址  - hash算法
d = {‘key‘:‘value‘}
hash - 内置函数

set集合
se = {1,2,2,3,4,5,‘a‘,‘b‘,‘d‘,‘f‘}
print(se)

d = {‘key‘:‘v1‘,‘key‘:‘v2‘}
print(d[‘key‘])

__eq__

class A:
    def __init__(self,name,age):
        self.name = name
        self.age = age
    def __eq__(self, other):
        if self.name == other.name and self.age == other.age:
            return True
a = A(‘alex‘,83)
aa = A(‘alex‘,83)
aa2 = A(‘alex‘,83)
aa3 = A(‘alex‘,83)
aa4 = A(‘alex‘,83)
aa5 = A(‘alex‘,83)
aa6 = A(‘alex‘,83)
print(a,aa)
print(aa3 == aa == aa4)  # ==这个语法 是完全和__eq__
高阶面试题/读源码/简化操作

模块模块的分类    内置模块        安装python解释器的时候跟着装上的那些方法    第三方模块/扩展模块        没在安装python解释器的时候安装的那些功能    自定义模块        你写的功能如果是一个通用的功能,那你就把它当做一个模块

什么是模块    有的功能开发者自己无法完成,这样的话需要借助已经实现的函数\类来完成这些功能    你实现不了的功能都由别人替你实现了        操作系统打交道        和时间        1000取随机数        压缩一个文件        和网络通信    别人写好的一组功能  文件夹/py文件/C语言编译好的一些编译文件        分类 管理方法        节省内存        提供更多的功能为什么要有模块?    分类 管理方法    节省内存    提供更多的功能模块怎么用?在哪儿用?
import my_module  # 要导入一个py文件的名字,但是不加.py后缀名
import my_module  # 模块的名字必须要满足变量的命名规范
                   # 一般情况下 模块都是小写字母开头的名字

# import这个语句相当于什么???
# import这个模块相当于执行了这个模块所在的py文件

# 模块可以被多次导入么? 一个模块不会被重复导入

# 如何使用模块?
def login():print(‘in mine login‘)
name = ‘太亮‘
login()
my_module.login()
# print(my_module.name)

在导入一个模块的过程中到底发生了哪些事情

模块的重命名
import my_module as m
m.login()
my_module.login()

导入多个模块
import os
import my_module
PEP8规范
所有的模块导入都应该尽量放在这个文件的开头
模块的导入也是有顺序的
    先导入内置模块
    再导入第三方模块
    最后导入自定义模块

  

原文地址:https://www.cnblogs.com/duanpengpeng/p/9409530.html

时间: 2024-11-06 07:25:23

内置方法及模块初识的相关文章

内置方法 常用模块

__new__ 在init 之前 , 实例化对象的第一步是__new__创建一个空间 class Foo: def __init__(self): # 初始化方法 print('执行了init') def __new__(cls, *args, **kwargs): # 构造方法 # object.__new__(cls) print('执行了new') return object.__new__(cls) #如果这个return不写,init方法永远不会执行 obj = Foo() 执行了ne

第二模块·函数编程-第1章 函数、装饰器、迭代器、内置方法

01-鸡汤之人丑就要多读书 02-三元运算 03-文件处理 04-文件处理-二进制模式 05-文件处理-智能检测编码的工具 06-文件处理-写模式操作文件 07-文件处理-追加模式操作文件 08-文件处理-混合操作文件 09-文件操作其他功能 10-文件处理-文件修改功能 11-函数-基本介绍 12-函数-默认参数 13-函数-关键参数 14-函数-非固定参数 15-函数-非固定参数2 16-函数-返回值 17-函数-局部变量 18-函数-在函数里修改全局变量 19-函数-在函数里修改列表数据

Python模块导入和常用内置方法

模块导入和常见内置方法 __file__: os.path.dirname(__file__)和os.path.join(dirname, filename),通过sys.path.append()可以把模块添加到Python的环境变量目录中 __name__: 直接执行py文件时__name__返回"__main__", 通过import调用时__name__返回的是(包名.模块名) __doc__: 返回.py文件中"""xxx""

1、面向对象内置函数 2、反射 3、内置方法

1.isinstance()    判断对象所属类型,包括继承关系 2.issubclass() 判断类与类之间的继承关系 class A:pass class B(A): pass print(isinstance(b,B))   # o,t print(isinstance(b,A))  #  o,t class mystr(str): pass ms = mystr("alex") print(type(ms) is str)  # 不包含继承关系,只管一层 print(isin

面向对象之反射及内置方法

一.静态方法(staticmethod)和类方法(classmethod) 类方法:有个默认参数cls,并且可以直接用类名去调用,可以与类属性交互(也就是可以使用类属性) 静态方法:让类里的方法直接被类调用,就像正常调用函数一样 类方法和静态方法的相同点:都可以直接被类调用,不需要实例化 类方法和静态方法的不同点: 类方法必须有一个cls参数表示这个类,可以使用类属性 静态方法不需要参数 绑定方法:分为普通方法和类方法 普通方法:默认有一个self对象传进来,并且只能被对象调用-------绑定

day27 反射、内置方法

一.isinstance和issubclass class Foo: pass class Son(Foo): pass s = Son() #判断一个对象是不是这个类的对象,传两个参数(对象,类) # print(isinstance(s,Son)) # print(isinstance(s,Foo)) # print(type(s) is Son) # print(type(s) is Foo) #判断一个类是不是另一类的子类,传两个参数(子类,父类) print(issubclass(So

2017/9/11——何某某更博,花时间整理了所有的Python内置方法的用法,便于日后复习

1.这里是所有的内置方法的使用方法 # -*- coding:utf-8 -*- # Author : 何子辰 # 所有的内置方法总结 print('1.abs'.center(50,'*')) # abs 绝对值 a = abs(-5) print(a) print('2.all'.center(50,'*')) # all # Return True if all elements of the # iterable are true(or if the iterable # is empt

python学习笔记4--装饰器、生成器、迭代器、匿名函数、内置方法、数据序列话

一.装饰器 1.意义:当需要给程序中某些函数新增某项功能时,为了避免直接修改函数源代码和函数调用方式,所以引入装饰器. 2.定义:装饰器用于装饰其他函数,就是为其他函数提供附加功能. 3.原则: 1)不修改被装饰的函数的源代码 2)不修改被装饰的函数的调用方式 4.装饰器储备知识: 1)函数即变量 2)高阶函数 a.把函数当做参数传递给另一个函数(在不修改被修饰函数源代码的情况下为该函数添加功能) b.返回值中包含函数名(在不修改被修饰的函数的调用方式的情况下为该函数添加功能) 3)嵌套函数:在

s14 第4天 关于python3.0编码 函数式编程 装饰器 列表生成式 生成器 内置方法

python3 编码默认为unicode,unicode和utf-8都是默认支持中文的. 如果要python3的编码改为utf-8,则或者在一开始就声明全局使用utf-8 #_*_coding:utf-8_*_ 或者将字符串单独声明: a = "中文".encode("utf-8") 函数式编程 函数式编程中的函数指代的是数学中的函数. 函数式编程输入如果确定,则输出一定是确定的.函数中并没有很多逻辑运算 python是一个面向对象的语言,只是一部分支持函数式编程.