一、python基础数据结构,基础语法
- 编码
python3的默认编码是UTF-8,字符串的编码是unicode;
python2的默认编码是ASCII,字符串的编码也是ASCII。 - 标识符规则(变量名)
注意:python3中,中文可作为变量名(不推荐使用);python2不可以。由字母、数字和下划线组成 首位字符必须是字母表中的字母或下划线 变量名是区分大小写的
- 注释
单行注释以 # 开头 多行注释可以用多个 # 号,还有'''和"""
- 保留字(关键字,不能用作任何标识符名称)
共33个'False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield' # 查看关键字方法 import keyword keyword.kwlist
- 数字类型
整数、布尔型、浮点数和复数int (整数), 如 1, 只有一种整数类型 int,表示为长整型,没有 python2 中的 Long。 bool (布尔), 如 True。 float (浮点数), 如 1.23 complex (复数), 如 1 + 2j # 常用于数学实验的计算等
- 操作运算符:
<、<=、>、>=、==、!=
二、脚本执行、控制台交互执行
- 脚本执行
python python脚本文件的路径
- 控制台交互执行
三、数组(列表)、元组、字符串
- 数组(列表)
定义:把逗号分隔的不同的数据项使用方括号括起来
特性:列表是可变的# 定义 list_obj = ['name', 'age', 20] # 部分函数 list_obj1 = [1, 2] list_obj2 = [3, 4, -1] list_obj1.extend(list_obj2) # 在列表末尾一次性追加另一个序列 print(list_obj1) list_obj1.append(10) # 列表末尾添加新的对象 print(len(list_obj1)) # 列表元素个数 print(max(list_obj1)) # 列表元素最大值
- 元组
定义:把逗号分隔的不同的数据项使用小括号括起来
特性:元组的元素不可变、元组是有序的。# 定义 tuple_obj = (100,) # 元组类型 num_obj = (100) # 结果是整型 # 元组的排序 tuple_obj = (1, 2, 3, 6, 5, 4) # 元组是没有办法直接排序的 需要先转成列表 进行排序,再转回元组 tuple_obj = tuple(sorted(list(tuple_obj ))) print(tuple_obj )
- 字符串
定义:指定字符串可以使用单引号、双引号和三引号(’’'或""")
特性:字符串是不可变的# 定义 string_obj = "This is a book." # 字符串部分函数使用 string_obj = 'this is a book' print(len(string_obj)) # 字符串长度 objs = string_obj.split(' ') # 字符串以某一字符str进行分割,返回列表 string.split(str) print(objs) # 部分字符串匹配替换 string_obj2 = string_obj.replace('book', 'phone') # a的值并没有发生改变 b指向了新建的字符串对象 print(string_obj) print(string_obj2)
四、字典、集合、文件
- 字典
定义:字典的每个键值 key=>value 对用冒号分割,每个对之间用逗号分割,包括在花括号 {} 中。
格式:d = {key1 : value1, key2 : value2, key3 : value3 }
特性:键唯一、键使用的数据类型必须是不可变的# 定义 dict1 = {'a': 1, 'a': [1, 2], 1: 'b', (1, 2): 'c'} dict2 = {[1, 2]: 1} # 错误的key定义 # 字典部分函数使用 dict_obj = {"name": 'xiaoming', 'age': 18, 'sex': 'Man'} dict_obj2 = {"id": "202011052639"} print(dict_obj.keys()) # 返回字典所有的键 print(dict_obj.items()) # 字典遍历的(键, 值) print('name' in dict_obj) # 判断的是name这个key是否存在这个字典的keys中 dict_obj.update(dict_obj2) # 字典dict2的键/值对更新到dict里 print(dict_obj)
- 集合
定义:使用大括号 { } 或者 set() 函数创建集合
格式:set1 = {value01,value02,…} 或者set(value)
特性:一个无序的不重复元素序列
注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。# 定义 set_obj = set() # 集合部分函数使用 set_obj.add(1) # 集合添加元素 set_obj.update([2, 3]) # 集合添加元素 set_obj.update({4, 5}) # 集合添加元素 print(set_obj) set_obj.remove(1) # 移除元素 print(set_obj) set_obj.update([6, [7, 8]]) # 错误的使用 添加的可以是元素或集合 不可以不是元素
- 文件
定义:open() 方法用于打开一个文件,并返回文件对象。
常用格式:open(file, mode)
注意:使用 open() 方法一定要保证关闭文件对象,即调用 close() 方法。# 定义使用 x = open('D:\\pro_py3\\requirements.txt', 'r') print(x.read()) x.close()
五、控制流和函数
- 控制流:条件控制和循环语句
条件控制:
定义:是通过一条或多条语句的执行结果(True 或者 False)来决定执行的代码块。
注意:在Python中没有switch – case语句。# if--else 、if--elif--else 当某个条件符合时,按顺序执行的其它条件则不会执行 number = 33 if not number % 2 or not number % 11: print('{0}可以被2或者11整除'.format(number)) elif number % 33: print('{0}可以被33整除'.format(number)) else: pass
循环语句:
分类:while和for
break:break 语句可以跳出 for 和 while 的循环体
continue: 继续进行下一轮循环
注意:Python 中没有 do…while 循环while语句形式: while 判断条件(condition): 执行语句(statements)…… for循环的一般格式如下: for <variable> in <sequence>: 执行语句<statements>
# 定义样例 # 找出0-10的奇数 i = 0 while i < 10: if i % 2: print(i, end=' ') else: pass i += 1 print() # 找出0-10的偶数 for i in range(0, 11): if not i % 2: print(i, end=" ")
- 函数
定义:组织好的,可重复使用的,用来实现单一,或相关联功能的代码段
格式:
注意:函数代码块以 def 关键词开头def 函数名(参数列表): 函数体
# 样例 def get_name(name): return '我的名字:{0}'.format(name) print(get_name('小明')) # 我的名字:小明
- 匿名函数
定义:使用 lambda 来创建匿名函数,再使用 def 语句这样标准的形式定义一个函数
格式:lambda 参数:表达式
注意:能访问自己参数列表之外或全局命名空间里的参数# 样例 sum = lambda x, y: x + y print(sum(1, 2)) # 3
六、模块引用和内置模块(os、sys)
- 模块导入:
定义:import 或者 from…import 来导入相应的模块
注意:当将某个模块的函数等信息全部导入,采用from xxxx import * (正常使用中不建议导入*)# 样例 import sys, os from sys import path, argv
七、装饰器函数
- 装饰器
定义:用函数A装饰函数B。当然,也可以认为是A包装函数B。# 样例 def day2(func): print("hello world") return func @day2 def day1(): print("My function name is:", day1.__name__) day1()
八、异常处理
-
异常处理:
背景:即便 Python 程序的语法是正确的,在运行它的时候,也有可能发生错误
目的:需要进行异常处理,保证代码的正常运行不中断。
# 样例
try:
a = 1 % 0
except Exception as e:
print(e)
else:
print(a)
finally:
print('结束')
try:
a = 1 % 3
except Exception as e:
print(e)
else:
print(a)
finally:
print('结束')
九、面向对象编程
- 类(Class)
定义:用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
类语法格式:class ClassName: <statement-1> . . . <statement-N>
# 类定义 class people: # 定义基本属性 name = '' age = 0 # 定义私有属性,私有属性在类外部无法直接进行访问 __weight = 0 # 定义构造方法 def __init__(self, n, a, w): self.name = n self.age = a self.__weight = w def speak(self): print("%s 说: 我 %d 岁。" % (self.name, self.age)) # 实例化类 p = people('runoob', 10, 30) p.speak()
- 继承和多继承
语法格式:
注意:当多继承时,存在同名方法,子类使用该方法时,寻找该方法的顺序是按照括号里父类从左往右。继承和多继承 class people(Base1, Base2, Base3): <statement-1> . . . <statement-N>
十、模块开发
- 模块定义:包含代码的文件
- 为什么用模块
使用模块可以提高代码的可维护性和重复使用,还可以避免函数名和变量名冲突。
十一、编码规范和检查工具
编码规范:要符合flake8语法
检查工具:安装flake8依赖