Python 有多少类似这样的神奇特性 是我[Too Young Too Simple]少见多怪吗?

2017-06-08 23:39:53 +08:00
 dabpop139

前段时间学习一个 Python 开源项目的时候看到了使用 pickle 库的代码,感觉反序列出来后的一些代码和以前熟悉的语言不太一样就了解了一下 pickle 库,确实是不一样,感觉是眼前一亮,确实和我见过的 PHP,Java,C#,JavaScript 实在不一样。我接触 Python 也有一段时间了,感觉还是有很多特性我是不熟悉的,确实有点感觉好奇 Python 还有多少类似这样的神奇特性?同样大家感觉哪些语言的特性哪些特性让你感觉眼前一亮的贴出来分享一下。

import pickle, StringIO

class Person(object):
    # 自定义类型

    def __init__(self, name, address):
        self.name = name
        self.address = address

    def display(self):
        print 'name:', self.name, 'address:', self.address


jj = Person("JGood", "中国 杭州")
jj.display()
file = StringIO.StringIO()

pickle.dump(jj, file, 0)  # 序列化

print '+++++++++++++++++++++++++++++++'
print file.getvalue()   #打印序列化后的结果

print '+++++++++++++++++++++++++++++++'
# del Person #反序列的时候,必须能找到对应类的定义。否则反序列化操作失败。
file.seek(0)
jj1 = pickle.load(file)  # 反序列化 注意这里拿到的 jj1 相当于是 Person 实例了

# 见证奇迹的时刻
jj1.display()
file.close()

没错就是这里反序列出来又是个实例了

jj1 = pickle.load(file) # 反序列化
jj1.display()
5374 次点击
所在节点    Python
29 条回复
sagaxu
2017-06-08 23:44:43 +08:00
Java 反序列化 JSON 得到的 object,不能调用它的方法吗?
dabpop139
2017-06-08 23:52:33 +08:00
@sagaxu 尴尬了,Java 没有玩多久,不能拿我的见识短误导了别人。
GoBeyond
2017-06-08 23:53:30 +08:00
序列化别的语言没有么
wwqgtxx
2017-06-09 00:18:25 +08:00
如果反序列化得不到实例,那还要他有什么用
strahe
2017-06-09 00:19:22 +08:00
pickle 序列化对象,
python 中一切皆对象
ecloud
2017-06-09 00:20:41 +08:00
不是什么特别的东西
还不如 ZODB 来的爽
Kirscheis
2017-06-09 00:52:53 +08:00
我想这确实是你少见多怪了。。如果反序列化之后不是个实例,那你期待它是个什么呢。。
Miy4mori
2017-06-09 01:04:10 +08:00
厉害了厉害了
breeswish
2017-06-09 01:27:30 +08:00
像 C# 什么的也是可以反序列化出一个类的实例的呀
czheo
2017-06-09 02:57:30 +08:00
ericls
2017-06-09 06:34:17 +08:00
跨进程通信不是一直默认这个吗
est
2017-06-09 08:52:16 +08:00
你这算什么。10 年前我在学校 cpickle 了一个到 www.youtube.com 的 http 连接

10 年后我在 mac 上 unpickcle 了,居然还在继续收发数据!
wwqgtxx
2017-06-09 08:54:34 +08:00
@est pickle 不能序列化 socket 对象吧
zhchbin
2017-06-09 09:06:10 +08:00
歪个楼,python 的 pickle 模块还能用来留后门: https://blog.nelhage.com/2011/03/exploiting-pickle/
araraloren
2017-06-09 09:21:47 +08:00
~~ 我看完了才知道 说的是 序列化 反序列化
littleshy
2017-06-09 09:28:04 +08:00
序列化和反序列化跟语言没关系吧……
laoyuan
2017-06-09 09:42:04 +08:00
@wwqgtxx 就是 http request 吧
DietCola
2017-06-09 09:50:44 +08:00
令人窒息的 Python 秀
fwee
2017-06-09 10:05:48 +08:00
卧槽...水平是有多低
Kilerd
2017-06-09 10:11:12 +08:00
@est 还有这种操作?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/367093

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX