数字

  • 处理数字对象的工具:
    表达式操作符 +,*,»,**,%等
    内置数学函数 pow,abs
    公用模块 random,math等
  • 在列表后添加元素前,要首先初始花列表为一个空列表.
  • Python在计算的过程中显示计算的位数:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
>>> number=3/7.0
>>> number
0.42857142857142855
>>> print number
0.428571428571
>>> '%e' % number
'4.285714e-01'
>>> '%2.2f' % number
'0.43'
>>> '%4.2f' % number
'0.43'
>>> repr(number)
'0.42857142857142855'
>>> str(number)
'0.428571428571'
  • “//Floor"除法能偶用在省略结果中的小数部分,知道剩下最小的能整除部分而不管他们的类型.
  • 位操作
1
2
3
4
5
6
7
>>> a=1	#0001
>>> a << 2	#左移两位 0100
4
>>> a | 2	#二进制或 0011 (0001|0010)
3
>>> a & 1	#二进制与 0001 (0001&0001)
1
  • 复数运算
1
2
3
4
5
6
>>> 1j*1j
(-1+0j)
>>> 2+1j*4
(2+4j)
>>> 3+33j*4
(3+132j)
  • 集合:创建一个集合对象,将一个序列或其他的迭代对象传递给内置set函数.

    1. 集合并不包含位置顺序,序列却包含.
    2. 集合通过表达式操作符支持一般的数学集合运算.不能在一般序列上应用这些操作
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
>>> x=set('abcde')
>>> y=set('jklmn')
>>> x
set(['a', 'c', 'b', 'e', 'd'])
>>> y
set(['k', 'j', 'm', 'l', 'n'])
>>> 'a' in x
True
>>> x-y
set(['a', 'c', 'b', 'e', 'd'])
>>> x+y
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'set' and 'set'
>>> x | y
set(['a', 'c', 'b', 'e', 'd', 'k', 'j', 'm', 'l', 'n'])
>>> x&y
set([])
>>> 
  • 内置函数oct(I)hex()会将整数以八进制和十六进制数字符串的形式返回.%字符串表达式也会实现这样的目标.
  • int(S,base?)函数能够用来让一个八进制和十六进制数的字符串转换为正常的整数(传入以八和十六进制的数字).eval(S)函数也能够用作这个目的.但是运行起来开销会更大也会有安全问题.

动态类型

  • 在Python中,类型是在运行过程中自动决定的,而不是通过代码声明,没有必要事先声明变量.
  • 类型属于对象,而不是变量.
  • 在Python中,类型属于对象,而不是变量名.变量名只是引用对象而已.
  • 在Python中,对象的引用值在使用过程中逐个丢弃.每一次x被赋值给一个新的对象,Python都回收了对象的空间
  • 共享引用-多个变量名引用了同一个对象.
  • 在Python中,变量总是指向对象的指针,而不是可改变的内存区域的标签:给一变量赋一个新的值,并不是替换了原始的对象,而是让这个变量去引用完全不同的一个对象.实际的效果就是对一个变量赋值,仅仅会影响哪个被赋值的变量.
  • ==操作符,测试Python中用作相等的检查.等同于"is操作符”.检查对象的同一性.(is只是比较实现引用的指针.)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
>>> a=['spam']
>>> b=a
>>> b[0]='shrubbery'
>>> print a
['shrubbery']
#改变的是这两个变量共同引用(指向对象)的一部分,通过变量B在原处覆盖了这个对象的一部分内容.
>>> a=['spam']
>>> b=a[:]
>>> b[0]='shrubbery'
>>> print a
['spam']
#由于分片表达式语句会在被赋值给B前创建一个拷贝,这次对B在原处赋值就不会有影响了.在第二个赋值语句后,就有了两个拥有相同值的不同列表对象了.