python学习笔记
python学习笔记
秋忆夏伤
个人学习笔记。仅用作笔记使用,方便复习、查找知识点。
展开
-
Python学习笔记(三十一):连接 mysql 数据库
python 中连接 mysql 数据库,可以使用 mysql-connector,mysql-connector 是 mysql 官方提供的驱动;是属于第三方的模块,所以需要手动安装;也可以使用 pymysql 驱动来连接 mysql 数据库,pymysql 是 python3 版本中的,python2 中使用的是 mysqldb;pymysql 模块也是第三方模块,需要手动安装;两种方法差不多,我是用 mysql-connector 模块连接的;1、创建 mysql 数据库连接:.原创 2020-07-03 17:03:19 · 1134 阅读 · 0 评论 -
Python学习笔记(三十):TCP 通信
TCP 简介:TCP 协议,传输控制协议(英语:Transmission Control Protocol,缩写为 TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议;TCP 通信需要经过 创建连接、数据传送、终止连接 三个步骤;TCP 通信模型中,在通信开始之前,一定要先建立相关的链接,才能发送数据,类似于生活中,"打电话";TCP 特点: 面向连接: 通信双方必须先建立连接才能进行数据的传输,双方都必须为该连接分配必要的系统内核资源,以管理连接的状态和连接上的传输;原创 2020-07-03 15:45:50 · 436 阅读 · 0 评论 -
Python学习笔记(二十九):UDP 通信
网络通信:本地的进程间通信可以有很多种,比如队列、同步(互斥锁)等;那么网络中进程之间如何通信??首先要解决的问题是,如何准确标识一个网络中的进程;我们知道,网络中的 ip 地址可以准确的标识一个主机,而 "协议+端口" 可以准确的标识一个主机中的应用程序(进程);这样,利用 ip地址、协议、端口 就可以标识网络的进程了,网络中的进程可以利用这个标志与其他进程进行通信;socket:socket,也称为套接字,是进程间通信的一种方式,它与其他进程间通信的一个主要不同是:它能.原创 2020-07-03 15:05:59 · 318 阅读 · 0 评论 -
Python学习笔记(二十八):线程
进程和线程的区别: 进程:是系统进行资源分配和调度的一个独立单位; 线程:是进程的一个实体,是 CPU 调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈);但是它可与同属一个进程的其他线程共享进程所拥有的全部资源。 一个程序至少有一个进程,一个进程至少有一个线程; 线程的划分尺度小于进程(资源比进程少),使得多线程程序的并发性高; 进程在执行过程中,拥有独立的原创 2020-07-03 12:10:17 · 229 阅读 · 0 评论 -
Python学习笔记(二十七):进程间通信 Queue
进程之间有时候需要通信,可以使用 multiprocessing 模块中的 Queue 类来实现进程间的数据传递,Queue 是一个消息队列,循序 先进先出 的规则;初始化 Queue 对象时(q = Queue()),若括号中没有指定最大可接收的消息数量,或数量为负值,那么就代表可接受的消息数量没有上限,直到内存的尽头;Queue 常用的方法: Queue.qsize():返回当前消息队列包含的消息数量; Queue.empty():如果队列为空,返回 True,否则返回 F.原创 2020-06-29 17:32:25 · 434 阅读 · 0 评论 -
Python学习笔记(二十六):使用进程池 Pool 创建子进程
接上一篇文章:Python学习笔记(二十五):使用跨平台的 Process 创建子进程当需要创建的子进程数量不多时,可以直接利用 multiprocessing 模块中的 Process 类动态生成多个进程;但如果是上百甚至上千个目标,手动的去创建进程的工作量巨大,此时就可以使用 multiprocessing 模块提供的 Pool 类去完成;初始化 Pool 对象时,可以指定一个最大进程数,当有新的请求提交到 Pool 中时,如果池还没有满,那么就会创建一个新的进程来执行该请求;但如果池中的进程数原创 2020-06-29 17:29:14 · 741 阅读 · 0 评论 -
Python学习笔记(二十五):使用跨平台的 Process 创建子进程
Process 类:fork() 方法只在类 linux 系统下可以使用,在 windows 下无法使用;但是 python 是跨平台的,自然也应该提供一个跨平台的多进程支持;multiprocessing 模块就是跨平台版本的多进程模块,即在 linux 系统下和 windows 系统下都可以使用;multiprocessing 模块提供了一个 Process 类来代表一个进程;以后尽量使用 Process 方法代替 fork() 方法创建子进程;以下例子用 Process .原创 2020-06-29 17:23:38 · 1578 阅读 · 0 评论 -
Python学习笔记(二十四):在 linux 系统下使用 fork() 创建子进程
进程:编写完毕的代码,在没有运行的时候,称之为程序;正在运行的代码,就称之为进程;进程,除了包含代码以外,还有需要运行的环境等,所以和程序是有区别的;fork() 方法创建子进程:Python 的 os 模块,封装了常见的系统调用,其中就包括 fork(),可以在 python 程序中轻松的创建子进程;注意:fork() 方法只能用在类 linux 系统下,不能用在 windows 系统下;先看下面一段代码:# 导入 os 模块import os# 调用 for.原创 2020-06-23 17:57:57 · 1690 阅读 · 0 评论 -
Python学习笔记(二十三):在运行的时候动态添加属性和方法
动态语言和静态语言的区别:静态语言:先编译,后运行;像 C、C++、Java 等;编译之后什么样,运行的时候就是什么样;并且静态语言的类中有哪些属性,以及哪些方法,在定义类的时候就已经指定好了,在使用类的时候不能修改;动态语言:不需要编译,直接运行,并且可以在运行的过程修改代码,即可以为类以及对象动态添加属性或者方法;像 Python、javascript、php 等;动态给对象添加属性:# 定义一个类class Person(object): # 初始化方法:为对象初始化.原创 2020-06-23 13:42:39 · 417 阅读 · 0 评论 -
Python学习笔记(二十二):装饰器
装饰器:如果有一些函数,已经实现了某些功能,要求在不修改这些函数源代码,并且调用名称不变的前提下,对这些函数的功能进行一些扩展,就可以使用装饰器来实现;比如存在如下两个函数:# 定义两个函数def test1(): print("=== test1 ===")def test2(): print("=== test2 ===")# 调用函数test1()test2()要求不能修改原函数的代码,以及调用名称不变的情况下,对函数功能进行扩展: # 定义一个通原创 2020-06-23 11:55:40 · 190 阅读 · 0 评论 -
Python学习笔记(二十一):函数名重名
函数名重名:在其他语言中,如果存在函数名相同,参数也相同,返回类型也相同的情况,会出现错误;但是在 python 中不会出错,而是后定义的函数,会覆盖掉先定义的函数;如下代码:# 定义两个函数,名称相同def test(): print("=== test1 ===")def test(): print("=== test2 ===")# 调用函数test()输出结果:这是因为:第一次定义函数 test() 的时候,python 解析器会在内存中开辟一个原创 2020-06-23 11:47:53 · 2836 阅读 · 0 评论 -
Python学习笔记(二十):闭包
接上一篇文章:Python学习笔记(十九):函数引用闭包:在一个函数内部再定义一个函数,并且这个函数用到了外部函数的变量,那么就称这个内部函数为闭包;# 定义一个函数def test(num): print("=== 1 ===") # 在函数内部再定义一个函数,并且这个函数用到了外部函数的变量, # 那么就称这个内部函数为闭包 def test_in(num2): print("=== 2 ===") print(num .原创 2020-06-23 11:45:02 · 145 阅读 · 0 评论 -
Python学习笔记(十九):函数引用
函数引用:先看下面一段代码:# 定义一个函数def test(): print("=== test ===")test()print(test)输出结果:从输出结果可以看出:当函数名带有小括号的时候(test()),表示调用该函数;但是如果函数名不带有小括号(test),就表示一个指向函数块的对象,此时 test 表示函数的引用; <function test at 0x009994A8> 表示该对象是 function 类型的,对象名为 test,原创 2020-06-23 11:41:46 · 1516 阅读 · 0 评论 -
Python学习笔记(十八):property 的用法
1、为私有属性添加 getter、setter 方法:有些时候,我们需要设置类中的属性是私有的,让外部不能直接操作属性,而是通过属性的 getter 和 setter 方法,间接操作私有属性; # 定义一个类class Money(object): # 初始化方法 def __init__(self): # 私有属性 self.__money = 100 # 公有的 getter 方法 def getMoney(self):原创 2020-06-21 19:16:51 · 181 阅读 · 0 评论 -
Python学习笔记(十七):模块 和 包
模块:python 中的模块相当于 C/C++ 中的头文件,在 C/C++ 中需要通过 #include 导入头文件,才可以使用头文件中的函数,而在 python 中导入模块,要使用 import 关键字,导入模块之后,才可以使用模块中的方法;python 中的模块是以 .py 为后缀的文件,它既可以包含函数,也可以包含变量;模块文件也是源码文件;python 中的所有模块,可以在安装路径下的 lib 文件夹下查看,如下所示:ubuntu 环境下 python3 模块的位置在 /user原创 2020-06-20 22:59:04 · 1167 阅读 · 0 评论 -
Python学习笔记(十六):异常处理机制
python 中捕获异常的基本用法:# try 语句是正常执行的代码try: # 打开文件(读取中文数据时需要指定 encoding 参数) fd = open("a.txt", "r", encoding="UTF-8") try: # 循环一行一行读取文件 while True: line = fd.readline() # 如果读取结束,退出循环 if (len(原创 2020-06-13 22:12:45 · 475 阅读 · 0 评论 -
Python学习笔记(十五):python 中的面向对象
和其他编程相比,python 在尽可能不增加新的语法和语义的情况下加入了类机制; python 中的类提供了面向对象编程的所有基本功能:封装,继承,多态; 类的定义:python 中定义类的语法如下:class 类名: 属性列表 方法列表# 定义一个类:以 class 关键字开始,后跟类名,然后以冒号结尾class Cat: # 属性 name = "" age = 0 # 方法(self 后面再讲) def e..原创 2020-06-13 10:58:11 · 376 阅读 · 0 评论 -
Python学习笔记(十四):文件的读写
打开文件:python 内置的 open() 方法用于打开一个文件,并返回文件对象,在对文件进行处理过程中,都需要使用这个对象;注意:使用 open() 方法操作文件之后,一定要调用 close() 方法关闭文件;open() 方法常用形式是接收两个参数,file(文件名)和 mode(打开模式):open(file, mode);完整的语法格式为:open(file, mode='r', buffering=None, encoding=None, errors=None, newl原创 2020-06-12 17:05:07 · 520 阅读 · 0 评论 -
Python学习笔记(十三):函数
函数是组织好的,可以重复使用的,用来实现单一,或相关联功能的代码块; 函数能提高应用的模块性,和代码的重复利用率; 定义函数的规则: 函数代码块必须以 def 关键词开头,后接函数名称和小括号(); 需要传入函数的参数必须写在小括号中,参数不用指定类型; 当函数需要多个参数时,调用时根据顺序依次给参数赋值; 定义函数时小括号后面必须以冒号结尾; 函数体代码块不用使用大括号{},而是使用缩进; 函数中返回数据可以用 return 关键...原创 2020-06-12 10:37:40 · 196 阅读 · 0 评论 -
Python学习笔记(十二):迭代器与生成器
Python迭代器与生成器迭代器: 迭代是 Python 最强大的功能之一,是访问集合元素的一种方式; 迭代器是一个可以记住遍历的位置的对象; 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束; 迭代器只能往前,不能后退; 迭代器有两个基本的方法:iter() 和 next();iter() 用于创建迭代器对象,next() 用于访问下一个元素; 字符串、列表、元组等对象都可以创建迭代器; # 创建一个列表list1 = .原创 2020-06-11 15:32:22 · 168 阅读 · 0 评论 -
Python学习笔记(十一):循环语句
Python 循环语句while 循环:python 中没有 do ... while ... 循环;# 循环语句:求 1-100 的累积和i = 1sum = 0# while 语句必须以 冒号(:) 结尾while i <= 100: sum += i # 累加 i += 1 # 变量自加# 输出累加的和print(sum)循环语句嵌套条件语句:# 循环语句:求 1-100 中所有偶数的累积和i = 1sum = 0w原创 2020-06-11 15:28:17 · 223 阅读 · 0 评论 -
Python学习笔记(十):条件语句:
Python 条件语句:if else 条件语句:# input 获取到的所有数据,都被当做字符串类型处理age = input("请输入您的年龄:")# 将字符串类型的数据转换成整形int_age = int(age)# if else 条件语句必须以 冒号(:) 结尾,表示后面是满足条件后要执行的语句块;# python 的语句块不使用大括号{}来控制,而是使用缩进来控制;同一个语句块中的语句,必须拥有相同的缩进数量;if int_age >= 18: print原创 2020-06-11 14:41:45 · 140 阅读 · 0 评论 -
Python学习笔记(九):数据类型之 Set
Set(集合) 集合(set)是一个无序,不重复元素序列; 可以使用大括号 { } 或者 set() 函数创建集合。注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典; # 定义一个集合:集合是一个无序,不重复元素序列peoples = {'jack', 'lily', 'jack', 'lucy', 'tom'}print(type(peoples)) # 集合的数据类型print(peoples)原创 2020-06-11 11:53:50 · 586 阅读 · 0 评论 -
Python学习笔记(八):数据类型之 Dictionary
Dictionary(字典) 字典(dictionary)是 Python 中另一个非常有用的内置数据类型。 列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。 字典是一种映射类型,字典用大括号 { } 标识,它是一个无序的 键(key) : 值(value) 的集合。 键(key)必须使用不可变类型,如数字、字符串、元组。 在同一个字典中,键(key)必须是唯一的;如果一个 key 出现两次,后面的赋值原创 2020-06-11 11:30:08 · 497 阅读 · 0 评论 -
Python学习笔记(七):数据类型之 Tuple
Tuple(元组) 元组(tuple)与列表类似,不同之处在于元组的元素不能修改。 元组写在小括号 () 里,元素之间用逗号隔开(列表用中括号 [])。 元组中的元素类型也可以不相同。 # 定义一个元组:# 元组的元素写在小括号里;# 元组的元素类型可以不相同;tuple1 = ("how", "are", True, 22, 3.14)print(tuple1) # 输出元组的值# 元组的元素不能修改(字符串的也不能修改,但是列表的元素可以修改)tuple1[原创 2020-06-11 10:44:24 · 358 阅读 · 0 评论 -
Python学习笔记(六):数据类型之 List
序列是 python 中最基本的数据类型。序列中的每个元素都分配一个索引,索引从 0 开始;python 有六个序列的内置类型,最常见的是列表和元祖;序列都可以进行的操作,包括索引、切片、加、乘、检查成员;此外,python 已经内置确定序列的长度,以及确定最大和最小的元素的方法;List(列表) List(列表) 是 Python 中使用最频繁的数据类型。 List 可以完成大多数集合类的数据结构实现。列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓..原创 2020-06-11 10:12:29 · 915 阅读 · 1 评论 -
Python学习笔记(五):数据类型之 String
字符串(String): python 中的字符串用单引号(' ')或双引号(" ")括起来,同时使用反斜杠(\)对特殊字符进行转义; python 中单引号和双引号用法完全相同; python 中使用三引号(''' 或 """)可以指定一个多行字符串; #!/usr/bin/python3str1 = "我是字符串"str2 = '我也是字符串'# ''' 或 """ 可以表示多行字符串# 注意:多行字符串中会保留 换行符 和 空格符str3 = '''我还是原创 2020-06-03 21:48:58 · 702 阅读 · 0 评论 -
Python学习笔记(四):数据类型之 Number
python3 中的数据类型:python3 中有六种标准的数据类型: Number(数字) String(字符串) List(列表) Tuple(元祖) Set(集合) Dictionary(字典) Python3 的六个标准数据类型中: 不可变数据 (3 个):Number(数字)、String(字符串)、Tuple(元组); 可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。 N.原创 2020-05-28 21:21:41 · 486 阅读 · 0 评论 -
Python学习笔记(三):运算符
python 语言支持以下类型的运算符:1、算术运算符:以下假设变量 a 为 10,变量 b 为 21: 运算符 描述 实例 + 加:两个对象相加 a + b 输出结果 31 - 减:得到负数或是一个数减去另一个数 a - b 输出结果 -11 * 乘:两个数相乘或是返回一个被原创 2020-05-28 20:58:58 · 773 阅读 · 0 评论 -
Python学习笔记(二):输入和输出
输出方法:print1、普通输出:直接输出一个字符串# print 方法用于输出数据,该方法会自动换行print("hello world")print("hello 你好")2、格式化输出:输出变量的值# print 输出变量的值# %d 相当于一个整形的占位符;%age 表示取变量 age 的值,然后替换到 %d 表示的占位符位置age = 22print("我今年%d岁"%age)# 替换多个占位符的情况# %s 是一个字符串占位符,只能用字符串变量来替换name原创 2020-05-28 20:48:37 · 196 阅读 · 0 评论 -
Python学习笔记(一):python 中变量的定义
python 中定义的变量可以不需要指定类型,但并不代表变量没有类型; 每个变量在定义的时候必须赋值,变量赋值以后该变量才会被创建; 给变量赋值以后,变量就有了类型,系统会自动识别是什么类型; 我们可以使用 type(变量名) 来查看变量的类型;score = 88 # 定义一个变量,变量中存储一个整数 88print(score) # 输出变量的值print(type(score)) # 输出变量的类型输出结果:applePrice = 5..原创 2020-05-28 20:41:12 · 456 阅读 · 0 评论