Python基础语法回顾
1:对象的引用计数
在Python中对一个变量(或者变量名)赋值时,你就创建了一个指向等号右边对象的引用。实际上,当有一个整数列表时,如果我们把a赋值给一个新的变量,那么我们看一个过程。
我们发现把a改变了,b也随之改变,发现和C++语法不太一样。原来和C++的智能指针有点像。
我们看他的内存模型,
也就是两个引用指向一个对象。
2:可以用isinstance函数来检查一个对象是否是特定类型的实例。
isinstance也可以接受一个元组,例如:
3:模块导入
在Python中,模块就是以.py为后缀名并包含Python代码的文件。比如模块 some_module.py
那么我们使用
import some_module
result = some_module.f(5)
pi = som_module.PI
或者
from some_module import f,g,PI
result = g(5,PI)
也可以使用as关键字,导入内容给与不同的变量名:
import some_module as sm
from some_module import f,g,PI
r1 = sm.f(pi)
r2 = gf(6,pi)
为什么a,b和c不共享一个对象呢?因为list函数总是创建一个新的Python列表
还有is 和 == 是不同的,例如
4:可变对象和不可变对象
可变对象: 列表、字典、Numpy数组都是可变对象,大多数用户设定的类型(类)是可变的。可变对象中包含的对象和值是可以被修改的。
例如:
不可变对象:字符串,元组
例如:
5: 字符串,可以用单引号或者多引号表示,如果需要换行,那么就需要三个单引号或者三个双引号"""
如图:
字符串对象时不可修改的,例如:
但是可以替代,替代以后会重新生成新的对象。
所以按对象理解即可。
可以通过str将其他类型转换为字符串。
6:列表、集合和字典的推导式
列表推导式:
[expr for val in collection if condition]
它和下面的for的等价
result = []
for val in collection:
if condition:
result.append(expr)
我们举个例子:
集合、字典的推导表达式也是一样。
字典和C++里面的hash表有点像,使用enumerate生成字典
7:生成列表嵌套表达式
从前往后写即可,注意嵌套表达式和列表推导式的区别,例如,找出一个列表里每个单词出现e的次数大于2的单词。
嵌套列表表达式可以将这个列表平铺开来:
如果是使用列表表达式,那么列表里的每个元素依然是列表