|
升级 python 版本的问题
升级 python 一般会建立软连接,使系统默认的python指向高版本的 python,如:
mv /usr/bin/python /usr/bin/python2.6.6
ln -s /usr/local/bin/python2.7 /usr/bin/python
但由于 yum 命令是基于原版本的 python 来执行的,为解决修改软链接后,yum 不能正常工作的问题(可能版本不兼容,尤其是3.X):
编辑 /usr/bin/yum:
#!/usr/bin/python => #!/usr/bin/python2.6.6 即可
IDE:
不建议直接使用 IDLE 写代码,如果出现 TAB 和 SPACE 混用很难排查,可以使用 sublime_text 编写代码,ctrl + a 全选后,TAB 键为实线,空格为虚线标识。
建议直接使用 PyCharm ,windows、linux、mac 版本都有。还有 ulipad 也不错。另外推荐 Eclipse + PyDev 的组合,也很不错。
这三款IDE都可跨平台。
编码问题:
在使用 python2.x 时,将字符串写入文件时报错:UnicodeEncodeError: 'ascii' codec can't encode character u'\uff1a',即ascii码无法被转换成unicode码(在读取MYSQL数据库中的中文数据时,也可能出现此问题)。如果使用 python3.x ,则无此编码问题。
默认 python2.x 的编码是 ascii ,可以使用 print sys.getdefaultencoding() 查看,修改方法有两种:
1、在代码中加入:
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
2、在安装目录的 Lib\site-packages\ 目录下新建 sitecustomize.py
import sys
sys.setdefaultencoding('utf-8')
在 python 文件中有中文的话(即使是注释),则需要在文件头加上如下代码,否则会运行出错:
#coding:utf-8
3、有时候会遇到中文输出时变成类似于 “\u5929\u6d25\u5546\u573a” 情况,此时只要把它转换成 unicode 对应的字符就可以了。
如: mystr = "\u5929\u6d25\u5546\u573a"
newstr = mystr.decode("unicode-escape")
模块安装工具:
1、easy_install
一般随 python 自带。
2、pip
easy_install 的增强版,需要自行下载安装:
https://pypi.python.org/pypi/pip#downloads
使用方法如:
pip install MySQL-python
pip install xlrd
pip install xlwt
如果有错误,可能是缺少python头文件,yum install python-devel 即可。
基本语法:
零散:
a**b == pow(a,b)
raw_input && input
str && repr && ``
obj == eval(repr(obj))
eval(repr(type(type))) #error
# 尽管str()和repr()运算在特性和功能方面都非常相似,事实上repr返回的是一个对象的“官方”字符串表示,也就是说绝大多数情况下可以通过求 值运算(使用内建函数eval())重新得到该对象,但str()则有所不同。str()致力于生成一个对象的可读性好的字符串表示,它的返回结果通常无 法用于eval()求值,但很适合用于print语句输出。需要再次提醒的是,并不是所有repr()返回的字符串都能够用 eval()内建函数得到原来的对象。也就是说 repr() 输出对 Python比较友好,而str()的输出对用户比较友好。虽然如此,很多情况下这三者的输出仍然都是完全一样的。
r"C:\Program Files\fnord""\\" == "C:\\Program Files\\fnord\\"
u"Hello,World!" #python3.0中,所有字符串都是 Unicode 字符串。
python内建有6种序列:列表,元组,字符串,Unicode字符串,buffer对象和xrange对象。
元组不可修改,在几乎所有情况下列表都可以替换元组。(例外如,使用元组作为字典的键,因为键不可修改)
os.system("ls") linux下可用来调用 shell 命令
通用序列操作:
1、索引访问:从0开始,并支持负数索引,表示从右边开始,最后1个元素的位置编号是 -1,这个要注意,因为无法为 -0
2、分片:[i:j],包括 i 索引,不包括 j 索引。 [-3:] 最后三个元素。 [:3] 前三个元素。 [:] 所有元素。 通用版本: [i : j: step] 之前的版本 step==1,若 step>0 表示从左到右提取元素(即 j >= i),反之则从右到左提取(即 j user2:
print user.name + ">" + user2.name
else:
print user.name + " |
|
|
|
|
|
|