通过edx自学pyhon总结:
运算顺序: 乘方 然后乘除,最后再从左到右加减法。括号优先
乘方表示法 2的3次方 2**3str[::-1] 逆序字符串(负1表示逆序)
str[1:9:2] 取字符串str4[1:9]隔一位顺序排序(最后一个参数是正的所以顺序)
切片属性,如果第一个索引是0,还可以省略:str[:6]等价于str[0:6]
print 45
print 'sads' 均是有效代码,不用加括号也可以的
Python通过缩进判断代码段(没有大括号区分,所以缩进的格式要严格遵循)
强制转换类型的用法
a=4 #int
str(a)
同一条语句换行用\
python可以直接遍历字符串for char in myStr:#char非保留字
range(5,0,-1) 从5到1,由于需要逆序所以加个参数-1
下方控制台可直接调试程序
由于Python没有括号区分code piece ,所以一定要注意:的存在,不要漏掉,否则会翻译(interprete)错误,for语句,if、else语句后都有:
当print,raw_input()函数中的字符串中有‘这样的字符要在前面加上转义字符\ raw_input('a\'c') 输出结果为: a'c
通过在两行print语句见添加 , 可以使打印的语句显示在同一行 print 'adj;l', 这样的print字符会出现在同一行
函数体中定义的变量值是始终不变的,当函数实例化的时候实际上是另外开辟了一个空间(environment),新赋值的函数都在另一个空间
执行完函数会退回到主程序空间。两个空间中的变量可以同名the body of procedure is just text
Python有两种引入包的方法 1、import circle #必须有对应的circle.py文件,且两者的environment是不同的,意味着可以有同名变量,用
circle.PI(点命名法)和PI区分
2、from circle import * #这是将两个文件的environment合并到一起,主文件中可直接更改引入文件的值
tuples用()表示空的,单个元素需加逗号(a,) 另连接的格式为:divisors = divisors + (i,)#divisors为tuples
禁止改变正在迭代的list,当我们改变正在迭代(iterative)的list,如删除元素时,list在迭代时Python记录的counter不更新,还按以前的
顺序设置参数,这样毁导致迭代不充分(如第一次删除第一个元素) 可复制出一个中间量 StartList = L1[:] ,若是直接写StartList = L1则
表示两者等同即StartList is L1 是True
HOP = higher order procedures
dict字典方式存贮的信息是没有顺序的,用keys()方法显示key时不一定是顺序
可用tuple作为dict的key,因为tuple可以更改,list不可改,dict={(1,2):‘twelve’,(1,4):‘one’}
L1=[1, 28,36]
L2=[2,57,9]
map(min,L1,L2)#获得L1和L2相同位置的数据经过min筛选后的结果
[1,28,9]
使用某些class的method的时候要注意是否有加括号和该method是否有返回值,不加括号在编译器中时合法的call,虽然不使用,返回值不赋值给自身可能无效
具体参照Python文档,不是tutorial temp.reverse() 没有括号不报错但是没效,不会逆序
list等类型直接复制tmp=x,只是别名复制而已(类class也是一样,别名aliasing),改变的是同一片environment区域,
另外开辟一个environment的方法是 tmp=x[:] #x,tmp都是list类型
debugging的时候不要看specification文档,那样会觉得程序没问题,要看程序出错的原因,而不是为什么程序不正确的原因。(使用一些常用的问题可能先判断)
assert语句使用范围很窄,尤其是testing的时候不能用,因为它表示了编程的specification,而这些可能是错误的,程序要考虑到用户的错误输入,assert语句
会使程序halt,所以可以构建defensive program,方便差错,但效率低
3/2=1 -3/2=-2 遵循向下取整
类中名称前后有下划线__的method可以用函数式调用,其他只能用.调用(point notation)。例如类中的__init__,__len__