Python中遇到的问题 - littleboy12580/learning_python GitHub Wiki
1.交互模式下输入多行语句时需要进行缩进,否则会提示错误。
2.表达式1==2<3表示的意思是“1==2 and 2<3”。
3.在python中一些小的数字与字符对象在没有引用的时候并不会被回收而是会对这些对象进行缓存复用,等待下一次代码再次生成另一个相同对象来重复利用。因此有如下实例:
X=42
Y=42
X==Y
输出的是TRUE
X is Y
输出的也是TRUE
4.在python中“+”表达式不能混合数字与字符串,例如‘abc’+9是会抛出错误的。
5.无条件分片X[:]与字典的copy()方法只能做到顶层复制,即他们不能复制嵌套的数据结构;要实现深度拷贝需要导入标准的copy模块(即import copy),并用语句 X=copy.deepcopy(Y)来实现对任意嵌套对象Y进行完整的复制。
6.Python 会缩放分片限制值,所以L[3:1]相当于L[3:3],若有
L=[1,2,3,4]
L[3:1]=['?']
则最后L的输出为
[1,2,3,'?',4]
7.把空列表赋值给一个索引,会将空列表的对象保存在这里;但是若把空列表赋值给一个分片,则会删除该分片。例如:
L=[1,2,3,4]
L[2]=[]
此时的L为
[1,2,[],4]
而如果采用分片形式,如
L[2:3]=[]
则此时的L为
[1,2,4]
8.当元组或列表出现在赋值符号(=)两边时,Python会根据左右两侧对象的位置把右侧对象赋值给左边目标。例如:
X=‘SPAM’
Y=‘EGGS’
X,Y = Y,X
此时的X值为‘EGGS’,Y的值为‘SPAM’
9.在Python中,map调用比等效的for循环要快两倍,而列表解析往往比map调用要稍快一些。
10.模块导入只会发生一次,如果需要一个模块的代码通过某种导入后再一次运行,可以使用reload函数
11.Python的格式化输出在存在多个输出时,应该将变量都括起来
print("the value of %s is %d" % (str,value))
12.对于一个文件如果想要对其中的代码进行测试又不想在该文件被其他文件导入的时候执行测试代码,可以在测试代码前面加上
if __name__ == '__main__':
13.在python中可以通过pip命令来安装第三方模块
pip install <module> #<module>为第三方模块名
14.可以通过导入__future__模块来使用新版本的一些特性。例如在2.7版本中,10/3的值为3,而在python3.0中10/3值为3.33333333333。如果在2.7环境下导入了__future__模块,就能使用3.0的语法
from __future__ import division
print '10 / 3 =', 10 / 3
此时的值为3.33333333333
15.凡是可作用于for循环的对象都是Iterable类型;
凡是可作用于next()函数的对象都是Iterator类型,它们表示一个惰性计算的序列;
集合数据类型如list、dict、str等是Iterable但不是Iterator,不过可以通过iter()函数获得一个Iterator对象。