我的python笔记

预科班

www.python.org 3.6.7 3.6.8

www.virtualbox.org#虚拟机

www.vmware.com#虚拟机

常用单词

embeddable		可嵌入的
executable		安装包
public  		['p ʌblik] 公共的,公用的        
private 		['praivit]  私有的,私人的  
static			['stæ tik] 静的;静态的;静止的
void  			[id] 空的,没有返回值的	
demo			[ 'deməu ]	 演示,例子
define			[dɪˈfaɪn] 定义
syntax			[ˈsɪnˌtæks] 语法
invalid			[ɪnˈvælɪd] 无效的
indentation  	[ˌɪndenˈteɪʃn] 缩进
unexpected  	[ˌʌnɪkˈspektɪd] 不期望的
usage   		[ˈju:sɪdʒ] 使用
version 		[ˈvɜ:ʃn] 版本      
author  		[ˈɔ:θə(r)] 作者 
string			[striŋ] 字符串类型
encode   		[ɪnˈkəʊd] 编码
decode	    	[ˌdi:ˈkəʊd] 解码
integrated		[ˈɪntɪgreɪtɪd] 集成
development  	[dɪˈveləpmənt] 开发
environment     [ɪnˈvaɪrənmənt] 环境
salary 	    	[ 'sæləri ] 薪水
switch   		[switʃ] 	判断语句
case 			[keis]	实例,情况
default 		[di'fɔ:lt] 默认的
interpreter  	[ɪnˈtɜ:prɪtə(r)] 解释器
configured  	[kən'fɪɡəd] 配置
variables    	['veərɪəblz] 变量
unreachable     ['ʌn'ri:tʃəbl] 不能达到的
colum			[ˈkɔləm] 列
row 			[rəʊ] 行
index			[ˈɪndeks] 索引
function		[ 'fʌŋ k ʃən ] 功能,函数
method		    [ 'meθə d] 方法
compare		    [ kəm' pεə ] 比较
exception		[ ik 'sep ʃən] 异常
index 			['indeks] 角标,索引,指针
out of 	    	[ a:ut ɔf]...之外
change 	     	[ tʃeindʒ ] 改变,交换
swap 			[ swɔp ] 交换
half		    [:f  ] 一半的,半个的
search 			[:] 搜索,查找
mid				[ mid] 中间的
number			[ 'nʌmbə ] 数字,号码
transition		[ træn'ziʃən]
class member	[ 'membə ] 类成员
class method	[ 'meθəd] 类方法
package			[ 'pækidʒ] 包
multiply 		[ˈmʌltɪplaɪ] 乘
division 		[dɪˈvɪʒn] 除法
iterable		['itəreibl] 可迭代的
attribute 		[əˈtrɪbju:t] 属性
private			['praivit ] 私有的,私人的
sleep			[sli:p ], 睡觉, 睡眠 1=1000毫秒
single			['siŋgl] 单一的,单独的,单身的,单程的
instance		['instəns ] 实例,情况
data			['deitə]	 资料 
develop			[di'veləp ] 开发
extends			[ ik'stends] 继承,延伸,推广
location		[ ləu'keiʃən]  位置(文件在电脑中的位置)
encoding   		[in'kəudiŋ] 编码
super			['sju:]  父类的,超级的,,超类的
final			['fai nl] 最终的
finally			[ˈfaɪnəli] 最后
interface		[ 'intəfeis ] 接口
implements		['impliments]	实现
mouse			[maus ] 鼠标, 老鼠
bonus			[ 'bəunəs ] 奖金
inner			[ 'inə ] 内部的
protect			[prəu'tekt] 保护,受保护的, 防卫
file			[ 'fail]  文件
folder			['fəʊldə] 文件夹
view			[ vju: ] 视图, 视线,看
equals			['i:kwəls]判断两个字符串是否相等
memory			['meməri] 记忆,内存,存储器
heap 			[hi:p] 堆
throw			[θrəu] 抛出,投掷
finally			['fainəli] 最后,最终
message			['mesidʒ] 消息,信息,通知
catch			[kætʃ] 捕获,捕捉,抓住
edit			['edit]  编辑
project			[prədʒekt] 项目,工程,计
directory		[ di'rektəri ]  目录
runtime			[run'taim] 运行时间    
current 		['kʌrənt] 当前的,现在的
preference		['prefə rəns] 个人喜好
rename 			[,ri:'neim] 重命名
template 		['templit] 模板
method 			[ˈmeθəd] 方法
static 			[ˈstætɪk] 静态
runnable        [ 'rʌnəbl] 可捕捉的
interrupted 			[,intə'rʌptid]  中断的,被阻止的
ticket					['tikit] 票
bank 					[bæŋk]  银行
tank 					[tæŋk] 坦克
flag 					[flæɡ] 标记, 旗帜
dead 					[ded] 死亡的,无生命的
lock    				[ lɔk] 锁
unlock					[ˌʌnˈlɒk] 解锁
console			    	[kən'səul] 控制台
font    				[fɔnt] 字体 
resource  	    		[ ri'sɔ:s] 资源
notify					['nəutifai ] 唤醒, 告知
bounded                 ['baundid] 有界限的
buffer					['bʌfə]  缓冲区
signal 			     	['siɡ nəl]  信号,标志
condition 	     		[kən'diʃən]	条件
producer				[prə'du:] 生产者
consumer				[ kən'sju:] 消费者
substring   			[ 'sʌb striŋ] 子字符串
append     	     		[ə'pend]  添加
replace 				[ri'pleis]  代替,取代,更换 
update          		[ ʌp'deit] 更新
create 		     		[ kri'eit ] 创造,创作
builder 				['bildə] 构建器
character  	     		['kærəktə] 字符
reverse 				[ ri'və:s ] 反转,翻转
collection 	    		[kə'lekʃən] 集合,聚集,采集
remove		    		[ri'mu:v]  移除,删除
clear 					[kliə]  清空,清除,清楚的.
iterator 				[itə'rei tə] 迭代器

02基本数据类型

01数值类型

±*/ // **

int整形 float浮点型 complex复数 (real image) bool布尔型 (a=’’ a=() 空即False)

import math
import decimal
	a = decimal.Decimal('0.2')
    b = a * a
   	c = math.ceil(a)
02序列类型

​ str字符串

​ list列表 b = [ ]

​ tuple元组 //内容一次定义后不可更改

​ a =(100,)

03序列类型的通用操作
>>> a="345678"
>>> b=list(a)
>>> b
['3', '4', '5', '6', '7', '8']
>>> c=tuple(a)
>>> 
>>> c
('3', '4', '5', '6', '7', '8')
>>> c[1]='AAA'

​ 切片[ 开始 : 结束 : 步长]

步长可以为负,空即无穷

拆包

a,*b=[1,2,3,4]

一些函数

type( )求变量类型

id( )求变量地址

[外链图片转存失败(img-eVexi7xR-1562205374737)(C:\Users\25327\AppData\Local\Temp\1554986187095.png)]

列表(list)

​ 增

​ append

​ insert

​ extend

​ 删

​ pop

​ del

​ remove

​ clear

​ 改

​ a[0] =

​ 查

​ index

​ count

20190415

集合(set)

定义方式

​ a = {1,2,3,4}

字典(dict)

定义方式

​ a = {‘name’ : ‘laowwang’}

​ dict(name = ‘laowang’)

访问

​ a[‘name’]

​ a.get(‘name’)

​ a.values()

​ a.keys()

​ a.items()

修改

​ a[‘name’] = ‘laozhang’

添加

​ a[‘sex’] = ‘man’

​ b = a.copy()

​ a.setdefault(‘sex’,‘man’) # 有则查无则增

删除

​ a.clear()清空

​ a.pop(‘name’)删除键值

​ a.popitem()随机删除

20190416

三木运算
	if  a > 5:
		print(True)
	else :
		print(False)

	print(True) if a>5 else print(False)
	print(True if a>5 else False)

循环

​ while i<= 10

​ print(i)

​ i += 1;

​ while i< len(mylist)

​ print(mylist[i])

​ i=i+1;

关键词 break

迭代循环

​ for i in list

​ for i in range(5) 0…4

​ for i in range(1,10,1) 开始结束步长

随机数

​ import random

​ a = random.randint(1,100)

20190419

​ b = int (input(‘输入1表示石头,2表示剪刀,3表示石头’))

​ range break continue

函数

​ id() help() set() list()

​ str() tuple() dict() int()

​ reserved() float() input()

​ list = [‘a’,‘b’,‘c’]

​ enumerate(list,100)返回可枚举对象

​ [(100,‘a’),(101,‘b’),(102,‘c’)]

​ for i,j in list : print (i,j)

0 a

​ 1 b

​ 2 c

​ eval()提取字符串中有效内容

​ exec()执行字符串中有效表达式

​ filter()过滤器

​ map(函数,列表)对象注意配对

​ zip(列表,列表)逐一配对

定义

​ def hello():

​ print(‘hello’)

​ pass # 暂时不知道怎么写,就写pass

​ def func (x) #必备参数

​ def func ( a,b = 6) #默认参数,定义了就用,没定义就默认

​ def func (*args)#不定长参数,组包成一个元组

​ func(1,2,3,4,[1,2])

​ (1,2,3,4,[1,2])

​ def func(**k)#键值对,关键字

​ func(a=1,b=2,c=3)

​ {‘a’:1,‘b’:2,‘c’:3}

​ def func(*)

20190420

函数

​ sorted(a,reverse)默认reverse为false

​ sorted(a,reverse=True)实现了反向排序

func(*list , default=‘haha’)

默认>必备>位置参数>关键字(后两种为不定长参数)

a,b = b,a+b

for i in range(5)

​ a.append(i)

return a

13函数作用域和匿名函数20190222

匿名函数

​ 没有名字的函数

def func(a):
	return a**3
#我想没有名字如何做到
#lambda 参数:表达式
g = lambda a: a**3 

print(g)#相当于前面的func,输出一个地址
print(g(2))#有括弧就是调用函数
#相当于想用函数又不想起名字

(lambda a: a**3)(2)#连g都不用

​ list( filter(lambda x: True if x% 2 == 0 else: False, range(101)) )

​ list( filter(lambda x: x>5, [1,2,3,4,5,6,7,8,9,10]))

变量作用域

​ 内部能访问外部

​ 内部不能修改外部

但是

x = 123

def fun():

​ global x全局变量

​ x++

nonlocal y外层变量

闭包

​ 闭包就是函数嵌套,内部函数调用外部函数的变量,外函数返回内函数的引用

​ def fun(i)

​ def fun1()

​ i…

​ …

​ return fun1

a = []
for i in range(4):
    def fun(i):
        def fun1():
            return i
        return fun1
    a.append(fun(i))

print (a)
////////////////////
li = []
for i in range(4)
	def func()
    	return i
    li.append(func)
   
print(li)

高阶函数 函数当参数 传到另一个函数中

24种设计模式

20190423

def func(*args, **kwargs):

fun(1,2,3,4,a=11,b=22,c=33)

类定义

​ dir(sss) 查看方法

class A:
	pass

​ 类的三要素 类名 属性 方法

​ 面向对象(外卖)

​ 面向过程(自己做)

class Person#类名
	name = '奥利奥'#属性(变量)
    
print(Person.name)#就能访问了

Person.sex='男'#添加属性

cat = Person() #类的实例化

print(cat.name) #cat是Person创造出来的

cat.age = 18 #实例属性

类属性,类 实例都能访问

实例属性,类 不能访问 实例才能访问

私有属性 类独有的,一般不会拿到外面去用

class Person:
	_aaa = 'hello'#下划线私有属性
    __bb = 'world'#私有属性
    
qiye = Person()
	qiye._aaa#能访问,最好别访问
    qiye.__bb#不能访问  _Person__bb
方法
class Person:
	name = '小明'
	def fun(self):#self实例对象 约定俗成
		print('正在跑’)
              
qiye = Person()
qiye.run()#没有self就实例方法用不了

​ 类方法(无self) 类可以调用

​ 实例方法 实例可用 类调用需传实例

class Person
	name = 'xiaoming'
	def run(self)#self就是实例本身
		print('%s正在跑'%self.name)
        
laowang = person()
laowang.name = '老王'
laowang.run()
初始化,析构

​ 初始化

class Person
	def __init__(self):#自己调用自己 这里self是自己
		print('hello')
        
qiye = Person()


class Person
	def __init__(self, name , age, sex):
        #自己调用自己 这里self是自己
        self.name = name
        self.age = age
        self.sex = sex
	def run(self):
        print('%s %d岁 性别%s 正在跑'%(self.name,self.age,self.sex))
	
        
qiye=Person('郑天尧',22'男')


析构(删除)

def __del__(self):
    print()

qiye = Person(男,两个大眼睛,两只长耳朵)

muzi=Person(女,两只小眼睛,两只短耳朵)

20190424

继承
class Rectangle:
	def __init__(self,length,width)
		self.length = length
		self.width = width
    def getarea(self):
        area = self。length*self.width
        return area
	
class Square:
	def __init__(self,length,width)
		self.length = length
		self.width = width
    def getarea(self):
        area = self。length*self.width
        return area
		
class Square(Rectangle):#继承
    pass

class rectangle(object)#基类

class Square(Rectangle):
    def __init__(self,length,width):
        if length==width
        	Rectangle.__init__(self,length,width)
        else
       		print("你骗我")
        

Square.__base__#查看继承的谁


class Dog:
    def __init__(self):
        print("wangwang")
    def run(self)
    	print('haha')
        
class God_Dog(Dog)
	def __init__(self)#重写 
    	Dog.__init__(self)#调用父类init
        print('雷神托尔')#自己独有属性
    def run(self):
        Dog.run(self)
    	print('heihei')
        
 tuoer = God_Dog()


class A:
    def play(self):
        
class B:
    def play(self):
        
class C(A,B)
	def play(self):
        B.play()#一种方法
        super().play()#另一种方法
        print()
        
C.mro()#追本溯源

基于多继承的Mix-in设计模式

魔法方法
__init__
__del__
__add__#字符串相加
class Rectangle:
	def __init__(self,length,width)
		self.length = length
		self.width = width
    def getarea(self):
        area = self。length*self.width
        return area
    def __add__(self,other)
    	add_length = self.length + other.length
        add_width = self.width + other.width
        return add_length,add_width

a = Rectangle(2,4)
b = Rectangle(3,5)
print(a+b)#就是执行了a.__add__(b)


def __repr__(self,other)
def __str__(self,other)

def __call__(self)
把实例变函数

class C:
    def __call__(self,*args,**kwargs):
        print('haha')

a = C()
a()
a

20190425

class C(A,B)
	def __init__(self,a,b,c)
    	super().__init__(a,c,b)
        #同等与如下写法,C的父类里的init
        super(C,self).__init__()
        
        #如下就是在B的父类里找
        super(B,self).__init__()


类名.方法名(实例本身)

20190426

class A:
    def __init__(self, name):
    def Type()
    	type('hello')
        
    def Isinstance('helli',str)
        class rectangle(object):
    def __init__(self,width,length):
        self.width = width
        self.length = length
    def getarea(self):
        return self.width * self.length

class square(rectangle):
    def __init__(self,width,length):
        if width==length:
            super().__init__(width,length)

    def __call__(self, *args, **kwargs):
        print('正方形的边长是%d'%self.width)


# a = square(10,10)
# a()
# print(a.getarea())

class A:
    def __init__(self,name):
        self.name = name

    def __new__(cls, *args, **kwargs):#开辟空间cls就是类本身
        print(cls)#打印类本身A
        return object.__new__(cls)#一定得有参数

    def run(self):
        print(self.name)

a = A('小张')

#a.run()

#__init__实例化的时候调用
#__new__创建的的时候被调用
#__new__先被调用

#创建很多实例,只占用一个内存地址   单例模式
class B:
    _instance = None
    def __new__(cls, *args, **kwargs):
        if cls._instance == None:
            cls._instance = object.__new__(cls)
            return cls._instance
        else :
            return cls._instance#instance可以替换,就是一个私有属性
    def __init__(self,name):
        self.name = name
#应对那些只能开启一次的
xiaozhang = B('left')
xiaoming = B('right')
print(id(xiaozhang))
print(id(xiaoming))
print(xiaozhang.name)
print(xiaoming.name)



class Person:
    def __init__(self,name):
        self.name = name

    def __getattr__(self, item):
        return '没属性'

xiaoming = Person('xiaoming')

#查询实例小明里有没有name属性?True/False
print(hasattr(xiaoming,'name'))

#访问实例小明里的name属性
print(getattr(xiaoming,'name'))

#修改实例小明的name属性,有则改无则增
setattr(xiaoming,'name','laowang')

#增加实例的属性
setattr(xiaoming,'age',19)
print(xiaoming.age)

# 删除实例的属性
delattr(xiaoming,'name')
#print(xiaoming,name)

#删除实例
#del(xiaoming)

xiaoming = Person('xiaoming')
print(xiaoming.name)
print(xiaoming.age)#未传参到达getattr,实现报错
装饰器
#高阶函数
def func():
    print('haha')

def func2(a):
    a()
    print('func2')

func2(func)

#闭包
def func(x):
    def func2():
        return x
    return func2

a = func(10)
print(a())




def modify(func):
    def wrapper():
        result = func()
        return result + '三里桃花不及卿'
    return wrapper
#g = modify(girl)#函数调用函数
#print(g())

@modify#只会影响一行girl放入modity传递出来
def girl():
    return '春风十里不如你'

h = girl()
print(h)

class Person:  #龟叔
    @property
    def run(self):
        print('人在跑')
a = Person()
a.run()
a.run#可以把方法当属性一样使用


class Person:  #龟叔
    @staticmethod#静态方法 去掉self 变成普通函数 实例解绑
    def run(self):
        print('人在跑')
Person.run()

class Person:  #龟叔
    name = 'xiaowang'
    @classmethod# 类装饰器 以前的self换成cls
    def run(cls):
        print(cls.run)
        print(cls.name)

class Myclass:
    def __init__(self,func):
        self.func = func

    def __call__(self, *args, **kwargs):#call实例直接调用
        print('开始验证')###以后可改
        return self.func()

@myclass
def func():
    print('正在登陆')

20190429

文件
open('test.txt',encoding=utf8)
open('test.txt')
open('test.txt','r')只读r+没有则报错

open('test.txt','w')只写w+有则覆盖没有则创建

open('test.txt','a')追加
print(f.read())

(r'c:\users\qiye\text','r')取消转义字符
print(f.write('hello')

with open('test.txt','r',encoding='utf8') as f1:
    with open('test2.txt', 'w',encoding='utf8') as f2:
        a = f1.read()
        print(a)
        f2.write(a)
      
  #文件内容复制到test2

20190506

L = (i for i in range(5))
L = [i for i in range(5)]

20190507正则表达式

正则是,匹配或者提取(过滤)符串

单字符匹配findall
import re
#######
ret = 'hello WORLD 123'
元字符 .(\n匹配不到的,只有ret处添加,re.S能匹配\n)
a = re.findall(r'.'.ret)这个.任意匹配任何字符
['h', 'e', 'l', 'l', 'o', ' ', 'W', 'O', 'R', 'L', 'D', ' ', '1', '2', '3']

元字符 []
a = re.findall(r'[a-z]',ret)
a = re.findall(r'[0-9]',ret)#匹配数字

['1', '2', '3']
元字符\d
a = re.findall(r'\d',ret)#匹配数字
a = re.findall(r'\D',ret)#匹配非数字

元字符\D
a = re.findall(r'\s',ret)#匹配空格
a = re.findall(r'\S',ret)#匹配非空格

元字符\w
a = re.findall(r'\w',ret)#匹配单词字符a-z,A-Z,0-9,_
a = re.findall(r'\W',ret)#匹配非单词字符

​ 数量元字符

数量元字符*有或无
a = re.findall(r'[dnf]*',ret)#
数量元字符+一次或无数次
a = re.findall(r'[dnf]',ret)#
数量元字符{}
a = re.findall(r'h{2}',ret)#出现两次
a = re.findall(r'h{2,}',ret)#至少出现两次
a = re.findall(r'h{2,4}',ret)#两次到四次出现
a = re.findall(r'h{2,4}?',ret)#优先少匹配

​ 单词边界的原字符

a = re.findall(r'^hello',ret)#以hello开头
a = re.findall(r'hello$',ret) #以hello结尾
a = re.findall(r'\b',ret)#匹配一个单词的边界
a = re.findall(r'\B',ret)#匹配一个非单词的边界
a = re.findall(r'h?',ret)#匹配0次或者没有
re.findall(r'\w+',ret)#拿下整个单词
re.findall(r'he|wo',ret)#or
re.findall(r'我(爱你)')#分组
re.findall(r'.*',ret)#整个拿下
re.findall(r'.*?',ret)#所有单字符
re.findall(r'.+?',ret)#所有单字符去空‘’

a = '<html>0000</html><td>bbbb</td>'
re.findall(r'<.*>',a)#贪婪模式
re.findall(r'<.*?>',a)#非贪婪模式
match/search
str = 'pythonddddddddddd'
b = re.match(r'python',str)#开头开始匹配
print(b.group())

c = re.search(r'python',str)#内容匹配
print(c.group())

json

轻量级前后端交互

python			   json
字典				  对象
列表/元组			 数组
字符串				  字符串
int/float			数字
True/False			true/false
None				null
import json
#dumps,dump,loads,load这四个方法
my_dict = {
    'a':1,
    'b':[1,2,3],
    'c':True,
    'd':None,
    'e':(1,2,3),
    'f':'hansha',
    'g':'郑天'

}

#python转换成json
res = json.dumps(my_dict,ensure_ascii=False)
print(res,type(res))

#json转换成python
res2 = json.loads(res)
print(res2)

#写入txt文件,转换为json保存文件
with open ('json_txt.txt','w+') as f:
    json.dump(my_dict,fp = f,ensure_ascii= False)
    f.seek(0)#光标回到0位置
    print(f.read())

#读取txt文件,读取json转换为python
with open ('json_txt.txt','r+') as f:
    result = json.load(fp = f)
    print(result)

hashlib单向加密

对称加密 :加密解密用相同密钥

非对称加密:加密解密用不同密钥,公钥加密,私钥解密

单项加密:只能加密数据不能解密数据

​ hashlib就是单项加密,任意长度变成固定长度

​ 特点

不可逆	定长输出	抗修改性 强碰撞性

代码

import hashlib

#print(hashlib.algorithms_available)

res = hashlib.new('md5','1hansha'.encode())
res = hashlib.md5(b'123456')
res = hashlib.md5('寒沙'.encode())
print(res.digest()) #转换二进制
print(res.hexdigest())  #转换为十六进制

res1 = hashlib.md5('寒'.encode())
res1.update('沙'.encode())#末尾添加 沙
print(res1.hexdigest())

#加盐
salt = '寒沙真帅'.encode()
password = b'123456'
paw = password + salt
res = hashlib.md5(paw)

base64对称加密

import base64
# [A-Z,a-z,0-9,'+','/']

#编码
s = '寒沙'.encode()#对寒沙进行编码
res = base64.b64encode(s)#对s进行加密
print(res)

res_1 = base64.b64decode(res)#对res进行解密
print(res_1)
print(res_1.decode())#解码才能得到

datetime

import datetime

#date类(年月日)
my_date1 = datetime.date(2019,6,22)
print(my_date1)

#time类(时分秒)
my_date2 = datetime.time(21,3,1)
print(my_date2)

#datetime 时间日期类(年月日时分秒)
mydatetime = datetime.datetime(2019,6,22,21,6,1)
print(mydatetime)

#now()获取当前时间
mydate = datetime.datetime.now()
print(mydate)

#时间转换为时间戳
mydate3 = mydate.timestamp()
print(mydate3)

#时间戳转换为时间对象
mydate4 = datetime.datetime.fromtimestamp(mydate3)
print(mydate4)

#时间转换为字符串
mydate5 = mydate4.strftime('%y-%m-%d %H:%M:%S')#y取到19  Y取到2019 %H是24小时制 换成%I是12小时制
print(mydate5,type(mydate5))

#字符串转换成时间格式
mydate6 = datetime.datetime.strptime(mydate5,'%y-%m-%d %H:%M:%S')
print(mydate6,type(mydate6))

#当前时间 - 上课所花时间 = 上课开始时间
present = datetime.datetime.now()
last = datetime.timedelta(minutes = 45)
start = present - last
print(start)


logging

几种级别,由轻到重

日志等级		描述
DEBUG			调试信息
INFO			普通信息
WARNING			警告信息
ERROR			错误信息
CRITICAL		危险信息

Formatter格式

%(asctime)s		日志事件发生的时间
%(levelname)s	该日志的级别
%(message)s		日志记录的文本内容
%(name)s		所使用的日志器名称
%(pathname)s	调用日志记录函数的文件的全路径
%(filename)s	调用日志记录函数的文件
%(funcName)s	调用日志记录函数的函数名
%(lineno)d		调用日志记录函数的代码所在的行号

res进行解密
print(res_1)
print(res_1.decode())#解码才能得到


### datetime

```python
import datetime

#date类(年月日)
my_date1 = datetime.date(2019,6,22)
print(my_date1)

#time类(时分秒)
my_date2 = datetime.time(21,3,1)
print(my_date2)

#datetime 时间日期类(年月日时分秒)
mydatetime = datetime.datetime(2019,6,22,21,6,1)
print(mydatetime)

#now()获取当前时间
mydate = datetime.datetime.now()
print(mydate)

#时间转换为时间戳
mydate3 = mydate.timestamp()
print(mydate3)

#时间戳转换为时间对象
mydate4 = datetime.datetime.fromtimestamp(mydate3)
print(mydate4)

#时间转换为字符串
mydate5 = mydate4.strftime('%y-%m-%d %H:%M:%S')#y取到19  Y取到2019 %H是24小时制 换成%I是12小时制
print(mydate5,type(mydate5))

#字符串转换成时间格式
mydate6 = datetime.datetime.strptime(mydate5,'%y-%m-%d %H:%M:%S')
print(mydate6,type(mydate6))

#当前时间 - 上课所花时间 = 上课开始时间
present = datetime.datetime.now()
last = datetime.timedelta(minutes = 45)
start = present - last
print(start)


logging

几种级别,由轻到重

日志等级		描述
DEBUG			调试信息
INFO			普通信息
WARNING			警告信息
ERROR			错误信息
CRITICAL		危险信息

Formatter格式

%(asctime)s		日志事件发生的时间
%(levelname)s	该日志的级别
%(message)s		日志记录的文本内容
%(name)s		所使用的日志器名称
%(pathname)s	调用日志记录函数的文件的全路径
%(filename)s	调用日志记录函数的文件
%(funcName)s	调用日志记录函数的函数名
%(lineno)d		调用日志记录函数的代码所在的行号
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值