#python复习笔记 <font color=blue>##基础</font> <pre> 1.下划线(_)在解释器中有特别的含义,表示最后一个表达式的值。
<pre> Microsoft Windows [版本 6.1.7601] 版权所有 (c) 2009 Microsoft Corporation。保留所有权利。
C:\Users\Administrator>python Python 2.7.10 (default, May 23 2015, 09:44:00) [MSC v.1500 64 bit (AMD64)] on n32 Type "help", "copyright", "credits" or "license" for more information.
print "hello world" hello world Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name '' is not defined mystring = "hello world" print mystring hello world mystring 'hello world'<font color=red> _ 'hello world'</font> </pre>
2.print语句也支持将输出重定向到文件。符号>>用来定向输出 <pre>
import sys print >> sys.stderr, 'Fatal error: invalid input!' Fatal error: invalid input! print >> sys.stderr,'Fatal error: invalid input!' Fatal error: invalid input!<font color=red> logfile = open('D:/python_code/mylog.txt','a') print >> logfile,'Fatal error: invalid input!' logfile.close()</font> </pre> 3.enumerate()函数 <pre> In [4]: foo = 'abc'
In [5]: for i in range(len(foo)): ...: print foo[i],'(%d)'%i ...: a (0) b (1) c (2)
In [6]: for i,ch in enumerate(foo): ...: print ch,'(%d)'%i ...: a (0) b (1) c (2)
In [7]: </pre> 4.列表解析 [运算式 参数列表 判断条件] <pre> In [7]: squared = [x**2 for x in range(4)]
In [8]: squared Out[8]: [0, 1, 4, 9]
In [9]: sqdEvens = [x**2 for x in range(8) if not x%2]
In [10]: sqdEvens Out[10]: [0, 4, 16, 36]
In [11]: sum = [x+y for x in range(3) for y in range(3) if x!=y]
In [12]: sum Out[12]: [1, 2, 1, 3, 2, 3]
In [13]: sum2 = [x*y for x in range(3) for y in range(3) if x!=y]
In [14]: sum2 Out[14]: [0, 0, 0, 2, 0, 2]
</pre> 5.实用的内建函数 <pre> dir([obj]) 显示对象的属性,如果没有提供参数,则显示全局变量的名字。 help([obj]) 以一种整齐美观的形式,显示对象的文档字符串,如果没有 提供任何参数,则会进入交互式帮助。 int(obj) 将一个对象转换为整型 len(obj) 返回对象的长度 open(fn,mode) 以mode('r'=读,'w'=写,'a'=追加)的方式打开一个文件名 为fn的文件。 range([[start,] stop[,step]])返回一个整型列表。起始值为start, 结束值为stop-1,start默认值为0,step默认值为1 raw_input(str)等待用户输入一个字符串,可以提供一个可选的参数 str用作提示信息。 str(obj) 将一个对象转换为字符串 type(obj) 返回对象的类型(返回值本身是一个type对象) </pre> </pre> ##语句和语法 <pre> 1.井号(#)表示之后的字符为python注释 2.换行(\n)是标准的行分隔符(通常一个语句一行) 3.反斜线()继续上一行 <pre> 有两种例外情况一个语句不使用反斜线也可以跨行。在使用闭合操作符时, 单一语句可以跨多行。 例如:在含有小括号、中括号、花括号时可以多行书写。 另外就是三引号包括下的字符串也可以跨行书写。 </pre> 4.分号(;)将两个语句连接在一行中 5.冒号(:)将代码块的头和体分开 6.语句(代码块)用缩进块的方式体现 7.不同的缩进深度分隔不同的代码块 8.python文件以模块的形式组织。 </pre> ##变量和内存管理 <pre> <pre> 1.变量无需事先声明 2.变量无需指定类型 3.程序员不用关心内存管理 4.变量名会被"回收" 5.del语句能够直接释放资源 </pre> <pre> 变量定义,变量生命可以在代码块的中间,不过仍然必须在变量 被使用前声明变量的名字和类型。 在Python中,无需此类显式变量声明语句,变量在第一次被赋值时自动声明。 和其他大多数语言一样,变量只有被创建和赋值后才能被使用。 </pre> del语句 <pre> del语句会删除对象的一个引用,它的语法如下: del obj1[,obj2[,...objN]] del会删除当前对象的引用,将引用计数器减1,如果引用计数器为0 则会导致该对象从此无法访问或无法抵达,从此刻起,该对象就成为垃圾回收机制的回收对象。 注意任何追踪或调试程序会给一个对象增加一个额外的引用,这会推迟 该对象被回收的时间。 </pre> 垃圾收集 <pre> 不再使用的内存会被一种称为垃圾收集的机制释放。虽然解释器跟踪对象 的引用计数,但垃圾收集器负责释放内存。垃圾收集器是一块独立代码, 它用来寻找引用计数为0的对象。它也负责检查那些虽然引用计数大于0 但也应该被销毁的对象。特定情形会导致循环引用。 一个循环引用发生在当你有至少两个对象互相引用时,也就是说所有 的引用都消失时,这些引用仍然存在,这说明只靠引用计数是不够的。 python的垃圾收集器实际上是一个引用计数器和一个循环垃圾收集器。 当一个对象的引用计数变为0,解释器会暂停,释放掉这个对象和仅有这个对象可访问(可到达)的其他对象。作为引用计数的补充,垃圾收集器也会 留心被分配的总量很大的(及未通过引用计数销毁的那些)对象。 在这种情况下,解释器会暂停下来,试图清理所有未引用的循环。 </pre> </pre> ##序列 <pre> 切片 <pre> In [52]: s = 'abcde'
In [53]: i = -1
In [54]: for i in range(-1,-len(s),-1): ...: print s[:i] ...: abcd abc ab a
In [55]: s = 'abcde'
In [56]: for i in [None] + range(-1,-len(s),-1): ...: print s[:i] ...: abcde abcd abc ab a
使用None作为索引值,这样一来就可以满足你的需要,比如说,在你 想用一个变量作为索引来从第一个到遍历最后一个元素的时候。
TypeError Traceback (most recent call last) <ipython-input-57-e791611ff738> in <module>() ----> 1 for i in [None].extend(range(-1,-len(s),-1)): 2 print s[:i] 3
TypeError: 'NoneType' object is not iterable 可变对象的内建函数extend()根本没有返回值,所以这个方法是行不通的。 这个错误发生的原因是[None].extend(...)函数返回None,None既不是 序列类型也不是可迭代对象。 在这种情况下使用上面提到的列表连接操作来实现是唯一不需要添加额外 代码的方法。 </pre> </pre> ##字符串内建函数 <pre>
In [79]: string1 = "akdsg;lkajsd"
In [80]: import string
In [81]: string.capitalize(string1) Out[81]: 'Akdsg;lkajsd'
In [82]: string.capitalize(string1) Out[82]: 'Akdsg;lkajsd'
In [83]:
In [83]: quest = 'what is your favorite color?'
In [84]: quest.capitalize() Out[84]: 'What is your favorite color?'
In [85]: quest.center(40) Out[85]: ' what is your favorite color? '
In [86]: quest.count('or') Out[86]: 2
In [87]: quest.endswith('blue') Out[87]: False
In [88]: quest.endswith('color?') Out[88]: True
In [89]: quest.find('or',30) Out[89]: -1
In [90]: quest.find('or',22) Out[90]: 25
In [91]: quest.index('or',10) Out[91]: 16
In [92]: ':'.join(quest.split()) Out[92]: 'what:is:your:favorite:color?'
In [93]: quest.replace('favorite color','quest') Out[93]: 'what is your quest?'
In [94]: quest.upper() Out[94]: 'WHAT IS YOUR FAVORITE COLOR?'
In [95]: </pre> </pre> ##集合的所有方法 <pre> 方法,所有的集合方法 <pre>