Core Python Notes

来源:互联网 发布:手机mac addr 编辑:程序博客网 时间:2024/06/14 20:59

第二章 快速入门

  • print 语句调用str()函数显示对象,交互式解释器用repr()来显示对象
  • 下划线(_)在解释器中有特别的含义,表示最后一个表达式的值
 >>> myString = 'Hello World!'>>> myString'Hello World!'>>> _'Hello World!'
  • (%)字符串替换
>>> print "%s is number %d!" % ("Python", 1)Python is number 1!

%s 表示字符串,%d表示整型, %f表示浮点型

  • >>用来重定向输出
>>> import sys>>> print >> sys.stderr, 'Fatal error: invalid input!'Fatal error: invalid input!

重定向到日志文件

>>> logfile = open('mylog.txt', 'a')>>> print >> logfile, 'Fatal error: invalid input!'>>> logfile.close<built-in method close of file object at 0x0000000002ABEDB0>
  • raw_input() 读取标准输入,并将读取到的数据赋值给指定的变量
    从标准输入读取一个字符串并自动删除串尾的换行字符。EOF字符(Unix: Ctrl+D, Windows: Ctrl+Z+回车)
  • help() 从交互解释器中获得帮助
  • 文档字符串
    在模块,类或者函数的起始添加一个字符串,起到在线文档的功能
  • 类的文档变量是 class.__doc__
  • 函数的文档变量是function.__doc__
    文档字符串可以在运行时访问,也可以用来自动生成文档
  • Python是动态类型语言, 也就是说不需要预先声明变量的类型。变量的类型和值在赋值那一刻被初始化
    • 变量无需事先声明
    • 变量无需指定类型
    • 程序员不用关心内存管理
    • 变量名会被回收
    • del 语句能够直接释放资源
    • del语句会删除一个对象的引用
    • C语言:变量声明必须位于代码块最开始
    • Python中,变量在第一次被赋值时自动声明
    • 变量一旦被赋值,就可以通过变量名来访问它
    • Python解释器承担了内存管理的复杂任务
    • Python内部记录着所有使用中的对象各有多少引用,称为一个引用计数器。这个对象的引用计数变为0时,它被垃圾回收
    • Python的垃圾收集器实际上是一个引用计数器和一个循环垃圾收集器
  • Python不支持++n,会将–n解释为-(-n)从而得到n
  • Python的长整型所能表达的范围远远超过C语言的长整形
  • 从Python2.3开始再也不会报整型溢出错误,结果会被自动转为长整形
  • 使用索引操作符([])和切片操作符([:])可以得到子字符串
  • 加号(+)用于字符串连接,星号(*)用于字符串重复
  • 元组也可进行切片运算,得到的结果也是元组
  • 字典:几乎所有类型的Python对象都可以用做键
  • print语句默认会给每一行添加一个换行符。只要在print语句的最后添加一个逗号,就可以改变这种行为
  • 没有任何参数的print语句,用来输出一个换行符
  • 带逗号的print语句输出的元素之间会自动添加一个空格
  • range()函数生成列表
  • enumerate()函数用于字符串索引
  • 列表解析:在一行中使用一个for循环将所有值放到一个列表当中
  • 列表解析可以挑选出符合要求的的值放入列表
  • open() ‘+’表示读写,’b’表示二进制访问,未提供access_mode默认值为’r’
  • 文件中每行文本已经自带了换行字符,如果我们不抑制print语句产生的换行符号,文本在显示时就有额外的空行产生
  • 函数的参数可以有默认值
  • 有用的内建函数
    • dir()
    • help()
    • int()
    • len()
    • open()
    • range()
    • raw_input()
    • str()
    • type()

第三章 Python基础

  • 反斜线(\)继续上一行
  • 分号(;)将两个语句连接在一行中
  • 使用闭合操作符时,单一语句也可以跨多行,例如:在含有小括号、中括号、花括号时可以多行书写
  • 每一个Python脚本文件都可以被当作是一个模块
  • 多重赋值
>>> x = y = z = 1>>> x1>>> y1>>> z1
  • 在Python中,将多个对象赋值给多个变量也是可以的
  • “多元”赋值
>>> x, y, z = 1, 2, "a string">>> x1>>> y2>>> z'a string'
  • 建议总是加上圆括号增加代码可读性
    (x, y, z) = (1, 2, 'a string')
  • 交换变量的值
>>> x, y = 1, 2>>> x1>>> y2>>> x, y = y, x>>> x2>>> y1
  • 合法的Python标识符
    • 第一个字符必须是字母或下划线
    • 剩下的字符可以使字母和数字或下划线
    • 大小写敏感
    • 标识符不能以数字开头:除了下划线,其他的符号都不允许使用
  • Unix起始行
    # /usr/bin/env python
  • 绝大部分的模块创建的目的是为了被别人调用而不是作为独立执行的脚本
  • 那些没有缩进的代码行,在模块被导入时就会执行
  • 如果模块是被导入,__name__的值为模块名字
  • 如果模块被直接执行,__name__的值为__main__
  • logging模块实在Python2.3中新增的

第四章 Python对象

  • 所有Python对象都有三个特性:身份,类型和值
  • 对象身份可以用id()来得到
  • type() 查看Python对象类型
  • 在Python中类型也是对象,type()返回的是对象而不是简单的字符串
  • 除了值,其他两个特性都是只读的
  • 对象的值是否可以更改被称为对象的可改变性(mutability)
  • 对象的一系列固有行为和特性(比如支持哪些运算, 具有那些方法)必须事先定义好。从这个角度看,类型正是保存这类星系的最佳位置。
>>> type(42)<type 'int'>

<type 'int'>是一个类型对象。所有对象的类型都是type
- None不支持任何运算也没有任何内建方法
- None的布尔值总是False
- 下列对象的布尔值是False

  • None
  • False
  • 所有值为零的数
  • 0
  • “”空字符串
  • ()空元组
  • {}空字典
  • 值不是上面列出来的任何值的对象都是True
  • 用户创建的类实例如果定义了nonzero(__nonzero__())length(len()) 且值为0,那么他们的布尔值就是False
  • 代码对象是编译过的Python源代码片段,它是可执行对象。
  • 调用内建函数compile() 可以得到代码对象
  • 代码对象可以被exec命令或eval()函数来执行
  • 代码对象本身不包含任何执行环境信息,它是用户自定义函数的核心,在被执行时动态获得上下文。
  • 当使用Python 扩展的切片语法时,就会创建切片对象。切片对象也可以由内建函数slice()来生成。步进切片允许利用第3个切片元素进行切片,语法为sequence[起始索引: 结束索引: 步进值]
  • xrange()是range()兄弟版本。节省内存,或用于超大数据集场合。
  • a is b等价于 id(a) == id(b)
  • Python仅缓存简单整型
  • repr() 返回一个对象的字符串表示
  • repr()函数得到的字符串通常可以用来重新获得该对象
  • 通过求值运算eval()重新得到该对象
  • cmp()用于比较两个对象,小于返回负整型,等于返回0,大于返回正整型
  • 用户自定义对象,cmp()会调用该类特殊方法__cmp()
  • Python不支持方法或函数重载
  • if isinstance(num, (int, long, float, complex)):
  • 所有的Python容器对象都能够容纳不同类型的对象
0 0