Python Essential Reference 4th – 第4章 – 读书笔记

1、关于除法/和//。
在Python 2中,/还是整除,即只返回整数部分。
而Python 3中,/变为浮点除,不在约为整数。

在Python 2中,想要获取浮点结果,可以将除数或者被除数强转为float:

float(1)/100
0.01

2、一些有用的函数
abs(x):返回x的绝对值
pow(x,y):x ^ y,等价于x ** y
round(x):返回离x最近的10^n值,n可正或者负

3、关于对tuple、list、字符等的乘法:重复字符
如'a' * 5或者 5 * 'a'都行:

>>> 'a' * 10
'aaaaaaaaaa'
>>> 10 * 'a'
'aaaaaaaaaa'

4、
all(s):s中所有元素都是true时,返回true。
any(s):s中有任何元素为true时,返回true。

5、v1, v2..., vn = S,将S容器unpack给v1~vn

#字符串也可以unpack
>>> x,y,z = "abc"
>>> print x,y,z
a b c

但是注意,unpack出的v和S里面的格式必须完全一致

6、s[-1]:倒数第一个元素。
s[i:j],是取所有的k,其中i

7、对于字符串,in和not in可以相当于子字符串查找,但是它不支持正则表达式!

8、s[ i:j ] = r,将s[i,j)都替换为r。

9、del s[i]的时候,出了从list移除之外,还会删除引用计数!

10、sequence之间也可以比,< >= == 和!=。单都是基于全部匹配的。

11、字符串通过字典序比较。

12、不要将Unicode和普通Byte String混合使用。

13、String格式化(s % d),d是tuple,s是格式化的字符串。

14、String格式化时,d也可以不是tuple而是dictionary,如下:

>>> stock = { "name":"GOOG","shares":100,"price":300 }
>>> "%(shares)d of %(name)s at %(price)0.2f" % stock
#格式化后结果
'100 of GOOG at 300.00'

15、更高级的字符串格式化,format(*args,*kwargs),这之中交叉使用了顺序参数和key-value参数。

这些高级字符串格式化方法都使用format,并且用{ }

>>> r = "{0} {1} {2}".format("GOOG",100,500.1)
>>> print r
#输出
GOOG 100 500.1

#混合使用,加入key-value取值
>>> "{name:8} {share:8d} {price:8.2f}".format(name="lhy",share=100,price=500.1)
'lhy           100   500.10'

16、Dictionary上的一些操作:

x = d[k]:取dict d中的key k
d[k] = x:设置dict d中的k对应val为x
del d[k]:删除d中key为k的
k in d:如果d中有以k为键的元素,返回True,否则False
len(d):dict中的长度

17、set和frozenset都支持并| 交& 差- 反^,len,max,min等操作

18、对字符串使用+=,相当于拼接字符串的简写。

19、对点.的使用:为属性访问操作符。
如foo.x = 3
在一行中可连用多个点.,如foo.bar(3,4,5).spam

20、使用functools包的partial函数可以分两次来给函数传入参数:

>>> def func(x,y,z):
...     return x + y + z
...
>>> f = partial(func,1,2)
>>> from functools import partial
>>> f = partial(func,1,2)
>>> f(3)
6
21、Python中类型之间的转换没有C、C++那么麻烦,直接类型名()的函数即可。
>>> a = "123"
>>> b = int(a)
>>> print b
123

22、unichar:将整型转化成对应的unicode的char
chr:将int转化成对应的ascii码的char

#chr转化为ascii码的字符
>>> a = 49
>>> chr(a)
'1'

#unichar转为unicode的字符
>>> a = 21271  #21271是北的unicode编码
>>> print unichr(a)
北

23、在用于分支判断等时,Ture/False和其他类型的转换:所有非零的数、非空字符串、list、tuple、dictionary都会被视为True。而False,0,None空list、tuple等转化为False。

24、x == y,检查两个对象在逻辑上是否相等(如完全相同的字典序、容器中每个元素都相同等)

x is y,则检查两个对象是否指向同一个引用(即指向的内存地址是否相同)。

25、乘幂运算 ** 是右结合。

26、Python中没有C、C++、就Java等之中常见的三元操作符,但是可以用一行写if:
minvalue = a if a 类似的,也可以用于[构造数组]中:

[x if x < 50 else 50 for x in values]

完毕。

Leave a Reply

Your email address will not be published. Required fields are marked *