python3 对象 |字典|json|yaml|字符串 相互转化在研究 k8s python3函数对象的yaml 配置文件的时候python3函数对象,python3函数对象我总担心自己一不小心 会写错 , 所以我向往 使用将对象 序列化 yaml 的形式 ,
其实pythonobject 可以 直接 转 yaml,甚至也可以直接 转成yaml文件?。。?
这里 会经常用到几个 函数vars()ast.
我们先尝试用最笨的方法 实现object到yaml 的转化
在python对象 convert todict 的形式 , 使用vars()函数
然后dictconvert tojson使用json.dumps(dict)函数
然后 jsonconverte to yaml使用 ya= yaml.load(json.dumps(dict)) 然后
再 yaml.safe_dump(ya,default_flow_style=False)
至此我们看到 从 python Object--- dict ----json--- yaml 的转化
其中 obj dict json yaml转 string , 只要str()函数即可,或者 str(vars())结合
yaml 格式 写入到文件,需要注意的是 , open()函数 的mode 一定要是'w',不能是’wb', b代表是二进制写入
yaml 写入的是dict str,使用 ‘wb' 会报错,[yaml TypeError: a bytes-like object is required, not 'str']
【出现该错误往往是通过open()函数打开文本文件时,使用了‘rb’属性,如:fileHandle=open(filename,'rb'),则此时是通过二进制方式打开文件的,所以在后面处理时如果使用了str()函数,就会出现该错误,该错误不会再python2中出现 。
具体解决方法有以下两种:
第一种,在open()函数中使用‘r’属性,即文本方式读?。?而不是‘rb’,以二进制文件方式读取,可以直接解决问题 。
第二种,在open()函数中使用‘rb’,可以在使用之前进行转换,有以下实例 , 来自:】
其实pythonobject 可以 直接 转 yaml,甚至也可以直接 转成yaml文件?。。?
比如我已经定义了一个 Dog python class,他有 好几个属性 并已经赋值初始化了
另外生成 yaml 对象
生成yaml文件
结果是
反过来 yaml ---- json --- 持久化json 文件indent=1属性是为了让 json 不以单行展示,而是展开
注意的是python 的 dict 和set 很相似 ,都是 { },set 里是list , dict 是键值对
【#set object is not JSON serializable [duplicate]
】
打开 demo.json
yaml --- dict
yaml --- python object
json -- dict
json.loads()
dict-- json
json.jumps()
str --- dict
newdict=dict(str)
json --python object
一个python object无法直接与json转化,只能先将对象转化成dictionary,再转化成json;对json,也只能先转换成dictionary,再转化成object,通过实践,源码如下:
yaml -- python object
对yaml,也只能先转换成json---dictionary,再转化成object,通过实践,源码如下:
dict -- -python object
python对象 默认都有一个私有的属性dict取值 就是 object的 字典形式,赋值就就可以给对象属性对应赋值
例如json转对象
对象 转json
Python之dict(或对象)与json之间的互相转化
在Python语言中,json数据与dict字典以及对象之间的转化,是必不可少的操作 。
dict字典转json数据
对象转json数据
json数据转成dict字典
json数据转成对象
json的load()与dump()方法的使用
dump()方法的使用
Python2 与 Python3 的 map 函数Python2 python3函数对象的 map 函数将函数 func 应用到一个序列的每个元素python3函数对象,或者多个序列的相同索引位置对应的元素python3函数对象,最终返回一个 list 。
Python3 的 map 函数与 Python2 功能一致,最后返回的是一个 map 对象 。可以通过 list() 函数将 map 对象转为一个 list 列表 。
太全了!Python3常用内置函数总结数学相关
abs(a) : 求取绝对值 。abs(-1)
max(list) : 求取list最大值 。max([1,2,3])
min(list) : 求取list最小值 。min([1,2,3])
sum(list) : 求取list元素的和 。sum([1,2,3])6
sorted(list) : 排序,返回排序后的list 。
len(list) : list长度,len([1,2,3])
divmod(a,b): 获取商和余数 。divmod(5,2)(2,1)
pow(a,b) : 获取乘方数 。pow(2,3)8
round(a,b) : 获取指定位数的小数 。a代表浮点数,b代表要保留的位数 。round(3.1415926,2)3.14
range(a[,b]) : 生成一个a到b的数组,左闭右开 。range(1,10)[1,2,3,4,5,6,7,8,9]
类型转换
int(str) : 转换为int型 。int('1')1
float(int/str) : 将int型或字符型转换为浮点型 。float('1')1.0
str(int) : 转换为字符型 。str(1)'1'
bool(int) : 转换为布尔类型 。str(0)False str(None)False
bytes(str,code) : 接收一个字符串 , 与所要编码的格式,返回一个字节流类型 。bytes('abc', 'utf-8')b'abc' bytes(u'爬虫', 'utf-8')b'xe7x88xacxe8x99xab'
list(iterable) : 转换为list 。list((1,2,3))[1,2,3]
iter(iterable): 返回一个可迭代的对象 。iter([1,2,3])list_iterator object at 0x0000000003813B00
dict(iterable) : 转换为dict 。dict([('a', 1), ('b', 2), ('c', 3)]){'a':1, 'b':2, 'c':3}
enumerate(iterable) : 返回一个枚举对象 。
tuple(iterable) : 转换为tuple 。tuple([1,2,3]) (1,2,3)
set(iterable) : 转换为set 。set([1,4,2,4,3,5]){1,2,3,4,5} set({1:'a',2:'b',3:'c'}){1,2,3}
hex(int) : 转换为16进制 。hex(1024)'0x400'
oct(int) : 转换为8进制 。oct(1024)'0o2000'
bin(int) : 转换为2进制 。bin(1024)'0b10000000000'
chr(int) : 转换数字为相应ASCI码字符 。chr(65)'A'
ord(str) : 转换ASCI字符为相应的数字 。ord('A')65
相关操作
eval****() : 执行一个表达式,或字符串作为运算 。eval('1 1')2
exec() : 执行python语句 。exec('print("Python")')Python
filter(func, iterable) : 通过判断函数fun,筛选符合条件的元素 。filter(lambda x: x3, [1,2,3,4,5,6])filter object at 0x0000000003813828
map(func, *iterable) : 将func用于每个iterable对象 。map(lambda a,b: a b, [1,2,3,4], [5,6,7])[6,8,10]
zip(*iterable) : 将iterable分组合并 。返回一个zip对象 。list(zip([1,2,3],[4,5,6]))[(1, 4), (2, 5), (3, 6)]
type():返回一个对象的类型 。
id(): 返回一个对象的唯一标识值 。
hash(object):返回一个对象的hash值,具有相同值的object具有相同的hash值 。hash('python')7070808359261009780
help():调用系统内置的帮助系统 。
isinstance():判断一个对象是否为该类的一个实例 。
issubclass():判断一个类是否为另一个类的子类 。
globals() : 返回当前全局变量的字典 。
next(iterator[, default]) : 接收一个迭代器 , 返回迭代器中的数值,如果设置了default , 则当迭代器中的元素遍历后 , 输出default内容 。
reversed(sequence) : 生成一个反转序列的迭代器 。reversed('abc')['c','b','a']
python函数是对象吗python中,所有的元素都是对象 , 其中第一类对象的通用特性:可作为值传递,赋值给另一个对象;可以作为元素添加到集合对象中;可以作为参数传递给其他函数;可以作为函数的返回值
函数range()返回对象在python3中,执行下面的语句
得到结果是 range(0,10) ,但是如果换一种方式
得到的结果就是[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
那为什么会这样呢?其实在Python3中range()函数返回的对象很像一个列表,但是它确实不是一个列表 , 它只是在迭代的情况下返回指定索引的值 , 它并不会在内存中产生一个列表对象,官方解释说这样做是为了节约内存空间 。通常我们称这种对象是可迭代的 , 或者是可迭代对象 。
这里就要引入另外一个叫迭代器的概念,迭代器可以从一个可迭代对象中连续获取指定索引的值,直到索引结束 。比如list()函数,所以在上面的例子中,我们可以用list()这个迭代器将range()函数返回的对象变成一个列表 。
由此可以看出:range()函数返回的是一个可迭代对象(类型是对象),而不是列表类型;list() 函数是对象迭代器 , 把对象转为一个列表,返回的变量类型为列表 。
python3--内置函数python的常用内置函数
1.abs() 函数返回数字的绝对值
abs(-40)=40
2. dict() 函数用于创建一个字典
dict()
{}#创建一个空字典类似于u={},字典的存取方式一般为key-value
例如u = {"username":"tom","age":18}
3. help() 函数用于查看函数或模块用途的详细说明
help('math')查看math模块的用处
a=[1,2,3,4]
help(a)查看列表list帮助信息
4.dir()获得当前模块的属性列表
dir(help)
['__call__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__']
5.min() 方法返回给定参数的最小值 /参数可以为序列
a=min(10,20,30,40)
a
10
6. next() 返回迭代器的下一个项目
it = iter([1, 2, 3, 4, 5])
next(it)
1
next(it)
2
7. id() 函数用于获取对象的内存地址
a=12
id(a)
1550569552
8.enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标 , 一般用在 for 循环当中 。
a=["tom","marry","leblan"]
list(enumerate(a))
[(0, 'tom'), (1, 'marry'), (2, 'leblan')]
9. oct() 函数将一个整数转换成8进制字符串
oct(15)
'0o17'
oct(10)
'0o12'
10. bin() 返回一个整数 int 或者长整数 long int 的二进制表示
bin(10)
'0b1010'
bin(15)
'0b1111'
11.eval() 函数用来执行一个字符串表达式,并返回表达式的值
eval('2 2')
4
12.int() 函数用于将一个字符串会数字转换为整型
int(3)
3
int(3.6)
3
int(3.9)
3
int(4.0)
4
13.open() 函数用于打开一个文件,创建一个file对象 , 相关的方法才可以调用它进行读写
f=open('test.txt')
14.str() 函数将对象转化为适于人阅读的形式
str(3)
'3'
15. bool() 函数用于将给定参数转换为布尔类型,如果没有参数,返回 False
bool()
False
bool(1)
True
bool(10)
True
bool(10.0)
True
16.isinstance() 函数来判断一个对象是否是一个已知的类型
a=5
isinstance(a,int)
True
isinstance(a,str)
False
17. sum() 方法对系列进行求和计算
sum([1,2,3],5)
11
sum([1,2,3])
6
18. super() 函数用于调用下一个父类(超类)并返回该父类实例的方法 。super 是用来解决多重继承问题的,直接用类名调用父类方法
classUser(object):
def__init__(self):
class Persons(User):
super(Persons,self).__init__()
19. float() 函数用于将整数和字符串转换成浮点数
float(1)
1.0
float(10)
10.0
20. iter() 函数用来生成迭代器
a=[1,2,3,4,5,6]
iter(a)
for i in iter(a):
...print(i)
...
1
2
3
4
5
6
21.tuple 函数将列表转换为元组
a=[1,2,3,4,5,6]
tuple(a)
(1, 2, 3, 4, 5, 6)
22.len() 方法返回对象(字符、列表、元组等)长度或项目个数
s = "playbasketball"
len(s)
14
a=[1,2,3,4,5,6]
len(a)
6
23. property() 函数的作用是在新式类中返回属性值
class User(object):
def __init__(self,name):
self.name = name
def get_name(self):
return self.get_name
@property
def name(self):
return self_name
24.type() 函数返回对象的类型
25.list() 方法用于将元组转换为列表
b=(1,2,3,4,5,6)
list(b)
[1, 2, 3, 4, 5, 6]
26.range() 函数可创建一个整数列表,一般用在 for 循环中
range(10)
range(0, 10)
range(10,20)
range(10, 20)
27. getattr() 函数用于返回一个对象属性值
class w(object):
...s=5
...
a = w()
getattr(a,'s')
5
28. complex() 函数用于创建一个复数或者转化一个字符串或数为复数 。如果第一个参数为字符串,则不需要指定第二个参数
complex(1,2)
(1 2j)
complex(1)
(1 0j)
complex("1")
(1 0j)
29.max() 方法返回给定参数的最大值,参数可以为序列
b=(1,2,3,4,5,6)
max(b)
6
30. round() 方法返回浮点数x的四舍五入值
round(10.56)
11
round(10.45)
10
round(10.45,1)
10.4
round(10.56,1)
10.6
round(10.565,2)
10.56
31. delattr 函数用于删除属性
class Num(object):
...a=1
...b=2
...c=3.
.. print1 = Num()
print('a=',print1.a)
a= 1
print('b=',print1.b)
b= 2
print('c=',print1.c)
c= 3
delattr(Num,'b')
print('b=',print1.b)
Traceback (most recent call last):File "", line 1, inAttributeError: 'Num' object has no attribute 'b'
32. hash() 用于获取取一个对象(字符串或者数值等)的哈希值
hash(2)
2
hash("tom")
-1675102375494872622
33. set() 函数创建一个无序不重复元素集,可进行关系测试,删除重复数据 , 还可以计算交集、差集、并集等 。
a= set("tom")
b = set("marrt")
a,b
({'t', 'm', 'o'}, {'m', 't', 'a', 'r'})
ab#交集
{'t', 'm'}
a|b#并集
{'t', 'm', 'r', 'o', 'a'}
a-b#差集
{'o'}
【python3函数对象 python 对象】关于python3函数对象和python 对象的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。
推荐阅读
- excel数据拟合怎么用,excell数据拟合
- 人体进化有什么危害视频,人体进化的缺陷
- 怎么用苹果设备读取硬盘,怎么读取苹果硬盘数据
- 虎牙直播带粉上车软件,虎牙主播带粉上王者是真的吗
- 如何管理oracle用户 oracle数据管理方式
- qt处理mysql数据集表格,qt 数据表
- java代码块并行,java 代码块
- 最新飙车直播平台,主播飙车 是什么意思
- c语言数组查找函数调用 c++ 数组查找