_
在解释器中有特别的含义,表示最后一个表达式的值。%
结合使用,可实现字符串替换功能,这一点和 C 语言中的printf()函数非常相似。和大部分脚本及 Unix-shell 语言一样,Python 也使用 # 符号标示注释,从 # 开始,直
到一行结束的内容都是注释。
有一种叫做文档字符串的特别注释。你可以在模块、类或者函数的起始添加一个字符串,
起到在线文档的功能。与普通注释不同,文档字符串可以在运行时访问,也可以用来自动生成文档。
+ - * / // % **
and or not
--n
解释为-(-n)
从而得到 n , 同样 ++n
的结果也是 n。Python 支持五种基本数字类型:
( [ ] )
和切 片运算符( [ : ] )
可以得到子字符串。可以将列表和元组当成普通的“数组”,它能保存任意数量任意类型的 Python 对象。和数 组一样,通过从 0 开始的数字索引访问元素,但是列表和元组可以存储不同类型的对象。
列表和元组有几处重要的区别:
([ ])
包裹,元素的个数及元素的值可以改变。(( ))
包裹,不可以更改(尽管他们的内容可以)。元组可以看成是只读的列表。( [ ] 和 [ : ] )
可以得到子集。字典是 Python 中的映射数据类型,工作原理类似 Perl 中的关联数组或者哈希表,由键- 值(key-value)对构成。几乎所有类型的 Python 对象都可以用作键,不过一般还是以数字或者字符串最为常用。
代码块通过缩进对齐表达代码逻辑而不是使用大括号,因为没有了额外的字符,程序的可读性更高。而且缩进完全能够清楚地表达一个语句属于哪个代码块。当然,代码块也可以只有一个语句组成。
if expression1:
if_suite
elif expression2:
elif_suite
else:
else_suite
while expression:
 while_suite
Python 中的 for 循环与传统的 for 循环(计数器循环)不太一样, 它更象 shell 脚本里 的 foreach 迭代。Python 中的 for 接受可迭代对象(例如序列或迭代器)作为其参数,每次迭代其中一个元素。
因为我们要使用的数值范围可能会经常变化,Python提供了一个 range()内建函数来生成这种列表。
range()函数经常和 len()函数一起用于字符串索引。
这些循环有一个约束, 你要么循环索引, 要么循环元素。这导致了 enumerate() 函数的推出(Python2.3 新增)。例如:
for i, ch in enumerate(foo):
... print ch, '(%d)' % i
...
a (0)
b (1) c (2)
>>> squared = [x ** 2 for x in range(4)] >>> for i in squared:
... print i
0
1
4
9
列表解析甚至能做更复杂的事情:
>>> sqdEvens = [x ** 2 for x in range(8) if not x % 2]
>>>
>>> for i in sqdEvens:
... print i
0
4
16
36
handle = open(file_name, access_mode = 'r')
file_name
变量包含我们希望打开的文件的字符串名字,access_mode
中 'r'
表示读取, 'w'
表示写入, 'a'
表示添加。其它可能用到的标声还有 '+'
表示读写, 'b'
表示二进制访问. 如果未提供 access_mode
, 默认值为 'r'
。如果 open()
成功, 一个文件对象句柄会被返回。所有后续的文件操作都必须通过此文件句柄进行。当一个文件对象返回之后, 我们就可以访问它的一些方法, 比如 readlines()
和 close()
.文件对象的方法属性也必须通过句点属性标识法访问。
print 语句中使用逗号来抑制自动生成的换行符号。
可以给代码添加错误检测及异常处理, 只要将它们封装在 try-except 语句当中。 try之后的代码组, 就是你打算管理的代码。 except 之后的代码组, 则是你处理错误的代码。
通过使用 raise 语句故意引发一个异常。
类似其它的语言, Python 中的函数使用小括号( () )
调用。函数在调用之前必须先定义。 如果函数中没有 return 语句, 就会自动返回 None 对象。
Python 是通过引用调用的。 这意味着函数内对参数的改变会影响到原始对象。不过事实上只有可变对象会受此影响, 对不可变对象来说, 它的行为类似按值调用。
def function_name([arguments]):
"optional documentation string"
function_suite
函数的参数可以有一个默认值, 如果提供有默认值,在函数定义中, 参数以赋值语句的形式提供。事实上这仅仅是提供默认参数的语法,它表示函数调用时如果没有提供这个参数,它就取这个值做为默认值。
类是面向对象编程的核心, 它扮演相关数据及逻辑的容器角色。它们提供了创建“真实”对象(也就是实例)的蓝图。
class ClassName(base_class[es]):
"optional documentation string"
static_member_declarations
method_declarations
使用 class 关键字定义类。可以提供一个可选的父类或者说基类; 如果没有合适的基类,
那就使用 object 作为基类。class 行之后是可选的文档字符串, 静态成员定义, 及方法定义。
模块是一种组织形式, 它将彼此有关系的 Python 代码组织到一个个独立文件当中。模块可以包含可执行代码, 函数和类或者这些东西的组合。
import module_name 如何访问一个模块函数或访问一个模块变量
一旦导入完成, 一个模块的属性(函数和变量)可以通过熟悉的 .句点属性标识法访问。
函数 | 描述 |
---|---|
dir([obj]) |
显示对象的属性,如果没有提供参数, 则显示全局变量的名字 |
help([obj]) |
以一种整齐美观的形式显示对象的文档字符串, 如果没有提供任何参数, 则会进入交互式帮助。 |
int(obj) |
将一个对象转换为整数 |
len(obj) |
返回对象的长度 |
open(fn, mode) |
以 mode(‘r’ = 读, ‘w’= 写)方式打开一个文件名为 fn 的文件 |
range([[start,]stop[,step]) |
返回一个整数列表。起始值为 start, 结束值为 stop - 1; start 默认值为 0, step默认值为1。 |
raw_input(str) |
等待用户输入一个字符串, 可以提供一个可选的参数 str 用作示提信息。 |
str(obj) |
将一个对象转换为字符串 |
type(obj) |
返回对象的类型(返回值本身是一个 type 对象!) |
Python 注释语句从 # 字符开始,注释可以在一行 的任何地方开始,解释器会忽略掉该行 # 之后的所有内容。
Python 语句,一般使用换行分隔,也就是说一行一个语句。一行过长的语句可以使用反斜 杠( \ ) 分解成几行。
有两种例外情况一个语句不使用反斜线也可以跨行。在使用闭合操作符时,单一语句可以跨多行,例如:在含有小括号、中括号、花括号时可以多行书写。另外就是三引号包括下的字
符串也可以跨行书写。
缩进相同的一组语句构成一个代码块,我们称之代码组。
另一种将多个变量同时赋值的方法我们称为多元赋值(multuple)。
x, y, z = 1, 2, 'a string'
标识符是电脑语言中允许作为名字的有效字符串集合。
Python 还有称为 built-in 标识符集合,虽然它们不是保留字,但是不推荐使用这些特别 的名字。
_xxx
不用'from module import *'
导入__xxx__
系统定义名字__xxx
类中的私有变量名一个内部跟踪变量,称为一个引用计数器。至于每个对象各有多少个引用, 简称引用计数。当 对象被创建时, 就创建了一个引用计数, 当这个对象不再需要时, 也就是说, 这个对象的引用计数变为 0 时, 它被垃圾回收。
备注:引用计数还有一个致命的缺陷,当程中出现序循环引用时,引用计数算法无法检测出来,被循环引用的内存对象就成了无法回收的内存。从而引起内存泄露。
当对象的引用被销毁时,引用计数会减小。最明显的例子就是当引用离开其作用范围时, 这种情况最经常出现在函数运行结束时,所有局部变量都被自动销毁,对象的引用计数也就随之减少。
del y # or del x
x = 123
myList.remove(x)
del myList
不再被使用的内存会被一种称为垃圾收集的机制释放。一个循环引用发生在当你有至少两个对象互相引用时, 也就是说所有的引用都消失时, 这些引用仍然存在, 这说明只靠引用计数是不够的。Python的垃圾收集器实际上是一个引用计数器和一个循环垃圾收集器。 当一个对象的引用计数变为 0,解释器会暂停,释放掉这个对象 和仅有这个对象可访问(可到达)的其它对象。作为引用计数的补充, 垃圾收集器也会留心被 分配的总量很大(及未通过引用计数销毁的那些)的对象。
参考资料:
Python核心编程
备注:
转载请注明出处:http://blog.csdn.net/wsyw126/article/details/53573644
作者:WSYW126