python2 与 python3 使用 pickle 的区别

这两天晚上在看 python 教程,地址是:http://woodpecker.org.cn/abyteofpython_cn/chinese/index.html

因为之前已经将这个教程看过一遍,所以这次看得很快,基本就是将示例程序下载下来,在本机上跑一遍,没有任何问题,分分钟理解。

python 目前有两个大的分支版本,我电脑(ubuntu)上的版本是 python 2.7.4 和 python 3.3.1 。我喜欢新的,所以选择学习 python3 。(其实两个版本差别也没多大)现在接触到的主要是 print 使用上的不同。刚才看到这里:http://woodpecker.org.cn/abyteofpython_cn/chinese/ch12s02.html ,将这个例程下载下来后,照例先使用 2to3 命令将代码转换为 python3 版本的,然后运行,发现出错,在网上搜索一番后,终于可以跑起来了。代码贴在下面,首先是教程下载下来的脚本:

#!/usr/bin/python
# Filename: pickling.py

import cPickle as p
#import pickle as p

shoplistfile = 'shoplist.data'
# the name of the file where we will store the object

shoplist = ['apple', 'mango', 'carrot']

# Write to the file
f = file(shoplistfile, 'w')
p.dump(shoplist, f) # dump the object to a file
f.close()

del shoplist # remove the shoplist

# Read back from the storage
f = file(shoplistfile)
storedlist = p.load(f)
print storedlist

接下来是我先 2to3 命令处理转换完,然后作出细微更改后的脚本:

#!/usr/bin/env python
# Filename: pickling.py

import pickle as p
#import pickle as p

shoplistfile='shoplist.data'
# the name of the file where we will store the object

shoplist=['apple','mango','carrot']

# Write to the file
# 这里由 python2 的 file 改为 open,python3 运行提示错误 file not defined
# 文件打开方式改为以二进制的方式打开 wb 模式
# 之前 w 模式打开会提示错误 TypeError: must be str, not bytes
f=open(shoplistfile,'wb')
p.dump(shoplist,f) # dump the object to a file
f.close()

del shoplist # remove the shoplist

# Read back from the storage
# 同样的 file 改为 open
# 同样的 这里也是以二进制的方式打开 rb 模式
f=open(shoplistfile, 'rb')
storedlist=p.load(f)
print(storedlist)

position:relative 是个好东西

现在所在的这家公司没有人专门做前端,目前只有PHP开发和一个产品经理一个美工,公司的前台页面工作外包出去了。此为背景。

外包出去的做好的页面发回给我,然后进行页面嵌套,我感觉这样不是很方便,有些细节往往需要再次进行调整,而写好的页面,根本就不敢乱动其 DOM 结构,因为一旦加一个 div ,减一个 span 都经常导致样式出现问题,外包回来的的页面很多 css 样式都与结构层次有关,导致我后面进行改的时候比较困难,所以我尽量不去动原先的结构,而添加 style 标签加入特定样式。当当当挡~ 主角出场,因为经常涉及的元素位置的改动,所以我现在都是用 position:relative 然后再用 top left 等将其移动我需要的位置,这样就可以做到既不更改 DOM 结构,又可以很快捷不会出差错的完成任务,每次这个时候我都会感谢发明这个样式标签的人。

至于公司为什么没有招聘专门做前端的人,我的猜想是,多请一个人需要多开一个人的工资,但是我们的一个产品一般也不会超过10个页面,并且每个页面相似度很高,这就会导致前端的工作比较少,花较多的钱雇一个前端不如将前端的活外包出去,按需付钱咯。

这样做导致的问题就是,我们很痛苦,外包出去给回来的 html 页面,并不一定满足要求,往往我要加一个 span 将特定的元素找出来,给个 class,然后就可以写 javascript 了,问题来了,发现新加进去的 span 已经有了样式,每每这个时候,老子都无比抓狂,我勒个去啊,为毛要给 span 标签指定样式啊,你直接给你需要指定样式的元素给个 class 不行么?同理,页面的很多样式都是与结构相关,比如经常会出现这样的代码

form div.error {/*这里面有一些样式*/}

为了保持页面的一致性,有可能其它地方也要用到 error 的样式,这个时候问题来了,我直接加 class=”error” 是不行的,因为必须是 form 下的 div 的 class=”error” 才能有这个样式,我勒个去去去啊~直接写成 .error 不行么,在前面加这一串后,样式没有通用性啊。

还有的问题就是,一个页面经常要引入 6 个左右的外部 css 文件,再加上 jqueyui 的 css 文件,得有 7 个了,性能什么的不用考虑,估计公司用的服务器资源还很充足,不用考虑连接数,不用考虑压缩 js css ,不用考虑页面大小,因为经常可以看到大段大段的注释在 html 源文件里面。

好的,吐槽完了~