在交互式环境中,编译器会有一个小整数池的概念,会把(-5,256)间的数预先创建好,而当a和b超过这个范围的时候,两个变量就会指向不同的对象了,因此地址也会不一样,
http://www.runoob.com/python3/python3-basic-operators.html
在交互模式中,最后被输出的表达式结果被赋值给变量 _ ,此处, _变量应被用户视为只读变量。
http://www.runoob.com/python3/python3-number.html
Python 所谓的奇进偶弃,因为浮点数的表示在计算机中并不准确,用的时候可能要注意一下。
>>>round(10.5)10>>>round(11.5)12http://www.runoob.com/python3/python3-number.html
random.randint(x,y) #随机生一个整数int类型,可以指定这个整数的范围
random.sample(sequence,length) 可以从指定的序列中,随机的截取指定长度的片断,不修改原序列。
http://www.runoob.com/python3/python3-number.html
'%%'输出一个单一的'%'
字符串的分割还有partition()这种方式。partition(sep)-->(head,sep,tail) 从左向右遇到分隔符把字符串分割成两部分,返回头、分割符、尾三部分的三元组。如果没有找到分割符,就返回头、尾两个空元素的三元组。
http://www.runoob.com/python3/python3-string.html
元组中只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作运算符使用:
元组中的元素值是不允许修改的,但我们可以对元组进行连接组合tup3 =tup1 +tup2;
元组在输出时总是有括号的,以便于正确表达嵌套结构。在输入时可能有或没有括号, 不过括号通常是必须的(如果元组是更大的表达式的一部分)。
字典的键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行
除列表推导式外,[3*x forx invec ifx >3]集合也支持推导式:a ={x forx in'abracadabra'ifx notin'abc'}
字典推导可以用来创建任意键和值的表达式词典:{x:x**2forx in(2,4,6)}
列表推导式的执行顺序:各语句之间是嵌套关系,左边第二个语句是最外层,依次往右进一层,左边#第一条语句是最后一层。
[x*y forx inrange[1,5]ifx >2fory inrange[1,4]ifx <3]
forx inrange[1,5]
ifx >2fory inrange[1,4]ifx <3x*y
while 循环语句和 for 循环语句使用 else 的区别:
1、如果 else 语句和 while 循环语句一起使用,则当条件变为 False 时,则执行 else 语句。
2.如果 else 语句和 for 循环语句一起使用,else 语句块只在 for 循环正常终止时执行!
break 语句可以跳出 for 和 while 的循环体。如果你从 for 或 while 循环中终止,任何对应的循环 else 块将不执行。
如何判断一个函数是否是一个特殊的 generator 函数?可以利用 isgeneratorfunction 判断:
>>>frominspectimportisgeneratorfunction>>> isgeneratorfunction(fab)
True
要注意区分 fab 和 fab(5),fab 是一个 generator function,而 fab(5) 是调用 fab 返回的一个 generator,好比类的定义和类的实例的区别:
>>>importtypes>>> isinstance(fab, types.GeneratorType)False>>> isinstance(fab(5), types.GeneratorType)True
fab 是无法迭代的,而 fab(5) 是可迭代的:
>>>fromcollectionsimportIterable>>> isinstance(fab, Iterable)False>>> isinstance(fab(5), Iterable)True
return 的作用
在一个 generator function 中,如果没有 return,则默认执行至函数完毕,如果在执行过程中 return,则直接抛出 StopIteration 终止迭代。
另一个 yield 的例子来源于文件读取。如果直接对文件对象调用 read() 方法,会导致不可预测的内存占用。好的方法是利用固定长度的缓冲区来不断读取文件内容。通过 yield,我们不再需要编写读文件的迭代类,就可以轻松实现文件读取:http://www.runoob.com/w3cnote/python-yield-used-analysis.html
sys.path 包含了一个 Python 解释器自动查找所需模块的路径的列表。
如果你希望将输出的值转成字符串,可以使用 repr() 或 str() 函数来实现。repr() 函数可以转义字符串中的特殊字符
另一种方式是迭代一个文件对象然后读取每行:
#!/usr/bin/python3# 打开一个文件f =open("/tmp/foo.txt","r")forline inf:print(line,end='')# 关闭打开的文件f.close()
json会将元组转化为列表,pickle会保留元组格式
Python 中关于 round 函数的小坑
http://www.runoob.com/w3cnote/python-round-func-note.html
除非对精确度没什么要求,否则尽量避开用round()函数。近似计算我们还有其他的选择:
使用math模块中的一些函数,比如math.ceiling(天花板除法)。
python自带整除,python2中是/,3中是//,还有div函数。
字符串格式化可以做截断使用,例如 "%.2f" % value(保留两位小数并变成字符串……如果还想用浮点数请披上float()的外衣)。
当然,对浮点数精度要求如果很高的话,请用嘚瑟馍,不对不对,请用decimal模块