自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 第一个Django项目

查看虚拟环境:workon 创建虚拟环境:mkvirtualenv -p /usr/bin/python3 环境名 安装Django:pip install django==版本号 -i http://pypi.douban.com/simple --trusted-host pypi.douban.com 新建Django项目:django-admin startproject 项目名 开启服务:python manage.py runserver 0.0.0.0:8000 然后在浏览器中访问1

2021-07-26 10:19:56 152

原创 CSS入门

CSS样式:层叠样式表(Cascading Style Sheets)是一种用来表现HTML或XML等文件样式的计算机语言。CSS不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。 CSS作用:CSS就是网页的化妆师,可以让页面变得更加美观。 使用方法:1. 直接写在标签 2. 写在style 标签内 3. 使用外部 .css 文件 外部css文件:<link rel="stylesheet" href="index.css"> css选择器 <!DOCTYP.

2021-06-30 09:29:13 139

原创 HTML简介

标签特点: 标签都是尖括号包裹关键字组成 标签不区分大小写 html5 规定必须小写 双标签:第一个是开始标签 第二个是结束标签 单标签:自闭和闭合 快级标签介绍 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <!--标题标签,数字越大,标题

2021-06-27 10:33:19 142

原创 ..协程.

生成器 通过生成器来实现对函数的反复输入和输出,这样的输入和输出同样可以用来传递数据 def func(): while True: y = yield # 接收数据 print(y) a = func() # 必须要通过next()预激活,先到达yield位置,不然接收不到send发送过来的数据 next(a) # 发送数据 a.send(111) a.send(222) a.send(333) 生成器实现协程 import time # 消费者:接收数据,

2021-06-24 21:43:48 113

原创 进程池与线程池

可重复利用的线程 队列计数器 队列自己内部有一个计数器,当计数为0时,join不会阻塞,否则就会阻塞 利用生产者与消费者模型,实现线程的重复利用。 主进程可以看成生产者,主要产生任务 线程作为消费者主要处理任务 import queue import threading import time class MyThred(threading.Thread): def __init__(self): super().__init__() self.daemon =

2021-06-22 09:52:08 119

原创 *并发通信*

进程通信隔离 进程间的隔离,可以看到在不同进程中,即使声明了全局变量,也还是没有作用 import multiprocessing var = 10 def func(): global var var += 1 print('inner:', var) return var p1 = multiprocessing.Process(target=func) p1.start() p1.join() print('outer:', var) 进程信息共享 Mana

2021-06-21 09:14:26 114

原创 线程与进程补充

面向对象编程 在使用多进程或者多线程时,对应模块可以直接使用,也可以继承之后,定制使用 import multiprocessing import redis class RedisProcess(multiprocessing.Process): def __init__(self, db, key, value): super().__init__() # 把实例化的对象变成进程对象 self.connect = redis.Redis(db=db) #

2021-06-20 07:58:46 78

原创 进程与线程

多进程适合计算密集型的情形 多线程适合IO密集型的场景 单一进程 使用睡眠来模拟耗时操作,查看真个程序的运行时间 import time def new_time(): #格式化时间,获取当前准确时间 return time.asctime(time.localtime(time.time())) def fun(): print('inner-start',new_time()) time.sleep(5) #休眠5秒钟,模拟耗时操作 print('inn

2021-06-20 07:51:56 81

原创 非阻塞套接字与IO多路复用

非阻塞IO 利用异常处理来处理非阻塞IO产生的异常 import socket server = socket.socket() # 生成一个socket对象 server.setblocking(False) # 设置非阻塞套接字 server.bind(('127.0.0.1', 5959)) # 绑定IP 端口 server.listen(5) # 监听数量 也就是允许连接客户端数量 # 一直接收 避免阻塞 while True: try: conn, addr =

2021-06-18 08:32:07 146

原创 传输模型与套接字

本文使用环境为 pycharm远程连接Ubuntu python3.6 本文实现一个简单的客户端和服务端 服务端 import socket server = socket.socket() #生成一个socket对象 server.bind(('127.0.0.1', 8989)) 绑定IP 端口 #print(server) server.listen(5) #监听数量 也就是允许连接客户端数量 conn, addr = server.accept() #对等套接字为一个元祖对象 进行元祖拆包 d

2021-06-17 10:18:51 86

原创 爬虫中params的快速转换

封装函数直接使用

2021-05-14 20:49:06 303

原创 生成器和装饰器、异常

装饰器和异常 通过yield关键字将函数对象变成迭代器对象,这种叫做生成器 生成器的本质就是迭代器 ##def func(): print(111) yield 1 print(222) yield 2 print(333) yield 3 斐波那契数列 end是次数 ##def fib(end): # n是初始次数值,a,b都是开始的两个值 n,a,b = 0,0,1 while n<end: a,b = b,a+b yield b n += 1 装饰器 装饰器的本质就是利用了闭包 调用的时候以一个

2021-04-24 19:54:44 80

原创 面向对象高级提升和魔法方法、协议

面向对象高级 ##class Person: def init(self,name,age): self.name = name self.age = age 增删改查 hasattr(anyan,‘name’) 判断属性存不存在 getattr(anyan,‘name’) 获取属性的属性值 setattr(anyan,‘age’,3) 无则增,有则改 delattr(anyan,‘sex’) 删除属性 issubclass(Hunan,Person) 判断前面的类是不是后面类的子类 isinst

2021-04-22 15:04:47 165 1

原创 面向对象基本概念和类定义、继承、多继承

面向对象 面向对象介绍 ##name = ‘anyan’ ##age = 18 ##sex = ‘female’ ##def do(): print(f’{name}会敲代码’) class关键字用来定义类 类的命名:以驼峰命名法进行命名 类里面的变量叫做类的属性,通过名词去表示属性 类里面的函数叫做类的方法,通过动词去表示方法 ##class Person: # 相当于一个模板 name = ‘xiaobai’ age = 18 sex = ‘male’ def eat(): print(‘干饭’) #

2021-04-16 20:05:18 146

原创 文件基本操作

文件 文件的打开 打开文件使用open()函数 第一个参数:打开的文件名 第二个参数:打开模式,默认以只读(r)去打开文件 1.r:只读方式打开,只能打开已经存在的文件 2.w:只写方式打开,如果文件不存在,则会创建文件 每次打开文件的时候,都会覆盖原先之前的旧文件 3.a:追加,如果文件不存在,则创建新文件 不会覆盖文件原先的内容 相对路径:./代表同级路径,或者不写也是一样的 …/代表上一级路径 绝对路径:从电脑的磁盘位置出发 ##open(r’test1.txt’,‘a’) 文件的写入 write()

2021-04-13 23:34:04 509

原创 函数基本概念和函数参数、作用域

函数的定义和调用 ##while True: phone = input(‘请输入一个手机号:’) if phone.isdigit() and len(phone)==11: print(‘这是一个正确的手机号’) break else: print(‘这不是一个手机号’) 自定义函数 def是定义函数的关键字 isPhone是函数名(自定义) 括号里的phone是参数 函数调用:函数名(参数值) ##def isPhone(phone): if phone.isdigit() and len(phone

2021-04-07 19:09:39 313

原创 字符串方法和散列类型-字典、集合

字符串 字符串本身不能够修改 ##str1 = ‘hello world’ str1.replace(‘h’,‘a’) 替换,将h替换成a,原字符串不做更改 str1.replace(‘l’,‘c’,1) 默认符合条件会全部替换,第三个参数表示替换几个 str1.upper() 大写 str2.lower() 小写 str1.capitalize() 首字母大写 str1.title() 标题形式 ##s = ’ hello world ’ s.strip() 去掉两边空格 s.

2021-04-06 07:48:26 216

原创 迭代循环和序列类型-列表、元祖

for循环 计数循环 i是代表接收到字符串遍历出来的每一个元素 'python’是可迭代对象 循环的次数由可迭代对象的长度决定 ##for i in ‘python’: print(i) range() 左闭右开 只能传入整数 range(结束值) 默认从0开始 range(开始值,结束值) range(开始值,结束值,步长) ##for i in range(5,10,6): print(i) 查看是否是可迭代对象的方法 dir(对象) 有’iter’就是可迭代对象 for循环也能够和else混

2021-03-29 18:50:31 326

原创 条件语句和while循环

程序执行三大流程 顺序执行 选择执行 循环执行 选择执行: if 如果 判断条件 =为赋值 ==为判断是否相等 !=为 不等 三目运算 为真的时候执行 if 判断表达式 else 为假 逻辑运算 与(两者条件为真且为真)或(两者有一个为真且为真) 逻辑短路 循环执行 if语句 注释 alt+3 取消注释 alt+4 ##tianqi = ‘tianqing’ if判断语句 ##if tianqi != ‘tianqing’: # 缩进 一个Tab键或者四个空格 print(‘在家学习’

2021-03-26 20:44:36 758

原创 Python基本概念和基本数据类型

这里写自定义目录标题标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 标题 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何

2021-03-20 22:28:46 143

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除