第二章 快速入门
-
print语句中使用字符串格式操作符,实现字符替换功能。
print "%s is %d" %("one",1)
%s、%d、%f分别用字符串、整型、浮点类型数据来替换。
-
print语句重定向
logfile = open('/tmp/mylog.txt','a') print >> logfile,'something....' logfile.close()
符号>>是用来重定向的,上面的代码将输出添加到日志文件mylog.txt中。
-
raw_input内建函数,读取键盘输入,返回值类型是字符串。
s = raw_input('some tips:')
-
操作符单斜杆 / 做传统的除法,双斜杠 //用作浮点除法,四舍五入。
- python中的变量名命名规则与其他大多数高级语言一样,都是受到C语言影响。(事实上python本身就是C语言写成的)
- python是动态型语言,不需要预先声明变量的类型。变量的类型在赋值的那一刻确定。
- python是动态型语言,不需要预先声明变量的类型。变量的类型在赋值的那一刻确定。
- python的长整型所能表达的范围远远超过C语言的长整型,仅受限于计算机的虚拟内存总数,不用担心溢出。
- something interesting:1.1无法用二进制精确表示,2.2、3.3、、、很多数字都无法用二进制精确表示。但python中提供了十进制浮点型decimal模块,可以精确表示。
- 元组:可看成是只读的列表,不可修改。
-
字典
aDict = {"one":1,"two":2} aDict.keys() #输出['one','two'] for key in aDict: print key,aDict[key]
-
python中的for循环与传统的for循环(计数器循环)不太一样,它更像shell里的foreach迭代。python中的for接受可迭代对象作为其参数,每次迭代其中的一个元素。在for语句中,经常还会用到range、len函数。
for i in range(len(A)): print A[i]
-
列表解析,这个非常实用
spdEvens = [x**2 for x in range(8) if not x%2]
-
文件和内建函数open()、file()
handle = open(file_name,access_mode = 'rb')
r表示可读模式,b表示二进制访问,还有w表示可写模式(覆盖掉原来的),a表示添加模式(不覆盖),+表示读写模式。
open()返回文件的句柄handle,后续的操作如readlines()、close()可通过这个句柄进行:如handle.close()….
-
try-except
try之后的代码组,即你打算管理的代码。except之后的代码组,则是处理错误的代码。
-
函数在调用前必须先定义(被调用函数要在调用处上方)。
- 如果函数没有return语句,会自动返回None对象。
- 所有名字开始和结束都有两个下划线的方法都是特殊方法。如name、init
- 模块,可以包含执行代码、函数、类。.py文件即一个模块。
- 常用的函数:int()、str()、range()、len()、raw_input()、ttype()、dir([obj])、help([obj])
第三章 Python基础
1、语句和语法
-
注释
Python中注释用符号“#”,也可以用三引号:”’ 注释内容 ”’
-
继续
过长的语句,可以用反斜杠,将一行分解为几行:
if a==1 and \ b==0 :
-
Python缩进风格
Pyhton使用缩进来分隔代码组,缩进可以为空格、制表符Tab(另:推荐使用4个空格来缩进,并且尽量不要用tab键,因为不同平台tab键的代表的空白宽度不一样。)
-
多个语句写在同一行上
把多个语句写在同一行上是不推荐的,因为可读性会大大降低。如果非要这么做,也是允许的。
import sys; x = 'foo'; sys.stdout.write(x)
-
模块
通过import导入
2、变量赋值
-
多元赋值(multuple)
采用这种方式赋值,等号两边的对象其实都是元组:
x,y,z = 1,2,3
本质上为:
( x,y,z ) = (1,2,3)
这种多元赋值方式可以实现无需中间变量交换两个变量的值:
x,y = 1,2 x,y = y,x
执行代码,x和y的值将互换。
3、标志符
-
专用下划线标志符
_XXX,不用from module import *导入
_ XXX _,系统定义名字
_XXX,类中的私有变量名
下划线对解析器具有特许的意义,而且是内建标志符使用的符号,所以建议避免用下划线作为变量名的开始。
4、Python基本风格
注释、缩进、标志符风格以上述及,此外Python还提供了一个机制“文档”:可以通过_ doc _变量,动态获得文档字符串:
obj.__doc__
5、内存管理
-
变量定义
大多数编译型语言,变量在使用前必须先声明,而Python作为解析型语言,无须显示声明变量,变量在第一次被赋值时自动声明。
-
动态类型
Python不但无须事先声明变量,而且也无需类型声明。对象的类型和内存占用都是在运行时确定的。
-
内存分配
Python承担了内存管理的复杂任务,程序员无需关心内存管理。
-
引用计数
Python使用引用计数这个技术来追踪内存中的对象。
增加引用计数:
当对象被创建时,就生成了一个引用,引用计数被设置为1。当同一个对象又被赋值给其他变量时,或作为参数传递给函数、方法、类实例时,或被赋值为一个窗口对象的成员时,该对象一个新的引用就被创建,引用计数自动加1。
减少引用计数:
当对象的引用被销毁时,引用计数会减少。比如:
(1)函数运行结束,局部变量被自动销毁,对象的引用计数也会随之减少。
(2)变量被重新赋值(值改变),引用计数减1。
(3)del obj,obj引用计数减1。 -
垃圾收集
Python的垃圾收集器实际上是一个引用计数器和一个循环垃圾收集器。
参考: