一、基本数据类型:
- int
- long
- bool
- float
与Java中非常接近.可以近似认为一致.bool的值是True和False,或者0(False),非0就是True.
二、操作符
与Java和C中十分类似, +(加), -(减), (乘), /(除), %(求余), *(指数运算), = (赋值).以及减便运算,如 +=, -=, *=和/= 等.
赋值运算与其他语言一致.
逻辑操作 >< <= >= != ==与其他语言一样.
不一样的有not逻辑非,and逻辑与和or逻辑或.
三、注释与文档
一行当中,从#开始地方就是注释.不会影响下一行.
“”引号放在文件的开头,函数的开头或者一个类的开头,就是文档注释,与Java中的/* … /作用和目的是一样的.
1、折行
如果一行太长了,写不下了,就需要在下一行接着写,这时可以使用\来告诉Python,下一行继续.
Python是一个语句放在一行,行尾可以选择性的加上;但如果想在一行放多个语句,就需要用;来分隔语句:
a = 1; b = 2; c = 3;
虽然这在语法上可行,但不是一个好习惯,绝大多数的编程规范都是要一行写一个语句.
四、数组、集合
1、List和Tuple
这就是Java或C中的数组.它是一个容器,能用来顺序的,以整数索引方式检索, 存储一组对象. List 用 [] 来表示,如 [1, 2, 3] 就是一个List;而 Tuple 用 () 来表示,如 (3, 4, 5) 就是一个 Tuple .
它们的区别在于List是可变的;而Tuple是不可变的.也就是说不可以增,删和改.
索引方式除了与Java一样的以一个整数下标方式外,还可以指定开始,结束和步长,和使用负索引来分割List:
通用语法格式是: list[start: end: step]
list[index] --- 返回第(index+1)个元素,受C语言影响,下标亦是从0开始
list[start:end] --- 返回从start开始,到end-1,也就是list[start], list[start+1].....list[end-1]
list[start:end:step] --- 与上面类似,只不过每隔step取一个
list[:end] ---- 缺省的开端是0
list[start:] ---- 缺省的结尾是len(list),或者-1
负数索引更是方便,它与正数的对应关系为:
正数索引 0 1 2 3
数组元素 [1] [3] [5] [7]
负数索引 -4 -3 -2 -1
实例:
>>> a = [1, 3, 5, 7];
>>> a[0]
1
>>> a[3]
7
>>> a[-1]
7
>>> a[-2]
5
>>> a[0:3]
[1, 3, 5]
>>> a[1:3:2]
[3]
>>> a[0:3:2]
[1, 5]
>>> a[0:-1:2]
[1, 5]
>>>
list增删查改:
//list是一个可变的有序表,所以,可以往list中追加元素到末尾:
list.append('Adam')
//也可以把元素插入到指定的位置,比如索引号为1的位置:
list.insert(1, 'Jack')
//要删除list末尾的元素,用pop()方法:
list.pop()
//要删除指定位置的元素,用pop(i)方法,其中i是索引位置:
list.pop(i)
list里面的元素的数据类型也可以不同
list里面也可以包含list
2、tuple
tuple和list非常类似,但是tuple一旦初始化就不能修改,比如同样是列出同学的名字:
classmates = ('Michael', 'Bob', 'Tracy')
现在,classmates这个tuple不能变了,它也没有append(),insert()这样的方法。其他获取元素的方法和list是一样的,你可以正常地使用classmates[0],classmates[-1],但不能赋值成另外的元素。
tuple里面如果包含有一个list,则这个list里面的元素可以被改变;
3、dict
dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。
例:
>>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
>>> d['Michael']
95
>>> d['Michael'] = 90
>>> d['Michael']
90
- 多次对一个key放入value,后面的值会把前面的值冲掉
- 如果key不存在,dict就会报错
要避免key不存在的错误,有两种办法,一是通过in判断key是否存在:
>>> 'Thomas' in d
False
二是通过dict提供的get方法,如果key不存在,可以返回None,或者自己指定的value:
>>> d.get('Thomas')
>>> d.get('Thomas', -1)
-1
- 要删除一个key,用pop(key)方法,对应的value也会从dict中删除
4、set
set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。
要创建一个set,需要提供一个list作为输入集合:
>>> s = set([1, 2, 3])
>>> s
{1, 2, 3}
重复元素在set中自动被过滤:
>>> s = set([1, 1, 2, 2, 3, 3])
>>> s
{1, 2, 3}
通过add(key)方法可以添加元素到set中,可以重复添加,但不会有效果
>>> s.add(4)
>>> s
{1, 2, 3, 4}
>>> s.add(4)
>>> s
{1, 2, 3, 4}
通过remove(key)方法可以删除元素:
>>> s.remove(4)
>>> s
{1, 2, 3}
set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作:
>>> s1 = set([1, 2, 3])
>>> s2 = set([2, 3, 4])
>>> s1 & s2
{2, 3}
>>> s1 | s2
{1, 2, 3, 4}
列表生成式(强大):
举个例子,要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]可以用list(range(1, 11)):
>>> list(range(1, 11))
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
但如果要生成[1x1, 2x2, 3x3, …, 10x10]怎么做?方法一是循环:
>>> L = []
>>> for x in range(1, 11):
... L.append(x * x)
...
>>> L
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
但是循环太繁琐,而列表生成式则可以用一行语句代替循环生成上面的list:
>>> [x * x for x in range(1, 11)]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
写列表生成式时,把要生成的元素x * x放到前面,后面跟for循环,就可以把list创建出来,十分有用,多写几次,很快就可以熟悉这种语法。
for循环后面还可以加上if判断,这样我们就可以筛选出仅偶数的平方:
>>> [x * x for x in range(1, 11) if x % 2 == 0]
[4, 16, 36, 64, 100]
五、字符串String
字符串就是一个字符的数组,List的操作都可以对String直接使用.
1、字串格式化符%
这是一个类似C语言printf和Java中的String.format()的操作符,它能格式化字串,整数,浮点等类型:语句是:
formats % (var1, var2,….)
它返回的是一个String.
>>> "Int %d, Float %d, String '%s'" % (5, 2.3, 'hello')
"Int 5, Float 2, String 'hello'"
>>>
六、分支语句
格式为:
if expression:
blocks;
elif expression2:
blocks;
else:
blocks;
七、循环
1、for循环:
格式:
for x in list:
break;
例:
names = ['Michael', 'Bob', 'Tracy']
for name in names:
print(name)
//或者
for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]:
print(x)
2、while循环
格式:
while expression:
blocks
八、函数
ython内置了很多有用的函数,我们可以直接调用。
要调用一个函数,需要知道函数的名称和参数,比如求绝对值的函数abs,只有一个参数。可以直接从Python的官方网站查看文档:
http://docs.python.org/3/library/functions.html#abs
也可以在交互式命令行通过help(abs)查看abs函数的帮助信息。
1、定义函数
在Python中,定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回。
def function_name(args):
function_body;
调用函数的方式function_name(formal_args):
>>> def power(x):
... return x*x;
...
>>> power(4)
16
>>>
- Python中函数也是一个对象,可以赋值,可以拷贝,可以像普通变量那样使用.
函数名其实就是指向函数的变量!对于abs()这个函数,完全可以把函数名abs看成变量,它指向一个可以计算绝对值的函数!
另外就是匿名函数,或者叫做lambda函数,它没有名字,只有参数和表达式:
lambda args: expression
>>> d = lambda x: x*x;
>>> d(2)
4
如果想定义一个什么事也不做的空函数,可以用pass语句:
def nop():
pass
九、定义类
用class关键字定义类:
class ClassName(object):
...
在类中:__init__()可以被当成构造器,不过不像其他语言中的构造器,++它并不创建实例——它仅仅是你的对象创建后执行的第一个方法++。它的目的是执行一些该对象的必要的初始化工作。
ps:不定期更新。