满足低调之心基础四(2)

三,内置方法

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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值