三,内置方法
print(abs(-5)) # 取绝对值
print("-------1-------")
# all()函数用于判断给定的可迭代参数iterable中的所有元素是否都为TRUE,如果是返回True,否则返回False。
# 元素除了是0、空、None、False 外都算 True
print(all([0, 1, -5]))
print(all([7, 1, -5]))
print("-------2-------")
print(any([0, 1])) # 和all相比,any里面只要有一个是真即为真
print(any([]))
print("-------3-------")
print(bin(2)) # 把数字十进制转二进制
print(bin(4))
print(bin(8))
print(bin(255))
print("-------4-------")
print(bool(0)) # 判断真假
print(bool(1))
print(bool([]))
print("-------5-------")
a = bytearray("abcde", encoding="utf-8")
print(a[0], a[2]) # 返回对应的ASCII值
print("-------6-------")
print(chr(50)) # 和bytearray()相反
print(chr(86))
print(chr(98))
print("-------7-------")
print(ord("w")) # 返回对应的ASCII值
print(ord("5"))
print(ord("P"))
print("-------8-------")
print(divmod(5, 2)) # 前着除以后者,返回商和余数
print(divmod(10, 3))
print("-------9-------")
res = filter(lambda n: n > 5, range(10)) # 过滤,使用lambda匿名函数
for i in res:
print(i)
print("-------10-------")
res = map(lambda n: n*n, range(10)) # map()会根据提供的函数对指定序列做映射。
for i in res:
print(i)
print("-------11-------")
import functools
res = functools.reduce(lambda x, y: x + y, range(10)) # reduce()函数会对参数序列中元素进行累积。
print(res)
print("-------12-------")
print(hex(10)) # 数字十进制转十六进制
print(hex(20))
print(hex(6))
print("-------13-------")
print(pow(2, 10)) # pow() 方法返回 x^y(x 的 y 次方) 的值。
print("-------14-------")
print(round(3.1415926)) # round()方法返回浮点数x的四舍五入值,默认取整。
print(round(3.1415926, 3))
print("-------15-------")
a = [1, 2, 3, 4, 5, 6]
b = ["a", "b", "c", "d", "e"]
for i in zip(a, b): # 将a,b一一对应组合起来
print(i)
G:\Python38\python.exe "G:/Project1/self_taught/fourth_week/built_in _method.py"
5
-------1-------
False
True
-------2-------
True
False
-------3-------
0b10
0b100
0b1000
0b11111111
-------4-------
False
True
False
-------5-------
97 99
-------6-------
2
V
b
-------7-------
119
53
80
-------8-------
(2, 1)
(3, 1)
-------9-------
6
7
8
9
-------10-------
0
1
4
9
16
25
36
49
64
81
-------11-------
45
-------12-------
0xa
0x14
0x6
-------13-------
1024
-------14-------
3
3.142
-------15-------
(1, 'a')
(2, 'b')
(3, 'c')
(4, 'd')
(5, 'e')
Process finished with exit code 0
四,Json与pickle数据序列化
json序列化
import json
info = {
"name": "hpl",
"age": 18,
"sex": "m"
}
f = open("test.text", "w")
print(json.dumps(info))
f.write(json.dumps(info))
f.close()
G:\Python38\python.exe G:/Project1/self_taught/fourth_week/json序列化.py
{"name": "hpl", "age": 18, "sex": "m"}
Process finished with exit code 0
再看test.text文件中
序列化已被写入
那该如何反序列化读出呢?
import json
f = open("test.text", "r")
data = json.loads(f.read())
print(data["age"])
f.close()
G:\Python38\python.exe G:/Project1/self_taught/fourth_week/json反序列化.py
18
Process finished with exit code 0
这样我们就可以将文件存在硬盘上,也可以再读出来!
再看代码
import json
def sayhi(name):
print("hello,", name)
info = {
"name": "hpl",
"age": 18,
"func": sayhi
}
f = open("test.text", "wb")
f.write(json.dumps(info))
f.close()
当运行时会报错,说这不是json可序列化内容
纳尼(⊙o⊙)?哈哈,其实json只能处理简单的数据类型(比如说,dict, list, str等)为什么呢?因为是所有语言里都通用的,用于不同语言之间的数据交互。
那么问题来了,有没有一个阔以处理复杂数据类型的玩意呢?答案是:肯定有滴!
pickle就登场了
import pickle
def sayhi(name):
print("hello,", name)
info = {
"name": "hpl",
"age": 18,
"func": sayhi
}
f = open("test.text", "wb")
f.write(pickle.dumps(info))
f.close()
首先说,这不是乱码了,可以说pickle有自己的一套语法规则,但千万不能说,pickle相对于json优点为对代码就行加密 ,这就是开玩笑了,O(∩_∩)O
再来反序列化
import pickle
def sayhi(name):
# print("hello1,", name)
print("hello2,", name)
info = {
"name": "hpl",
"age": 18,
"func": sayhi
}
f = open("test.text", "rb")
data = pickle.loads(f.read())
print(data["func"]("hpl"))
f.close()
G:\Python38\python.exe G:/Project1/self_taught/fourth_week/json反序列化.py
hello1, hpl
hello2, hpl
None
Process finished with exit code 0
有一个dump()方法
import pickle
def sayhi(name):
print("hello,", name)
info = {
"name": "hpl",
"age": 18,
"func": sayhi
}
f = open("test.text", "wb")
pickle.dump(info, f) # f.write(pickle.dumps(info))
f.close()
pickle.dump(info, f)=f.write(pickle.dumps(info))是完全一样的
既然有dump()就肯定在反序列化中还有另外一个load()方法
import pickle
def sayhi(name):
print("hello,", name)
info = {
"name": "hpl",
"age": 18,
"func": sayhi
}
f = open("test.text", "rb")
data = pickle.load(f) # f.write(pickle.dumps(info))
print(data["func"]("hpl"))
f.close()
data = pickle.load(f)=f.write(pickle.dumps(info))完全一样
再看最后的一点代码
import json
info = {
"name": "hpl",
"age": 18
}
f = open("test.text", "w")
f.write(json.dumps(info))
info["age"] = 20
f.write(json.dumps(info))
f.close()
反序列化
import json
info = {
"name": "hpl",
"age": 18
}
f = open("test.text", "r")
for line in f:
print(json.loads(line))
f.close()
然后就把info中的内容都打印出来!
好了,这周的学习内容就到此为止,望各位看客大佬发现有不足或错误能留言相告,臣不胜感激!!!
链接: 基础四(1)