json文件是一种特殊的字符串,里面可以有列表,字符串等。是不同编程语言之间信息传递的一种方法。
python的列表等转换成jason格式叫做序列化,json转编程语言叫做反序列化,序列化会把字符串的引号转换为双引号,jason只认字符串为双引号。
v = [12,3,4,{‘name‘:‘ran‘},True,‘ranhao‘] #先定义一个列表,里面有字典,布尔,字符串,数字
import json
#导入json模块
v1 = json.dumps(v) #序列化
print(v1)
#输出:[12, 3, 4, {"name": "ran"}, true, "ranhao"]
拿到json这种特殊的字符串,必须反序列化成为字典或列表,才方便进行下一步的操作。
import json
v2 =‘["ran",123]‘ #这是一个json,字符串格式,内部为列表
v3 = json.loads(v2) #反序列化
print(v3)
#输出:[‘ran‘, 123]
在json格式中没有元组
shutil.rmtree(‘test‘) 删除tset目录
shutil.move(‘test‘,‘xx‘) 把test目录重命名为xx
shutil.make_archive(‘zzh‘,‘zip‘,‘D:\code\ran‘) 把ran这个文件压缩为zzh.zip
获取时间
from datetime import datetime,timezone,timedelta
val = datetime.now()
print(val)#获取当前本地时间
val2 = datetime.utcnow()#当前UTC时间(零时区)
tz = timezone(timedelta(hours=7))
v3 = datetime.now(tz)#获取东7区时间
字符串时间和datetime时间之间的转换
意义:方便计算机计算,例如四十天后是几月几日等,通过time就难以做到
v1 = datetime.now()
v2 = v1.strftime("%Y-%M-%d %H:%M:%S")#拿出其中的年和月转换成字符串
--------------反向转换-----------------
v1 = datetime.strptime(‘2011-11-11‘,‘%y-%m-%d‘)
print(v1) #反转的意义:方便计算机计算,例如四十天后是几月几日等
v2 = v1 +timedelta(days=40 ) #加40天的操作
时间戳和datetime的关系
import time
ctime = time.time() #创建一个时间戳,指从1970年到现在的秒数
datetime.fromtimestamp(ctime) #把以秒计的时间戳转化为datetime格式
在程序执行中加入语法,使得程序不会报错
try:
val = input("输入数字")
num = int(val)
except Exception as e:
print(‘操作异常‘)
原本输入数字以外的东西就会报错,加入这个语法后可以确保程序继续执行
__next__
功能,可以被for循环的也是可迭代对象v1 = [11, 22, 33, 44] #先定义一个列表
v2 = iter(v1) #把v1变成迭代器
v1 = [11, 22, 33, 44].__iter__()#和上排代码作用相同
result1 = v2.__next__() #第一次迭代,取到11
result2 = v2.__next__() #第二次迭代,取到22
#函数
def func():
return 123
func()
#生成器函数(内部是否有yield)
def func():
arg = arg +1
yield 1
yield 2
yield 100
#函数内部代码不会执行,返回一个生成器对象
v1 = func(2000)
#生成器可以被for循环,一旦开始循环,那么函数内部代码就会开始执行
for item in v1: #这下func函数才开始执行,每循环一次, 就把一行yield的值return出来
python3.3之后的新功能:yield from 语句
def func1():
yield 11
yield from func2()
yield 22
yield 33
def func2():
yield "XX"
for i in func1():
print(i) #这样打印11,过后会进入到func2函数中,然后继续22、33
class 类名:
def 方法1(self,name):
print(name)
def 方法2(self,age):
print(age)
def 方法3(self,sex):
print(sex)
def 方法4(self,job):
print(job)
#相当于把函数分成不同类别
#然后创建该类对象
obj = 类名() #也叫实列化
#调用方法
obj.方法1(‘ran’)
应用场景:遇到很多函数,需要对函数归类划分
封装在里面,可以有自己的值供自己调用
在命名class后,可以加入初始化函数。 作用为当实列化这个class的时候,会自动执行初始化函数
#首先命名一个类
class 类名:
def __init__(self):
print(‘初始化完成‘)
#实列化这个类
类名()
or
p1 = 类名()
#这样__init__(self)函数会自动执行
创建父类,子类,在执行对象时,优先在自己的类中找,如果没有就去父类中找
#父类or基类
class Base:
def f1(self):
pass
#子类or派生类
class Foo(Base):#如果此处继承了2个类,那么从左到右依次找
def f2(self):
pass
#实列化子类
obj = Foo()
obj.f1()#现在自己中寻找f1,找不到再去父类中寻找
#如果执行父类,是不会去子类中寻找的
注意事项:
对于一个函数而言,python对于参数的类型不会限制,那么传入的可以是各种类型,但是在函数中如果有arg.send方法,那么就是对于传入类型的一个限制(类型必须有send方法)。
def func(arg):
v = arg[1] #这时候arg可以是多种类型
arg.append(2) #这个时候arg就必须是支持append的类型
原文:https://www.cnblogs.com/buono/p/12715101.html