len ‘ab好’ 3 测量的是字符数
len ‘ab好’.encode(‘utf-8’) 5 测量的是字节数
中文转成utf-8是3位字节 英文是一位字节
为了让python源码按UTF-8编码读取,我们通常在文件开头写上这两行
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
**第一行注释是为了告诉Linux/OS X系统,这是一个Python可执行程序,Windows系统会忽略这个注释;
第二行注释是为了告诉Python解释器,按照UTF-8编码读取源代码,否则,你在源代码中写的中文输出可能会有乱码。**
(markdown tab键插入整串code)
'Hi, %s, you have $%d.' % ('Michael', 1000000)
‘Hi, Michael, you have $1000000.’
%运算符就是用来格式化字符串的。在字符串内部,%s表示用字符串替换,%d表示用整数替换,有几个%?占位符,后面就跟几个变量或者值,顺序要对应好。如果只有一个%?,括号可以省略
>>> 'growth rate: %d %%' % 7
‘growth rate: 7 %’
%%转义%
demo如下,输出一个两位精度的浮点数,并用字符串格式化显示出’xx.x%’
# -- coding: utf-8 --
s1 = 72
s2 = 85
r = (s2-s1)/0.72;
# -*-方法一直接round round(r,2) -*-
# -*-方法二decimal在一个独立的context下工作,需要 decimal import Decimal Decimal(r).quantize(Decimal(‘0.00’)) -*-
#-*- 方法三,Python十进制数学计算模块decimal.保留浮点数精度 -*-
print(‘百分点: %.2f %%’ % r) # -- 保留精度的浮点数 --
decimal和float性能对比:
$: python -mtimeit -s 'from decimal import Decimal as D' 'D("1.2")+D("3.4")';
$: python -mtimeit -s 'from decimal import Decimal as D' '1.2+3.4'
我在虚拟机中测试前者耗时是后者的1.7k倍,但这在某些运算(例如财务运算)中是值得的,但如果要对非整数做上百次的运算,应坚持使用float。