代码改变世界

一点一滴学Python(1)

2011-11-28 09:57  Python爱好者  阅读(528)  评论(0编辑  收藏  举报

这段开头来自《Python基础教程》:
编写C程序就像是拿着剃刀的人在刚打过蜡的舞场里跳快舞。——Waldi Ravens
C++:难以学习,生就如此。——匿名
Java在很多方面就像是C++。——Michael Feldman
现在请看一种前所未有的表演……——Monty Python的作品《飞行的马戏团》

下面我们开始吧……

请注意:我们研究的是Python 2.x版本。
1、内置对象类型
Python中的变量实际上是对象,可以说Python是完全基于对象的。
Python支持五种主要的内置对象类型Number(数字)、String(字符串)、List(列表)、Dictionary(字典)和Tuple(元组)和一种外部数据类型File(文件)。
Number=12345
Number=12.345
不管是整数还是浮点数,都可以属于数字类型。
String="hello"
String='hello'
字符串可以用双引号,也可以用单引号括起来。
List=[1,'Two',3]
列表,也有译作“序列”可以包含不同类型的元素。
Dictionary={'one':1,'two':2,'three':3}
字典,键与值对应的存储方式,就像是通讯录。
Tuple=(1,'Two',3)
元组是一种不可修改的列表。
Python不必明确变量的类型,Python解释器会检查对象的信息,并创建或修改对象以与新类型相匹配。
2、基本运算符
X or Y    逻辑或(仅在X为false时,对Y求值)
X and Y     逻辑与(仅在X为true时,对Y求值)
not X     逻辑非
lambda args:表达式    匿名函数
<,<=,>,>=,==,<>,!=    比较测试
is,is not    识别测试
in,not in    成员测试
X|Y    按位或
X^Y    按位异或
X&Y    按位与
X<<Y,X>>Y    X向左或向右移Y位
X+Y,X-Y    相加/连接,相减
X*Y,X/Y,X%Y    相乘/重复,相除,求余/格式化
X**Y        乘方
-X,+X,~X    一元否,同一,按位取反
X[i],X[i:j],X.Y,X(...)    索引,分片,限定,函数调用
(...),[...],{...},'...'    Tuple,List,Dictionary,转化为String
+=,-=,*=,/=,%=,**=,<<=,>>=,&=,^=,|=        赋值表达式
3、数字
a、其他进制的表示
十六进制     0xff
八进制    0377
b、长整数
内置基本数据类型限于存储32位长的数。因此可以表示的最大数为2^31-1,另一位表示负数。
Python支持任意长整数——可创建数字长为1000的数,并和其他数字一样使用。需在数字常量尾追加l(小写的L)或L。
long=11111111111111111111111112222222222222222222222333333333333333333333344444444444444444444444555555555555555555555555666666666666666666666666666666667777777777777777777788888888888888888888888999999999999999999999999990000000000000000001111111123456789L
但是很大的浮点数会以科学记数法的方式显示。
c、复数
Python用普通符号支持复数。实部和虚部用加号分开,虚部后加j或J。
a=1+2j
b=2.2+3.3J
d、内置数值函数
abs(x),返回数的绝对值,忽略正负。若x为复数,返回复数模
coerce(x,y),用普通表达式规则将x和y变成常用类型,返回Tuple值。例如coerce(1,2.5)=(1.0,2.5)
divmod(x,y),用x除以y,返回包含商和余数的Tuple值。等价于(a/b,a%b)
pow(x,y[,z]),x的y次幂。如果有参数z,返回值为pow(x,y)%z
round(x[,y]),将浮点数x舍入成小数位为0位。如果有参数y,舍入成小数位为y位。注意用int将浮点数转换成整数时无舍入过程。
4、字符串
'XXX'和"XXX"没有区别。
"""XXXXXX"""一直向字符串中添加文本直到出现三个连续双引号。三个单引号配对也可以。
text="""this is
a test string"""
print text
将原样输出两行。
如果写成
text="""this is \
a test string"""
如果一行放得下的话,就合并成一行。
注意字符串不能与其他对象进行连接。
print 'hello'+5是错误的。
可以用*运算符表示重复字符串。
'hello'*5='hellohellohellohellohello'
len()函数可以返回字符串的长度。
可以用下标[i]访问字符串中的某一个字符。
字符串可以做分片操作
string="this is a test string"
print string[2:10]
print string [:5]
print string [3:]
print string [-1]
print string [:-9]
print string [-9:]
string[start:end]
返回的字符串包含从start起始到end但不包含end的所有字符。
注意:虽然Python允许对字符串进行分片和其他操作,但是必须记住字符串是固定序列——不能改变字符位置。改变字符串内容的唯一方法是新建一个字符串。可以新建字符串然后拼接,可以使用外部模块string提供的函数完成,也可以使用字符串格式化。
字符串格式化:'This is %s,%d'%('a test string',10)
===>This is a test string,10
转换格式列表
%%    百分号标志
%c    字符及其ASCII码
%s    字符串(可用于任何对象)
%d    有符号整数(十进制)
%u    无符号整数(十进制)
%o    无符号整数(八进制)
%x    无符号整数(十六进制)
%X    无符号整数(十六进制大写字符)
%e    浮点数字(科学记数法)
%E    浮点数字(科学记数法)
%f    浮点数字(用小数点符号)
%g    浮点数字(根据值的大小采用%e或%f)
%G    浮点数字(类似%g)
%p    指针(用十六进制打印值的内存地址)
%n    存储输出字符的数量放进参数列表的下一个变量中
调整输出格式
空格    用空格作正数的前缀
+    用加号作正数的前缀
-    区域左对齐
0    用0而非空格进行右对齐
#    用0做非零八进制数前缀,0x做十六进制数前缀
数字    最小域宽度
.数字    指定浮点数精度(小数点后的位数)
注意:运算符%可用于字典型对象。
test={'one':'1','two':2}
print 'the result is %(one)s and %(two)05d' %test
===>the result is 1 and 00002
转义字符
\    追加下一行的内容
\\    反斜线符号
\'    单引号
\"    双引号
\a    Bell
\b    退格(Backspace)
\e    转义
\000    空。Python字符串不以空结束
\n    新起一行或换行
\v    纵向制表符
\t    水平制表符
\r    回车
\f    换页
\0yy    八进制数yy代表的字符
\xyy    十六进制数yy代表的字符
\y    以上未列出的任何字符y以普通格式输出
原始字符串,不想任何转义字符生效
print r'\a\r\n1'
===>\a\r\n1