Python 3.x 学习笔记--杂

时间:2021-09-20 02:35:36

  在交互式环境中,编译器会有一个小整数池的概念,会把(-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模块