fjptec-xm 发表于 2015-4-27 05:24:00

PYTHON学习总结

  升级 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 索引。[-3:] 最后三个元素。[:3] 前三个元素。[:] 所有元素。 通用版本: 之前的版本 step==1,若 step>0 表示从左到右提取元素(即 j >= i),反之则从右到左提取(即 j user2:
print user.name + ">" + user2.name
else:
print user.name + "
页: [1]
查看完整版本: PYTHON学习总结