1. 基础语法
1.1 基本数据类型
-
支持
int float bool complex四种数字类型; -
bool类型为True False,首字母大写; -
bool是int的子类,True==1和False==0都会返回True; -
字符串可以用单引号或双引号括起来
'string1' "string2",其中使用\表示转义字符; -
原始字符串(
raw string)通过r或R前缀声明:str = r'haha\n',原始字符串中转义字符失效; -
字符串可以左闭右开进行切片(
slice):str[ start:end:step ],但不能改变:str[0] = 'a'语句将导致错误; -
字符串索引:从左往右是
0开始,从右往左是-1开始; -
列表
List类型用方括号声明:list = [ 'abcd', 123, 23.4, 3+3j ];一个list中可以包含多种数据类型;List的元素是可变的; -
元组
Tuple采用圆括号声明:tuple = ('abcd', 12, 23.4),和List类似,但元素整体不可变,不过元素本身可以是可变的,如以List作为元素; -
集合
Set采用大括号声明:set = {val1, val2, val3},但空集合要使用set()函数创建:emptySet = set(); -
集合可以进行运算:
a = { 'a', 'b', 'c' }; b = { 'a', 'c', 'd' } a | b # 并集 a - b # 差集 a & b # 交集 a ^ b # 不同时存在的元素集合 -
字典
Dictionary采用大括号进行声明,存储无序的键(key)值(value)对:dict = { 'name': 'Tom', 'friend': 'Jerry', 'age': 10};创建空字典采用{},所以集合不能用{}创建空集;字典的键必须是不可变类型,且不能重复,所以int也可以作为键; -
字典基础函数:
keys、values、items、clear、pop分别用来获取所有键、获取所有值、获取键和值、清空字典、删除某个键值对; -
各基础数据类型的构造函数:
a = 1; b = 1.0; c = 'haha'; d = 3+4j; list = ['a', 1, 2, 3] set = {'a', 'b', 3, 4} dict = {1:1, 2:2, 3:3} tuple = ('a', 'b', 'c', 1, 2, 3, True)
1.2 运算符
- 乘方运算符:
** - 浮点数除法:
/ - 整数除法:
// - 字符串、列表复制:
2 * str,将str复制2次 - 逻辑运算符:
and 或 not - 包含运算符:
in 或 not in - 判断2个标识符引用自同一个对象:
is 或 is not
1.2 逻辑控制语句
-
while循环,条件成立时循环执行while语句块,条件不成立时执行一次else语句块。注意while和else的语句后都有冒号:while expr : <statements> else: <statements> -
for循环,与while类似:b = [1, 2, 3, 4] for x in range(len(b)): <statements> else: <statements> -
可以通过
break直接跳出循环,也可通过continue跳过本次循环; -
pass语句不执行任何功能,仅作为占位符使用;
1.3 推导式
推导式是一种独特的数据处理方式,可以从一个数据序列构建另一个新的数据序列的结构体。
字典、列表、元组、集合都可以用推导式语法来创建新对象。
基本推导式语法为:表达式 for 变量 in 列表 if 条件,如
py # 从names中,挑选长度>3的元素,并将其转为大写 new_names = [name.upper()for name in names if len(name)>3]
其中:
- 表达式指明了元素的创建语法;
- 变量是从源数据对象中获取的元素、键、值等;
- 将推导式采用
() [] {}括起来就可以创建元组、列表、集合/字典,最后二者的区分靠表达式,字典的表达式需要提供为key_expr : value_expr;
1.4 迭代器与生成器
对序列类型,可以使用迭代器进行遍历,基本方法为:iter(list)创建迭代器,next(iter)获取下一个元素:
a = [1, 2, 3, 4, 5, 6]
for x in iter(a): # 效果与 for x in a: 一致
print(x)
创建一个迭代器需要在类中实现两个方法 __iter__() 与 __next__():
class MyNumbers:
def __iter__(self):
self.a = 1
return self
def __next__(self):
if self.a <= 20:
x = self.a
self.a += 1
return x
else:
raise StopIteration # 表明迭代结束
myclass = MyNumbers()
myiter = iter(myclass)
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
在python中,使用了yield语句的函数被称为生成器,
1.5 常用函数
-
print(a, b, c, d)打印内容;end参数指定分隔符,默认分隔符为\n; -
type(a)获取变量的数据类型,如a = 1;type(a)结果为<class 'int'>;不会认为子类是一种父类类型; -
len(x)获取长度; -
range(start, end, step)生成整数序列;range(len(x))生成x的索引序列; -
isinstance(a, int)判断a是不是int的一个实例;会认为子类是一种父类类型;# 由于bool是int的子类,所以有以下结果 a = True type(a) == int # False isinstance(a, int) # True -
数据类型强制转换:
# 4种基本数据类型 int(x); float(x); str(x); complex(x); # 列表,元组,集合,字典 list(x); tuple(x); set(x); dict(x); chr(x) # 整数转字符 ord(x) # 字符转整数 hex(x) # 整数转16进制字符串 oct(x) # 整数转8进制字符串 -
lambda函数:只能写一行的匿名函数# x 为一个lambda函数,abc为传入参数,: 后面的表达式为返回值 x = lambda a, b=2, c=3 : a+b*2+c*3 -
dir(moduleName)返回模块中定义的所有名称;顺便一提:模块就是源文件,import module就是提供源文件的文件名,不用带py后缀;
1.6 文件处理
- 通过
f = open(fileName, mode)读取文件,mode常用的为:只读r,只写w,追加a; f.read()读取内容,f.write()写入内容,f.close()关闭文件,f.readlines()读取多行;- 为防止打开后运行出错等,导致忘记关闭文件,可以使用
with,来保证文件的关闭:
with open('1.txt', 'r') as f:
# 处理代码
1.7 异常处理
关键字有:try except else finally

抛出异常关键字:raise Exception(),只能抛出Exception或其子类的异常对象。
2. 常见问题解决
-
VsCode中Ctrl+Alt+N运行Python文件,print输出中文为乱码?添加环境变量:变量名 =
PYTHONIOENCODING, 变量值 =UTF-8 -
pip安装软件很慢,可以使用国内镜像源,如清华pypi源,使用办法:# 需要使用 pip 10.0.0 以上版本,如果版本过低,可以 # pip install pip -U pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
7093

被折叠的 条评论
为什么被折叠?



