这是学习过程中整理的笔记,用于复习和索引。
概念解释和具体代码详见NoteBook。
Warning:本文档用到HTML代码,不受Github支持。如需查看目录、表格等,请下载使用本地编译器查看。
[toc]
包括数字、字符串、布尔值、空值。可定义命名常量,Python中很复杂。
数分为整数形(int)、长整数型(long)、浮点数型(float)、布尔型(bool)和复数型(complex)5种。
字符串是字符组成序列。 巧用单引号和双引号。 知识点:转义符号、三引号、Unicode字符串、自然字符串、子字符串。
None,很特殊。
命名规则:字母或下划线开头,包含字母、数字或下划线,不包含空格、减号。 不能使用关键字定义。
知识点:变量的传递和地址:id()
五种数据类型:简单数据类型、列表、元组、字典和集合。
简单数据类型包括数字、字符串。
要求掌握的函数:
int()、long()、float();计算字符串表达式:eval()。
str()、可打印字符串repr(obj);ASCII码的两个函数:chr(整数)、ord(字符);转十六进制字符串:hex(整数);转八进制字符串:oct(整数)。
[A,'b',...]
(A,'b',...) 元组不可更改。
{'A':'a', 'B':'b', ...}
set(['A','b',...]); frozenset({'A','b',...})
+, -, *, /, %, **, //.
=, +=, -=, *=, /=, %=, **=, //=.
&, |, ^, ~, <<, >>.
==, !=, <>, <, >, <=, >=
and, or, not
+, *, [], [,], in, not in,r/R.
记不住的=。=
对象(Object)、类(Class)、封装、继承、方法、构造函数、析构函数。
声明类、定义类的对象、成员变量、构造函数__init__、析构函数__del__。
特殊规则:__ xxx __ 表示系统定义名字,__ xxx表示类中私有变量名。
静态变量、静态方法。
类名访问静态变量和对象名访问结果互不干扰。 静态方法无法访问实例变量,但可通过类名引用静态变量。
类方法可以调用类方法,无法访问实例变量,但可通过cls访问静态变量。
isinstance(对象名, 类名或类型名)
判断对象是否属于指定类或类型。
class B(A),B继承A的属性和函数。
抽象类和多态没搞清楚。
import pickle
ListB = pickle.dumps(ListA)
反序列化: ListA = pickle.loads(ListB)
p = open('data.pkl','wb'); pickle.dump(List, p); List = pickle.load(p);
新对象名 = 原有对象名
知识点:赋值语句、循环语句、条件分支语句、异常处理语句。
x,y,z = 序列
序列包括字符串、列表、元组。
x = y = z = value
if,else,elif.
while语句、for语句、continue语句、break语句。
try-except语句。
不用记,用时查。
声明:def语句。
普通参数:参数名。 列表和字典参数:列表会字典名。 定义函数时可设置参数默认值。
可变长参数:f(*t),调用函数时参数个数可变,t的格式为元组。 f(**t)类似,t的格式为字典。
return语句,可以返回值、列表或字典。
全局变量全局有效,局部变量定义的函数中有效,冲突则局部优先。
abs,pow,round,divmod
round:四舍五入; divmode:商和余数。
lambda表达式 map函数 filter函数 reduce函数 zip函数
模块以.py形式储存,保存在Python主目录下的Lib目录中。
import 模块名
添加路径:sys.path.append(指定目录)
操作系统、Python版本等信息,详见Notebook文件。
math模块、random模块、decimal模块、fractions模块。
四个表格,待补充。
时间信息。
格式化字符串的符号规则见Notebook。
输入数据 = input(提示字符串)
print函数的用法: 输出字符串和格式化输出数字。
十六进制整数:%x。 八进制整数:%o。
浮点数用法:%总长度.小数位数f,总长度包含小数点。
文件对象 = open(文件名, 访问模式, buffering)
f.close()
str = f.read([b]);
按行读取: list = f.readlines(); str = readline();
in关键字 in关键字按行遍历: for line in f:
f.truncate([size]);丢弃后面内容。
fileStats = os.stat(文件路径和文件名)
os模块应用
os.system("str")控制计算机,"str"为CMD命令语句。
被SMTP和POP3邮件部分搞得很绝望,文件夹里有失败的代码。
Python内置数据结构:列表、元组、字典等。
Python拓展数据结构:栈、队列、树、链表等。
数据结构是数据的组织方式、存储方式;算法指运算方法。数据结构是算法的基础。
栈的特性:后进先出(LIFO)。 常用操作:
队列特性:先进先出(FIFO)。 常用操作:
非线性,共有元素节约空间。
二叉树是有序树,顺序存储和链式存储。数据域、左子树域和右子树域。
遍历方法:先序遍历、中序遍历、后序遍历。
非连续、非顺序的存储方式。
数据域和指针域。
单向链表、单向循环链表、双向链表、双向循环链表。
常用操作:
进程的概念:指令的实际运行体。
进程的状态:被创建、就绪、运行、阻塞、挂起、终止。
创建进程的模块:subprocess, win32process, ctypes。
创建对象:kernel32 = windll.kernel32
线程是进程的子集,进程内部线程资源共享。
线程的状态:初始化、就绪、延迟就绪、备用、运行、等待、过渡、终止。
开放系统互连参考模型(Open System Interconnection Reference Model)简称为OSI参考模型。分为7个层次:
- 物理层 Physical Layer
- 数据链路层 Data Link Layer
- 网络层 Network Layer
- 传输层 Transport Layer
- 会话层 Session Layer
- 表示层 Presentation Layer
- 应用层 Application Layer
低三层:网络通信链路;高四层:端到端数据通信。每层为数据包加一个头部。
不是所有数据都要经过7层,比如同一网段二层通信、路由器间的三层通信等。
信息交换单元称为协议数据单元(PDU)。
OSI参考模型中的层次 | PDU的特定名称 |
---|---|
传输层 | 数据段(Segment) |
网络层 | 数据包(Packet) |
数据链路层 | 数据帧(Frame) |
物理层 | 比特(Bit) |
TCP/IP协议簇规范了网络设备之间数据往来的格式和传送方式。包含网络接口层、网络层、传输层和应用层。
OSI参考模型 | TCP/IP协议簇 | |
应用层 | 应用层 | FTP,Telnet,SMTP,SNMP,NFS |
表示层 | ||
会话层 | ||
传输层 | 传输层 | CTP,UDP |
网络层 | 网络层 | IP,ICMP,ARP,RARP |
数据链路层 | 网络接口层 | Ethernet 802.3, Token Ring 802.5, X.25, Frame reley, HDLC, PPP |
物理层 | 未定义 |
- 客户端需要了解服务器的地址和应用程序端口
- 服务器应用程序必须早于客户端应用程序启动
- 客户端申请发送数据,服务器必须有足够时间响应
- 双方必须使用相同的通信协议
- 通信过程中,物理网络必须保持畅通
- 通信结束之前双方都可以中断连接
应用层 | |
Socket开发接口 | |
传输层 | |
TCP | UDP |
网络层 IP | |
驱动 | |
物理层 |
Python对硬件模块的支持至关重要,下面是对学习的笔记。
蓝牙接口对应于socket,通过socket即可实现蓝牙传输。