每一个对象都有两个标准的头部信息:类型标志符标识这个对象的类型;引用的计数器决定何时回收这个对象。因为对象记录了它们的类型,变量就没有必要再记录类型了,所以python中的类型是与对象相关联的,而不是与变量关联。
is 和 == 的区别
https://www.cnblogs.com/wangkun122/p/9082088.html
A = 'spam'
B = A
B = 'hello'
print(A) # spam
print(B) # hello
A = ['spam']
B = A
B[0] = 'hello'
print(A) # ['hello']
print(B) # ['hello']
A = ['spam']
B = A[:]
B[0] = 'hello'
print(A) # ['spam']
print(B) # ['hello']
字符串
字符串是可迭代对象,是序列。
真值
1. 所有对象都有一个固定的布尔真/假值
2. 任何非空对象和非零数字都为真
3. 数字零,空对象以及None都被认为假
True和False只不过是1或0的特殊版本,记忆的替代物而已。
int(True) # 1
int(False) # 0
bool([ ]) # False
=====================================================================
for target in object:
object是可迭代对象
while循环是一种通用的循环结构,for循环被设计用来在一个序列或其他可迭代对象中遍历各项。尽管while可以用计数器来模拟for循环,但它需要更多的代码并且运行起来更慢。
选择循环结构的优先级:
1. 三参数分片
2.列表推导
3.for elem in 可迭代对象
4.for i in range(satrt:end:step)
5.while
==============================================================================
del data[k]
del data[i:j]
del variable
由于python都是引用,而python有GC机制,所以,del语句作用在引用上,而不是数据对象上。例子如下:
a = 1 b = c = a del a, b print(c) # 1 mylist = [1,2,3,4] tmp = mylist[-2] del mylist[-2] del mylist[-2:-1] print(tmp) # 3
=============================================================================================
让一行代码跨越多行: 把目标行用()括住即可。
如 X = (A + B
+ C + D) # 第二行可以任意的缩进
==============================================================================================
引用首次赋值被创建,使用未赋值的标识符python抛错。
序列赋值
多个变量名 = 可迭代对象,要使 = 两边的元素个数相同,如
a,b = 1,2 两边都是隐形的元组,相当于(a,b) = (1,2)
[a,b,c] = [1,2,3]
(a,b) = [1,2]
(a,b,c) = 'air'
a,b = 'ab'
交换x,y的值 x,y = y,x
序列赋值语句两侧可以是任意的可迭代对象。
序列解包
带星号的名称被赋值一个列表,该列表收集了序列中剩下的没被赋值给其他名称的所有项。
a,*b,c = 'hello' # a:h c:o b:[ell]
==================================================================================
对象是内存的一部分,python脚本中的一切都是对象,甚至支持运算操作(加法,减法等)的数字(如99)也是如此。
在速度方面,python的内置类型使用了已优化的用C实现的数据结构算法来加速。
像函数,模块,类这样的编程单元在python中也是对象,它们由def,class,import,lambda这样的表达式和语句创建,可以在脚本间自由的传递,存储在其他对象中。
2**10 表示2的10次幂。
字符串操作:
S = Spam
S[-1] 等价 S[len(S) - 1]
S[::-1]逆序
S[5:1:-1]逆序
S[::2]
S[1,10:3]
python中的每一个对象都可以归类为不可变的或可变的。
查看一个对象所有的属性和某个属性的具体方法:dir() help()
例:mystr = 'hello' dir(mystr) help(mystr.find)
r'C:\text\new' r禁止转义字符起作用,对于表示路径的字符很有用。
多维数组可用list实现, [ [1,2,3], [4,5,6], [7,8,9] ,[10,11,12] ], 4行3列, 取出某一列 [row[0] for row in list ]
range生成列表: list(range(4)) [0,1,2,3] list(range(-6,7,2)) [-6,-4,-2,0,2,4,6]
字典是python核心对象集合中唯一的一种映射类型,也具有可变性。
# python中一切皆对象 # dir(对象)查看对象的所有属性,返回一个属性列表 # 对象.__doc__,查看对象的文档字符串 print([x for x in dir([]) if not x.startswith('_')]) # 可以不输出系统属性和隐私属性