变量和格式化输出

Python采用基于值的内存管理模式。赋值语句的执行过程是:首先把等号右侧表达式的值计算出来,然后在内存中寻找一个位置把值放进去,最后创建变量并指向这个内存地址。Python中的变量并不直接存储值,而是存储了值的内存地址或者引用,这也是变量类型随时可以改变的原因。

变量用于引用在程序中可能会变化的值。

1,变量

In [2]: name1='apple'

In [3]: name2='apple'

In [4]: id(name1)
Out[4]: 1438115923984

In [5]: id(name2)
Out[5]: 1438115923984  name1和name2的内存地址一样的 这是Python的内存优化机制
In [6]: name1="i love you"

In [7]: name2="i love you"

In [8]: id(name1)
Out[8]: 1438129390000

In [9]: id(name2)
Out[9]: 1438129393456  此时name1与name2的内存地址就不同了 对长字符串没有内存优化机制
In [21]: name1=1000

In [22]: name2=1000

In [23]: id(name1)
Out[23]: 1438129513968

In [24]: id(name2)
Out[24]: 1438129513616  数字在[-5,257)之间才有内存优化(只开出一个地址空间来)

In [25]: name1=name2=1000

In [26]: id(name1)
Out[26]: 1438129512784

In [27]: id(name2)
Out[27]: 1438129512784  连续赋值时就是相当于两个相同的指针指向内存地址,我认为一个钥匙上挂了两个环

2,格式化输出 字符串格式化输出还是字符形式的

input()函数的输出默认是字符串格式的

def format(*args, **kwargs): # real signature unknown
"""
Return value.__format__(format_spec)

format_spec defaults to the empty string
"""
pass


format(item,format-specifier) item是数字或者字符串,而格式说明符(format-specifier)指定条目item的格式。此函数返回一个字符串。

例如10.2f  其中10指域宽度     .2指精度   f指转换码    整体就是一个格式符。

In [32]: format(12.1512345,'10.2f')  
Out[32]: '     12.15'                         小数点是一位的,默认右对齐,四舍五入

In [33]: format(23.2456453,'10.2f')
Out[33]: '     23.25'

In [34]: format(12.3,"10.2f")     位数不够补0
Out[34]: '     12.30'

In [35]: format(23.23456,'.3f')   没有指定宽度根据内容来自动设置的 .n用来指定精度
Out[35]: '23.235'

In [36]: format(12345678.901,'10.1f')
Out[36]: '12345678.9'

In [37]: format(12345678.901,'10.2f')  超出了宽度,保证内容优先,增加了宽度
Out[37]: '12345678.90'
In [39]: format(585.58558,'10.3e')  科学计数法
Out[39]: ' 5.856e+02'

In [40]: format(0.0585858,'10.2%') 百分数
Out[40]: '     5.86%'

In [41]: format(0.5989898,'.3%')
Out[41]: '59.899%'

In [42]: format(0.0585858,'<10.2%') <左对齐 在格式符的比较前的位置
Out[42]: '5.86%     '
In [43]: format(12,'d')  十进制  格式化整数
Out[43]: '12'

In [44]: format(12,'x')  十六进制
Out[44]: 'c'

In [45]: format(12,'o')   八进制
Out[45]: '14'

In [47]: format(12,"b") 二进制
Out[47]: '1100'
In [48]: format('we will regain the lost after we lost it','<45s')
Out[48]: 'we will regain the lost after we lost it     '             指定45为宽度
           
In [49]: format('we will regain the lost after we lost it','45s') 数字默认右对齐,而字符串是默认的左对齐
Out[49]: 'we will regain the lost after we lost it     '

In [50]: format('we will regain the lost after we lost it','>45s')
Out[50]: '     we will regain the lost after we lost it'

%

In [53]: from math import pi

In [54]: 'pi%i'%pi  i和d都是十进制
Out[54]: 'pi3'

In [55]: '%.5f'%pi
Out[55]: '3.14159'


In [58]: '%10.3f'%pi
Out[58]: '     3.142'

猜你喜欢

转载自www.cnblogs.com/bchy/p/11688915.html