在交互式环境中,编译器会有一个小整数池的概念,会把(-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) 12 http://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 for x in vec if x > 3]
集合也支持推导式:a = {x for x in 'abracadabra' if x not in 'abc'}
字典推导可以用来创建任意键和值的表达式词典:{x: x**2 for x in (2, 4, 6)}
列表推导式的执行顺序:各语句之间是嵌套关系,左边第二个语句是最外层,依次往右进一层,左边#第一条语句是最后一层。
[x*y for x in range[1,5] if x > 2 for y in range[1,4] if x < 3]
for x in range[1,5]
if x > 2 for y in range[1,4] if x < 3 x*y
while 循环语句和 for 循环语句使用 else 的区别:
- 1、如果 else 语句和 while 循环语句一起使用,则当条件变为 False 时,则执行 else 语句。
- 2.如果 else 语句和 for 循环语句一起使用,else 语句块只在 for 循环正常终止时执行!
- break 语句可以跳出 for 和 while 的循环体。如果你从 for 或 while 循环中终止,任何对应的循环 else 块将不执行。
如何判断一个函数是否是一个特殊的 generator 函数?可以利用 isgeneratorfunction 判断:
>>>from inspect import isgeneratorfunction
>>> isgeneratorfunction(fab)
True
要注意区分 fab 和 fab(5),fab 是一个 generator function,而 fab(5) 是调用 fab 返回的一个 generator,好比类的定义和类的实例的区别:
>>>import types
>>> isinstance(fab, types.GeneratorType)
False
>>> isinstance(fab(5), types.GeneratorType)
True
fab 是无法迭代的,而 fab(5) 是可迭代的:
>>>from collections import Iterable
>>> 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") for line in f: 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模块