Python 开发过程中一些基础点汇总

发布时间: 更新时间: 总字数:2021 阅读时间:5m 作者: 分享 复制网址

Python 开发过程中一些基础点汇总

基础知识

查看帮助

在命令窗口执行:

# 帮助
help(<>)

# 获取对象的所有属性和方法
dir(<>)

unicode

  • python中,u'' 表示unicode
  • unicode 用两个字节表示一个字符,存纯英文会浪费,于是出现可变长的UTF-8。UTF-8中,英文占一个字节,汉字占三个字节
  • unicode转换成utf-8: u'我'.encode('utf-8') -> '\xe6\x88\x91'
  • utf-8转换成unicode: '\xe6\x88\x91'.decode('utf-8') -> u'\u6211'
  • 当python源码中包含中文时,要添加文件编码如下:
# -*- coding: UTF-8 -*- 或者 #coding=utf-8

常用库总结

标准库

  • os
    • os.name 字符串指示你正在使用的平台。比如对于Windows,它是’nt’,而对于Linux/Unix 用户,它是’posix’。
    • os.getcwd()函数得到当前工作目录,即当前Python 脚本工作的目录路径。
    • os.getenv()和os.putenv()函数分别用来读取和设置环境变量。
    • os.listdir()返回指定目录下的所有文件和目录名。
    • os.remove()函数用来删除一个文件。
    • os.system()函数用来运行shell 命令。
  • sys
    • sys.argv 程序的入口参数,是一个列表
    • sys.path 装载模块的搜索路径,是一个列表
    • sys.version python 的版本,是一个string
    • sys.exit(status) 退出程序,是一个函数
  • time
    • time.sleep(n) 休息n 秒,可以是小数
    • time.time() 返回一个浮点数,从 1970-1-1 00:00:000 到当前绝对时间的秒数,还有6 位的小数
    • time.localtime(second) 返回一个元组,如果没有second,就使用time.time()返回的秒
      • 元组示例:(2009, 8, 2, 20, 40, 3, 6, 214, 0)
    • time.strftime(format) 格式:time.strftime(’%Y-%m-%d %H:%M:%d’ ‘2009-08-02 20:50:02’
  • math
    • 四舍五入,向下取余:import math; math.floor(39.9)
    • 平方根:import math; math.sqrt(9)
    • x 的 y 次方:import math; math.pow(x, y)
  • random
    • 随机数:import random; random.randint(1, 100)
  • md5
    • md5.new(arg) arg 要md5 的内容,返回一个md5 对象
    • digest(),摘要,返回16 个字节
    • hexdigest(),16 进制摘要,返回32 个字节
  • base64
    • base64.b64encode
    • base64.b64decode
  • hashlib
    • hashlib.md5()
    • hashlib.sha1()
  • eval 作用:将字符串 str 当成有效的表达式来求值并返回计算结果,可以把 list、tuple、dict 和 string 相互转化,示例:
str1 = "{'a': 1, 'b': 2}"
json1 = eval(str1)
print(type(json1))
print(json1)
  • 从命令行读取
    • raw_input() 函数会把所有的输入当作原始数据(raw data),然后将其放入字符串中
    • key = input("输入字符:") 函数会假设用户输入是合法的python表达式
  • shutil module很方便,是os模块的补充
  • re
    • import re re.match(r'^(\d+)(0*)$', '102300').groups()
    • re.compile(r'^(\d{3})-(\d{3,8})$') 先预编译,然后在match,提高效率

第三方模块

  • 解析html页面:from HTMLParser import HTMLParser
  • 图像处理标准库:PIL:Python Imaging Library
  • email
    • Python对SMTP支持有smtplib和email两个模块,email负责构造邮件,smtplib负责发送邮件
    • Python内置一个poplib模块,实现了POP3协议,可以直接用来收邮件。要把POP3收取的文本变成可以阅读的邮件,还需要用email模块提供的各种类来解析原始文本,变成可阅读的邮件对象
  • json模块提供的方法和cPickle模块类似,都有dump,dumps,load,loads方法

其他

  • a=0xffff 十六进制表示
  • import types types.StringType
  • 判断类型用 type()函数,判断继承类的类型用 isinstance()函数
  • type()可以动态创建类,而不需要使用class定义的方式,例如:type('Hello', (object,), dict(hello=fn)),通过type()函数创建的类和直接写class是完全一样的,因为Python解释器遇到class定义时,仅仅是扫描一下class定义的语法,然后调用type()函数创建出class
  • 元类metaclass:除了使用type()动态创建类以外,要控制类的创建行为,还可以使用metaclass
  • 序列化在python中叫pickling,其他语言中称为:serializationmarshalling
  • cPickle 模块是c语言写的,专门处理序列化
  • cPickle.dumps()dump成str,cPickle.dump()dump到文件中,cPickle.loads()反序列化str成对象,cPickle.load()从文件中反序列化出对象
  • 通常class的实例都有一个__dict__属性,它就是一个dict,用来存储实例变量
  • 大部分web应用都是IO密集型
  • 单进程的异步编程模型称为协程,有了协程的支持,就可以基于事件驱动编写高效的多任务程序
  • collections模块
    • 用namedtuple可以很方便地定义一种数据类型,它具备tuple的不变性,又可以根据属性来引用,使用十分方便
    • deque 是双向列表,解决了list插入和删除低效的问题
    • defaultdict(带默认值的dict) 当key不存在时,不再抛出KeyError,而是返回一个默认值
    • OrderedDict,有顺序的dict
    • Counter实际上是dict的一个子类
  • struct模块:解决str和其他二进制数据类型的转换
  • itertools模块提供的全部是处理迭代功能的函数,它们的返回值不是list,而是迭代对象,只有用for循环迭代的时候才真正计算
最新评论
加载中...
Home Archives Categories Tags Statistics