![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Python
后來-阳光也无法抵达深海
后来-阳光也无法抵达深海
展开
-
Python笔记-http服务器
import socket# HTTP服务器都是基于TCP的 socket 链接server_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)server_socket.bind(('192.168.1.5',9090))server_socket.listen(128)# 获取的数据是一个元组,元组里面有两个元素# 第0个元素是客户端的 socket 链接# 第1个元素是客户端的 IP 地址和 端口号client_sock原创 2021-02-03 19:44:09 · 150 阅读 · 0 评论 -
Python笔记-join方法的使用
# 进程和线程都有 join 方法import timeimport threadingx = 10def test(a,b): time.sleep(1) global x x = a + b# test(1,1)print(x)t = threading.Thread(taeget=test,args=(1,1))t.start()t.join() # join 让主线程等待print(x)...原创 2021-02-03 19:43:19 · 192 阅读 · 0 评论 -
Python笔记-queue队列
import multiprocessingimport queueq1 = multiprocessing.Queue() # 进程间通信q2 = queue.Queue() # 线程间通信# 创建队列时,可以指定最大长度,默认是0,表示不限q = multiprocessing.Queue(5)q.put('hello')q.put('world')q.put('python')q.put('java')q.put('github')print(q.full()原创 2021-02-02 20:36:55 · 169 阅读 · 0 评论 -
Python笔记-多进程
import multiprocessingimport timedef dance(m): for i in range(m): time.sleep(0.5) print('正在跳舞')def sing(n): for i in range(n): time.sleep(0.5) print('正在唱歌')if __name__ == '__main__': # target 表示执行的任务原创 2021-01-31 21:52:26 · 66 阅读 · 0 评论 -
Python笔记-线程间通信
import threadingimport timeimport queuedef produce(): for i in range(10): time.sleep(0.5) print('生产+++++面包{}{}'.format(threading.current_thread().name,i)) q.put('{}{}'.format(threading.current_thread().name,i))def consun原创 2021-01-31 21:51:10 · 65 阅读 · 0 评论 -
Python笔记-线程锁
import threadingimport time# 多个线程可以同时操作一个全局变量(多个线程共享全局变量)# 线程安全问题ticket = 20look = threading.Lock()def sell_ticekt(): global ticket while True: lock.acquire() if ticket > 0: time.sleep(0.1) ticket -原创 2021-01-31 21:50:15 · 79 阅读 · 0 评论 -
Python笔记-多线程开发
import threadingimport time# 多个线程可以同时操作一个全局变量(多个线程共享全局变量)# 线程安全问题ticket = 20def sell_ticekt(): global ticket while True: if ticket > 0: time.sleep(0.1) ticket -= 1 print('{}卖出了一张票,还剩{}张票'.format原创 2021-01-31 21:49:19 · 72 阅读 · 0 评论 -
Python笔记-多线程聊天
import socketimport threadingimport syss = socket.socket(socket.AF_INET,socket.SOCK_STREAM)s.bind(('169.254.50.193',8080))# file = open('chat.txt','w',encoding='utf8')def send_msg(): while True: msg = input('请输入你要发送的内容:') s.sendt原创 2021-01-31 21:48:27 · 119 阅读 · 1 评论 -
Python笔记-多任务
import threading,timedef dance(): for i in range(50): time.sleep(0.2) print('正在跳舞')def sing(): for i in range(50): time.sleep(0.2) print('正在唱歌')# 多个任务同时执行# 多线程,多进程,多线程+多进程# target 需要的是一个函数,用来指定线程需要执行的任务s1 =原创 2021-01-31 21:47:29 · 65 阅读 · 0 评论 -
Python笔记-文件上传和下载
文件上传到服务器import socket,ossever_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)sever_socket.bind(('169.254.50.193',9090))sever_socket.listen(128)client_socket,client_addr = sever_socket.accept()data = client_socket.recv(1024).decode('utf8')#原创 2021-01-31 21:46:29 · 68 阅读 · 0 评论 -
Python笔记-贪婪模式和非贪婪模式
# 贪婪模式:尽可能多的匹配# 非贪婪模式:尽可能少的匹配# 在贪婪模式后面加 ? 可以将贪婪模式转换为非贪婪模式import rem = re.search(r'm.*a','o3rjomjadas')print(m.group())n = re.search(r'm.*?a','o3rjomjadas')print(n.group())# 加号 + 出现一次或多次# 问号 ? 出现0次1或1次...原创 2021-01-30 21:56:22 · 98 阅读 · 0 评论 -
Python笔记-正则替换
# 正则表达式的作用是用来对字符串进行检索和替换# 检索:match,search,fullmatch,findall,finditer# 替换:sub 第一个参数是正则表达式,第二个参数是新字符,第三个1参数是需要被替换的import ret = 'afo2d1kf23af245qou3095'print(re.sub(r'\d','x',t))print(re.sub(r'\d+','x',t))p = 'hello34good23'def test(x): y = int原创 2021-01-29 21:32:20 · 78 阅读 · 0 评论 -
Python笔记-正则字母的特殊含义
import re# 字母表示它本身,很多字母前面加 \ 会有特殊含义# \n 表示换行 \t 表示制表符 \s 空白字符 \StopIteration 非空白字符# \d 表示数字 等价于 [0-9] 只能匹配到一个 +加号可以匹配到多个print(re.search(r'x\d+p','x243p'))print(re.search(r'x\dp','x243p'))print(re.search(r'x[0-9]+p','x243p'))# ^ 除了表示以指定内容开始之原创 2021-01-29 21:30:18 · 298 阅读 · 0 评论 -
Python笔记-正则匹配模式
import reprint(re.search(r'\s','hello world')) # \s 表示任意的非打印字符print(re.search(r'\n','hello\nworld')) # 换行print(re.search(r'\t','hello\tworld')) # 制表符print(re.search(r'\S', ' \t \n xsdcfc')) # \S 表示非空白字符# 标点符号的使用# ():括号用来表示一个分组a = re.search(原创 2021-01-29 21:28:23 · 99 阅读 · 0 评论 -
Python笔记-正则修饰符
import re# 正则修饰符是对正则表达式进行修饰# re.S:让 . 匹配换行# re.I:忽略大小写# re.M 让 $ 能够匹配到换行# . 表示除了换行以外的任意字符x = re.search(r'm.*a','sdmfo\nejoasdl',re.S)print(x)y = re.search(r'x','good Xyz',re.I)print(y)# \w: 表示的是字母,数字和下划线_ +:出现一次以上 $:以指定的内容结尾z = re.findall(r原创 2021-01-29 21:26:46 · 143 阅读 · 1 评论 -
Python笔记-正则
# 正则表达式 用来处理字符串,查找替换# match 和 search 方法的执行结果是一个Match类型的对象# 在正则表达式里,匹配1个 '\' ,需要使用4个 '\\\\''# 第一个参数是正则匹配规则,第二个参数表示需要匹配的字符串import rex = 'hello\\nworld'm = re.search('\\\\',x)# 前面可以加一个 r 表示原生字符m = re.search(r'\\',x)print(m)'''查找相关的方法match: 查找字符串原创 2021-01-28 21:57:56 · 87 阅读 · 0 评论 -
Python笔记-斐波那契
def fiboonacci(n): num1 = num2 = 1 count = 0 while count <= n - 2: num1,num2 = num2,num1 + num2 count += 1 yield num1F = fiboonacci(12) # 此时并不会调用函数for i in F: print(i)结果123581321345589144Process原创 2021-01-27 21:47:44 · 96 阅读 · 0 评论 -
Python笔记-生成器
# 生成器的本质也是一个迭代器x = 5y = 10if x > y: z = xelse: z = yz = x if x > y else y # 三元表达式nums = [i for i in range(10)] # 列表生成式(推导式)print(nums)g = (i for i in range(10)) # 得到的结果是生成器for m in g: # 生成器是一个特殊的迭代器 print(m)# 迭代器是一个对原创 2021-01-27 21:46:29 · 78 阅读 · 0 评论 -
Python笔记-使用迭代器生成斐波那契数列
class Fibonacci(object): def __init__(self,n): self.n = n self.num1 = self.num2 = 1 self.count = 0 def __iter__(self): return self def __next__(self): self.count += 1 if self.count <= self.n:原创 2021-01-26 22:32:40 · 99 阅读 · 0 评论 -
Python笔记-迭代器的使用
from collections.abc import Iterableclass Demo(object): def __init__(self,x): self.x = x self.count = 0 def __iter__(self): # 只要重写了 __iter__ 方法就是一个可迭代对象 # f = Foo() return self def __next__(self): #原创 2021-01-26 22:31:08 · 64 阅读 · 0 评论 -
Python笔记-可迭代对象
# 可迭代对象: list tuple dict set str range filter map# for...in 可迭代对象# for...in 循环的本质就是调用可迭代对象的 __iter__ 方法,获取到这个方法的返回值# 这个返回值需要一个对象,然后再调用这个对象的 __next__ 方法from collections.abc import Iterable# class Foo(object):# def __next__(self):# retu原创 2021-01-26 22:29:41 · 64 阅读 · 0 评论 -
Python项目-名片管理系统
"""名片管理系统:1.添加名片2.删除名片3.修改名片4.查询名片5.显示所有名片6.推出系统"""user_list = []def add_user(): # 让用户输入信息 name = input('请输入用户名:') # 当用户输入用户名后,查询列表,看用户是已经存在 for u in user_list: if u['name'] == name: print('用户名已存在')原创 2021-01-26 22:26:28 · 137 阅读 · 0 评论 -
Pyth笔记-高级装饰器
def can_play(clock): print('最外层函数被调用了,clock = {}'.format(clock)) def handle_action(fn): print('handle_action被调用了') def do_action(name,game): if clock < 21: fn(name,game) else:原创 2021-01-25 21:09:45 · 69 阅读 · 0 评论 -
Python笔记-上下文管理器
# with 语句后面的结果对象,需要重写 __enter__ 和 __exit__方法# 当进入到 with 代码块时,会自动调用 __enter__ 方法里的代码# 当 with 代码块执行完成以后,会自动调用 __exit__ 方法class Demo(object): def __enter__(self): print('__enter__方法被执行了') return self def __exit__(self, exc_type, ex原创 2021-01-25 21:06:24 · 66 阅读 · 0 评论 -
Python笔记-finally关键字的使用
def test(a,b): x = a + b return x # 一旦出现 return 就表示函数结束 return 'hello' # 这段代码不会被执行,一般情况下,一个函数最多只能执行一个return语句def demo(a,b): try: x = a / b except ZeroDivisionError: return '除数不能为0' else: return x fi原创 2021-01-24 21:10:04 · 93 阅读 · 0 评论 -
Python笔记-基础知识
# 求绝对值a = abs(-6)print(a)# 元素都为真返回True,反之返回Falseb = all([1,2,5,4,6,0,7,8,])print(b)# 元素至少一个为真返回True,否则返回Falsec = any([1,2,5,4,6,0,7,8,])print(c)# 定义元组时,()括号也可以省略,元素之间用逗号隔开d = 1,2,3,4,5,6,print(d)print(type(d))# 当元组里面只有一个元素时,逗号也不能省略e1 = (5)原创 2021-01-23 21:19:07 · 150 阅读 · 0 评论 -
Python笔记-异常处理
# 在程序运行过程中,由于某种原因导致程序无法正常执行def div(a,b): return a / btry: x = div(5,0) print('hahaha')except Exception as e: print('程序出错了!!!')else: print('程序没有问题')# try...except 语句用来处理程序运行中的异常...原创 2021-01-23 21:17:21 · 78 阅读 · 0 评论 -
Python笔记-pickl模块的使用
# Python里存入数据只支持存入 字符串 和 二进制# json:将Python里的数据(str/list/tuple/dict/int/float/bool/None)等转换为对应的json类型1# pickle:将Python里任意的对象转换成二进制import pickle# 序列化: dump:将Python数据转换为二进制同时保存到指定文件# dumps:将Python数据转换为二进制# 反序列化:load:读取文件并将文件的二进制内容加载成为Python数据原创 2021-01-22 21:08:01 · 455 阅读 · 0 评论 -
Python笔记-2021-01-22
# 序列化:将数据从内存持久化保存到硬盘的过程# 反序列化:将数据从硬盘加载到内存的过程# write时,只能写入字符串或二进制,字典,列表,数字等都不能直接写入到文件里# 写入方法:# 可以将数据转换成二进制或字符串写入 repr/str() json模块 pickle模块# json 本质就是字符串import jsonfile = open('xxx.txt','w',encoding='utf8')names = ['zhangsan','lisi','wangwu','cu原创 2021-01-22 21:06:24 · 72 阅读 · 0 评论 -
Python笔记-sys模块的使用
import sys# sys.stdin 接收用户的输入,读取键盘里的数据# sys.stdout 标准输出# sys.stderr 错误输出s_in = sys.stdin # input就是读取sys.stdin里的数据while True: content = s_in.readline().rstrip('\n') if content == '': break print(content)sys.stdout = open('stdo原创 2021-01-22 21:05:16 · 144 阅读 · 0 评论 -
Python笔记-将数据写入到内存
from io import StringIO,BytesIOs_io = StringIO()s_io.write('Hello ') #把数据写入到内存里缓存s_io.write('Python')print(s_io.getvalue())s = ''s += 'hello's += 'world'print(s)print('hello',file=open('xxx.txt','w')) # file是一个文件流对象print('good',file=s_i原创 2021-01-22 21:03:18 · 1273 阅读 · 1 评论 -
Python笔记-csv文件的读写
import csvfile = open('demo.csv','w',encoding='utf8',newline='')w = csv.writer(file)w.writerow(['name','age','score','city'])# w.writerow(['张三','20','100','上海'])# w.writerow(['李四','22','100','武汉'])# w.writerow(['王五','25','100','北京'])w.writerows(原创 2021-01-21 20:54:40 · 117 阅读 · 0 评论 -
Python笔记-文件拷贝
import osfile_name = input('请输入一个文件路径:')if os.path.isfile(file_name): # 判断是否是文件 # 打开旧文件 old_file = open(file_name,encoding='utf8') names = os.path.splitext(file_name) new_file_name = names[0] + '.bak' + names[1] new_file = open(new_原创 2021-01-21 20:52:23 · 66 阅读 · 0 评论 -
Python笔记-文件的打开方式
在这里插入代码片# 在windows里默认gbK编码# mode 指的是文件的打开方式# r 只读模式,是默认值,只能读取,不能写入# w 写入模式,打开文件后只能写入,不能读取,如果文件存在,会覆盖文件,如果文件不存在,会创建文件# b 以二进制的形式打开文件,用来操作非文本文件# rb 以二进制读取 wb 以二进制写入# a 追加模式,会在最后追加内容。如果文件不存在,会建文件,如果文件存在,会追加# r+ 可读写 如果文件不存在会报错# w+ 可读写 如果文件不存在,会创建文件;原创 2021-01-20 21:14:54 · 112 阅读 · 0 评论 -
Python笔记-文件的路径
"""绝对路径相对路径:../上一级1文件夹 ./当前文件夹"""import osprint(os.name)print(os.sep) # 在windows系统里,文件夹之间使用 \ 分隔# 在Python的字符串里,\ 表示转义字符# file = open('C:\Users\TR\Desktop\Python教程2020版代码\xxx.txt') 会报错"""文件名路径的三种方法:1.两个反斜杠\\2.转义字符 r3./ 斜杠"""file1 = open(原创 2021-01-20 21:12:26 · 80 阅读 · 0 评论 -
Python笔记-文件的读取
# Python里使用内置函数 open 打开并操作一个文件"""open 参数介绍:file:用来指定打开的1文件(不是文件的名字1,而是文件的路径)mode:打开1文件的模式,默认是 r ,表示只读encoding:打开文件时的编码方式open函数会有一个返回值,打开的文件对象写入和读取的编码要一致操作完成文件后要关闭"""file = open('xxx.txt',encoding ='utf8')print(file.read())file.close()结果人生苦短,原创 2021-01-20 21:10:56 · 58 阅读 · 0 评论 -
Python笔记-2021-01-20
# 继承特点:如果一个类A继承自类B,由类A创建出来的实例对象都能直接使用类B里定义的方法class Person(object): def __init__(self,name,age): self.name = name self.age = age def sleep(self): print(self.name + '正在睡觉')class Student(Person): def __init__(self,name,ag原创 2021-01-20 21:08:58 · 103 阅读 · 0 评论 -
Python笔记-新式类和经典类
"""新式类:继承自 object 的类经典类:不继承自 object 的类"""class Student(object): # 手动指定 Student 类继承自 object passclass Dog: # 没有指定 Dog 的父类,python3里默认1继承自 object passs = Student()d = Dog()...原创 2021-01-19 21:15:53 · 65 阅读 · 0 评论 -
Python笔记-私有属性的继承特点
class Animal(object): def __init__(self,name,age): self.name = name self.age = age self.__money = 1000 def eat(self): print(self.name + '正在吃东西') def __test(self): print('我是Animal里的__test方法')class Person原创 2021-01-19 21:14:42 · 139 阅读 · 1 评论 -
Python笔记-继承的使用
class Animal(object): def __init__(self, name, age): self.name = name self.age = age def sleep(self): print(self.name + '正在睡觉')class Dog(Animal): # def __init__(self,name,age): # self.name = name # self.原创 2021-01-19 21:13:20 · 69 阅读 · 0 评论