Python学习手册1

  1. Python的标准实现是将源代码转换为字节码形式,由于字节码是一种与平台无关的格式,字节码有可移植性。然而,由于Python没有将代码编译成底层的二进制,一些Python会比C编译的慢一些。
  2. Jython要比CPython慢而且不够健壮,往往面向寻找Java代码前端脚本语言的工具
  3. IronPython用于Windows平台下的.Net框架以及对应Linux应用
  4. Psyco往往被看做是一个即时编译器(JIT)。能够大大提升Python代码的速度。
  5. 在Python 2.6中,/表示传统除法,如果两个操作数都是整数的话,执行截断的整数除法;否则,执行浮点除法(保留余数)。Python3中的 / 并不会执行截断除法,因此必须要使用 // 进行。
  6. 截断float为不大于该数的最大整数,trunc截断不管符号的截断
  7. 浮点数学缺乏精确性,因为用来存储数值的空间有限。即,原本可以为0的值,在浮点运算中可能不是为0显示结果,是因为浮点在计算机中的机器表示形式。我们能够通过调用在decimal模块中的Decimal的构造函数创建一个小数对象,并传入一个字符串,这个字符串有我们希望在结果中显示的小数位数。当不同精度的小数在表达式中混编时,Python自动升级为小数位数最多的。
  8. decimal模块中的其他工具可以用来设置所有小数数值的精度、设置错误处理等。例如,这个模块中的一个上下文对象允许指定精度(小数位数)和舍入模式(舍去、进位等)。该精度全局性地适用于调用线程中创建的所有小数:
# 使用decimal设置全局的小数精度
import decimal
s = decimal.Decimal(1)/decimal.Decimal(7)
print(decimal.Decimal(s))
# s = 0.1428571428571428571428571429

decimal.getcontext().prec = 4
t = decimal.Decimal(1)/decimal.Decimal(7)
print(decimal.Decimal(t))
# t = 0.1429
#使用with在2.5以上版本中可以设置局部的精度
import decimal
with decimal.localcontext() as ctx:
    ctx.prec = 2
    x = decimal.Decimal(1)/decimal.Decimal(7)
print(decimal.Decimal(x))
# x = 0.14
m = decimal.Decimal(1)/decimal.Decimal(7)
print(decimal.Decimal(m))
# m = 0.1428571428571428571428571429
  1. 在小数和分数之间可以实现相互转换,使用 as_integer_ratio() 方法,将一个小数对象返回一个(分子,分母)的分数形式,分母始终为正数。尽量使用分数形式表示,浮点数表示并不精准。
  2. 要创建一个集合对象,向内置的set函数传递一个序列或其他的可迭代的对象,得到了一个集合对象,其中包含传递的对象的所有元素(注意集合并不包含位置顺序,序列却包含)
  3. 列表和字典作为可变对象不能嵌入到集合中,而需要存储复合值的话,需要使用到元组。集合同样存在方便的集合解析形式。
  4. 由于集合元素的唯一性,可以使用集合去重,交并产生所需要的结果。
  5. 变量在赋值的时候才创建,它可以引用任何类型的对象,并且必须在引用之前赋值。
a = 3

1.创建一个对象来代表值3。
2.创建一个变量a,如果它还没有创建的话。
3.将变量与新的对象3相连接。

变量是一个系统表的元素,拥有指向对象的连接的空间。
对象是分配的一块内存,有足够的空间去表示它们所代表的值。
引用是自动形成的从变量到对象的指针。
  1. 对于拷贝和共享引用的使用区别,共享引用是指向同一块内存区域,而拷贝则是指向两块不同的内存区域。
  2. 对于列表而言,可以使用分片的方法实现整个列表的拷贝,但是对于集合和字典而言,不是序列,所以需要拷贝的话,必须使用到Copy的库,使用X.copy()方法。
  3. 对于字典的字符串匹配而言
>>>"%(n)d %(x)s" % {"n":1,"x":"spam"}
#在字典的格式化中需要加上匹配的字符串对象
'1,spam'
  1. python中vars的用法,返回对象的属性和属性值组成的字典
>>>print(vars())
{'__builtins__': <module '__builtin__' (built-in)>, '__name__': '__main__', '__doc__': None, '__package__': None}
>>> class Runoob:
...     a = 1
... 
>>> print(vars(Runoob))
{'a': 1, '__module__': '__main__', '__doc__': None}
>>> runoob = Runoob()
>>> print(vars(runoob))
{}

#作用于类实例
>>> class A(object):
    pass

>>> a.__dict__
{}
>>> vars(a)
{}
>>> a.name = 'Kim'
>>> a.__dict__
{'name': 'Kim'}
>>> vars(a)
{'name': 'Kim'}
  1. 通过format可以调整字符串匹配顺序
>>>"{A} , {0} , {B}".format(12,A = 23,B = 43)
'23 , 12 , 43'
#format更高级的用法
#在实例中,可以看到使用[]指定字典的键值,点.表示位置或者关键字的属性
>>> import sys
>>> 'my {1[spam]} run {0.platform}'.format(sys,{'spam':'laptop'})
'my laptop run win32'
>>> 'my {config[spam]} run {s.platform}'.format(s=sys,config={'spam':'laptop'})
'my laptop run win32'
  1. 使用format时注意的事项
>>> l = list('spam')
>>> "first = {0[0]} , third={0[2]}".format(l)
'first = s , third=a'
>>> "first = {0[0]} , third={0[-1]}".format(l)

Traceback (most recent call last):
  File "<pyshell#9>", line 1, in <module>
    "first = {0[0]} , third={0[-1]}".format(l)
TypeError: list indices must be integers, not str
#在使用便宜量的时候只能是正向偏移,切片的负偏移量需要另写
>>> "first = {0} , last={1}".format(l[0],l[-1])
'first = s , last=m'
  1. 在format中使用冒号表示对需要匹配的字符串进行处理,{0:<10}表示0号位置左对齐,{1:>10}表示1号位置右对齐,或者指定几位浮点数表示{3:2f}等等作用
  2. 格式化方法拥有%表达式所没有的很多高级功能,但是,更复杂的格式化似乎看起来也能从根本上降低复杂性。
  3. 使用逗号来实现货币格式化
>>> '{:,d} {:,d}'.format(9999999999,888888888888)
'9,999,999,999 888,888,888,888'
>>> '{:,.2f} '.format(9999.789456)
'9,999.79 '
#在使用时还可以对数字进行处理

>>> s.split(',')[1]
'pa'
#可以直接对分割后的字符串进行索引
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值