• 内置方法及常用模块


    内置方法

    1,__new__构造方法

      __init__初始化方法

    在类实例化一个对象的过程中,会先自动调用___new__方法,在内存中开辟一个对象空间,里面有对象指针,然后自动调用__init__方法,在对象空间封装属性。

    应用:

      设计模式——单例模式

     1 class Foo:
     2     __a=None
     3     def __init__(self,name):
     4         self.name=name
     5     def __new__(cls,*args):
     6         if cls.__a ==None:
     7             cls.__a = object.__new__(cls)
     8         return cls.__a
     9 a=Foo("zhou")
    10 b=Foo("cheng")
    11 print(a.name,b.name)  #cheng cheng
    12 print(id(a),id(b))    #2756526876600 2756526876600
    View Code

    2,__len__
    当类中用__len__方法,对象可以用len函数

    3,__hash__

    应用:字典寻址,字典去重

    4,__eq__

     1 class Staff:
     2     def __init__ (self,name,age,sex):
     3         self.name=name
     4         self.age=age
     5         self.sex=sex
     6     def __hash__(self):
     7         return hash(self.name+self.sex)
     8     def __eq__(self,object):
     9         if self.name == object.name and self.sex== object.sex:
    10             return True
    11 name_list = ["a","b","c","d"]
    12 staff_list=[]
    13 for i in range(20,51):
    14     a=Staff(name_list[i%4],i,"male")
    15     staff_list.append(a)
    16 print(set(staff_list))
    View Code

    5,__del__

    析构方法

    当对象被释放时,会自动调用该方法

    1 class Foo:
    2     def __init__ (self,name,age):
    3         self.name = name
    4         self.age = age
    5     def __del__(self):
    6         print('执行我了')
    7 a=Foo("zhou",20)
    8 del a   #执行我了
    View Code

    常用模块

    1,序列化模块    将其他的数据类型转化成字符串或者bytes类型

      1,json

        优点:支持所有的编程语言

        缺点:支持的数据类型比较少, int,str,list,dict        字典类型的key必须是str

     1 import json
     2 a=dict(a=1,b=2)
     3 b=json.dumps(a)
     4 print(b)        #{"a": 1, "b": 2}
     5 c=json.loads(b)
     6 print(c)        #{'a': 1, 'b': 2}
     7 
     8 f=open("zc",mode="w")
     9 json.dump(a,f)    #写入文件
    10 f=open("zc",mode="r")
    11 print(json.load(f))  #{'a': 1, 'b': 2}
    12 
    13 f=open("zc",mode="a")
    14 json.dump(a,f)
    15 f=open("zc",mode='r')
    16 json.load(f)   #报错,json不支持多次写入然后读出
    View Code

      2,pickle  

     1 import pickle
     2 class Foo:
     3     def __init__(self,name):
     4         self.name=name
     5 a=Foo("zhou")
     6 b=Foo('cheng')
     7 p1=pickle.dumps(a)
     8 print(p1)   #b'x80x03c__main__
    Foo
    qx00)x81qx01}qx02Xx04x00x00x00nameqx03Xx04x00x00x00zhouqx04sb.'
     9 p2=pickle.loads(p1)
    10 print(p2.name)   #zhou
    11 
    12 f=open("zc",mode="ab")
    13 pickle.dump(a,f)
    14 pickle.dump(b,f)
    15 f=open("zc","rb")
    16 print(pickle.load(f).name)  #zhou
    17 print(pickle.load(f).name)  #cheng
    View Code

    2,时间模块
      time

      三种形式:时间戳,结构化时间,格式化时间

     1 import time
     2 timestmp=150000000
     3 structtime=time.localtime(timestamp)
     4 print(structtime)#time.struct_time(tm_year=2065, tm_mon=1, tm_mday=24, tm_hour=13, tm_min=20, tm_sec=0, tm_wday=5, tm_yday=24, tm_isdst=0)
     5 strtime=time.strftime("%Y-%m-%d",structtime)
     6 print(strtime)#2065-01-24
     7 
     8 strtime="2025-12-17"
     9 structtime=time.strptime(strtime,"%Y-%m-%d")
    10 print(structtime)#time.struct_time(tm_year=2025, tm_mon=12, tm_mday=17, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=2, tm_yday=351, tm_isdst=-1)
    11 timestamp=time.mktime(structtime)
    12 print(timestamp)#1765900800.0
    View Code

    3,随机数模块

      random

     1 import random
     2 随机小数
     3 print(random.random())#0.2958731515377837
     4 print(random.uniform(3,5))#3.657970822860362
     5 随机整数
     6 print(random.randint(1,9))#4,可以取到9
     7 print(random.randrange(1,2))#1,取不到2
     8 print(random.choice([1,2,4])) #1
     9 列表取值
    10 print(random.sample([1,3,5,7,9],3))#[1, 5, 9],可以取多个数
    11 a=list(range(10))
    12 打乱顺序,打乱的是原列表
    13 random.shuffle(a)
    14 print(a)#[2, 6, 7, 9, 0, 8, 5, 1, 3, 4]
    View Code

    4.os   和操作系统相关

     1 os.makedirs('dirname1/dirname2')    可生成多层递归目录
     2 os.removedirs('dirname1')    若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
     3 os.mkdir('dirname')    生成单级目录;相当于shell中mkdir dirname
     4 os.rmdir('dirname')    删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
     5 os.listdir('dirname')    列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
     6 os.remove()  删除一个文件
     7 os.rename("oldname","newname")  重命名文件/目录
     8 os.stat('path/filename')  获取文件/目录信息
     9 
    10 os.system("bash command")  运行shell命令,直接显示
    11 os.popen("bash command).read()  运行shell命令,获取执行结果
    12 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径
    13 os.chdir("dirname")  改变当前脚本工作目录;相当于shell下cd
    14 
    15 
    16 os.path
    17 os.path.abspath(path) 返回path规范化的绝对路径
    18 os.path.split(path) 将path分割成目录和文件名二元组返回 
    19 os.path.dirname(path) 返回path的目录。其实就是os.path.split(path)的第一个元素 
    20 os.path.basename(path) 返回path最后的文件名。如何path以/或结尾,那么就会返回空值。即os.path.split(path)的第二个元素
    21 os.path.exists(path)  如果path存在,返回True;如果path不存在,返回False
    22 os.path.isabs(path)  如果path是绝对路径,返回True
    23 os.path.isfile(path)  如果path是一个存在的文件,返回True。否则返回False
    24 os.path.isdir(path)  如果path是一个存在的目录,则返回True。否则返回False
    25 os.path.join(path1[, path2[, ...]])  将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
    26 os.path.getatime(path)  返回path所指向的文件或者目录的最后访问时间
    27 os.path.getmtime(path)  返回path所指向的文件或者目录的最后修改时间
    28 os.path.getsize(path) 返回path的大小
    View Code

    5,sys   与解释器交互

      sys.modules  查看当前内存空间中所有的模块,和这个模块的内存空间

      

     
  • 相关阅读:
    Java快速开发框架LML功能菜单管理
    性能测试知多少性能需求分析
    C++学习的方法以及四大名著
    .NET Micro Framework官方库+Controller Area Network
    PostgreSQL学习笔记
    幻风阁|kent.zhu'sBlog对google阅读器共享设计的再讨论
    【数据库事务日志碎片原理分析与方案】分析篇
    Windows 8 RC升级到RTM很顺利
    http://www.cnblogs.com/oneday/archive/2012/08/16/2643039.html
    Visual Studio 2012 Ultimate RTM 体验
  • 原文地址:https://www.cnblogs.com/ruoxiruoxi/p/9588191.html
Copyright © 2020-2023  润新知