heyiaiqing 2016-08-17
最近开始学Python,这是一个很强大和便捷的编程语言,日后进行科学计算和科研的时候必然成为主要的编程语言。
本来买了一本Python基础教程(第2版),然而教学顺序不太喜欢,因为一开始并没有讲清楚语法,不能学了立马用到实验中。并且,这本书针对的是没有编程基础的人,讲的比较浅。
在这里把python中特有的,以及和C不同的地方记下来。
在python中,有4种数据类型——整数(int)、长整数(long)、浮点数(float)和复数(complex)。
(-5+4j)和(2.3-4.6j)是复数的例子。
这里居然有复数,果然比C要方便计算,在C中通常需要自己定义复数类型。
上面的4中数据类型可以互相转换,还可以转换为字符串类型(str)如:
>>> a=12343434 >>> long(a) 12343434L >>> str(a) '12343434' >>> float(a) 12343434.0 complex(a) (12343434+0j)
可以用单引号和双引号来表示中间为字符串,两者并没有什么差别。当字符串里有引号或者多行时,可以用三引号括起来(”’或者”“”)表示。
在C++中,使用单引号表示char,用双引号表示String。
在字符中,若要表示斜杠\,需要使用\,其他特殊符号也是,例如用\’ 表示引号(若没有使用三引号)。程序中可以使用 \ 表示两行是连在一起的,例如
s = 'This is a string. \ This continues the string.' print s
输出:
This is a string. This continues the string.
如果你想要指示某些不需要如转义符那样的特别处理的字符串,那么你需要指定一个自然字符串。自然字符串通过给字符串加上前缀r或R来指定。例如r”Newlines are indicated by \n”。
Unicode是书写国际文本的标准方法。如果你想要用中文或者其他非英文文本,那么你需要有一个支持Unicode的编辑器。类似地,Python允许你处理Unicode文本——你只需要在字符串前加上前缀u或U。例如,u”This is a Unicode string.”。
记住,在你处理文本文件的时候使用Unicode字符串,特别是当你知道这个文件含有用非英语的语言写的文本。
这意味着一旦你创造了一个字符串,你就不能再改变它了。虽然这看起来像是一件坏事,但实际上它不是。若要对一个字符进行修改,其实也可以用原来的名字进行赋值,例如:
>>> s='abc' >>> s=s[:2] >>> print s ab
标识符的第一个字符必须是字母表中的字母(大写或小写)或者一个下划线(‘ _ ’)。
标识符名称的其他部分可以由字母(大写或小写)、下划线(‘ _ ’)或数字(0-9)组成。
无效 标识符名称的例子有2things、this is spaced out和my-name。
使用变量时只需要给它们赋一个值。不需要声明或定义数据类型。
空白在Python中是重要的。事实上行首的空白是重要的。它称为缩进。在逻辑行首的空白(空格和制表符)用来决定逻辑行的缩进层次,从而用来决定语句的分组。
这意味着同一层次的语句必须有相同的缩进。每一组这样的语句称为一个块。
不要混用空格和tab,要是用tab就全部用tab,若用4个空格或2个空格则一直用空格。一个tab和4个空格是不一样的,即使看起来位置一样!
我把值得注意的,和C不一样的列出来:
运算符 | 名称 | 说明 | 例子 |
---|---|---|---|
** | 幂 | 返回x的y次幂 | 3 ** 4得到81(即3 * 3 * 3 * 3) |
// | 取整除 | 返回商的整数部分 | 4 // 3.0得到1.0 |
^ | 按位异或 | 数的按位异或 | 5 ^ 3得到6 |
~ | 按位翻转 | x的按位翻转是-(x+1) | ~5得到6。 |
<= | 小于等于 | 返回x是否小于等于y | x = 3; y = 6; x <= y返回True。 |
>= | 大于等于 | 返回x是否大于等于y | x = 4; y = 3; x >= y返回True。 |
not | 布尔“非” | 如果x为True,返回False。如果x为False,它返回True。 | x = True; not y返回False。 |
and | 布尔“与” | 如果x为False,x and y返回False,否则它返回y的计算值。 | x = False; y = True; x and y,由于x是False,返回False。在这里,Python不会计算y,因为它知道这个表达式的值肯定是False(因为x是False)。这个现象称为短路计算。 |
or | 布尔“或” | 如果x是True,它返回True,否则它返回y的计算值。 | x = True; y = False; x or y返回True。短路计算在这里也适用。 |
下面这个表给出Python的运算符优先级,从最低的优先级(最松散地结合)到最高的优先级(最紧密地结合)。这意味着在一个表达式中,Python会首先计算表中较下面的运算符,然后在计算列在表上部的运算符
运算符 | 描述 |
---|---|
lambda | Lambda表达式 |
or | 布尔“或” |
and | 布尔“与” |
not x | 布尔“非” |
in,not in | 成员测试 |
is,is not | 同一性测试 |
<,<=,>,>=,!=,== | 比较 |
| | 按位或 |
^ | 按位异或 |
& | 按位与 |
<<,>> | 移位 |
+,- | 加法与减法 |
*,/,% | 乘法、除法与取余 |
+x,-x | 正负号 |
~x | 按位翻转 |
** | 指数 |
x.attribute | 属性参考 |
x[index] | 下标 |
x[index:index] | 寻址段 |
f(arguments…) | 函数调用 |
(experession,…) | 绑定或元组显示 |
[expression,…] | 列表显示 |
{key:datum,…} | 字典显示 |
‘expression,…’ | 字符串转换 |
运算符通常由左向右结合,即具有相同优先级的运算符按照从左向右的顺序计算。如果我们想要改变它们的计算顺序,得使用圆括号。