自定义博客皮肤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 108

原创 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 101

原创 HTML简介

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

2021-06-27 10:33:19 99

原创 ..协程.

生成器通过生成器来实现对函数的反复输入和输出,这样的输入和输出同样可以用来传递数据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 73

原创 进程池与线程池

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

2021-06-22 09:52:08 72

原创 *并发通信*

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

2021-06-21 09:14:26 82

原创 线程与进程补充

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

2021-06-20 07:58:46 45

原创 进程与线程

多进程适合计算密集型的情形多线程适合IO密集型的场景单一进程使用睡眠来模拟耗时操作,查看真个程序的运行时间import timedef 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 54

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

非阻塞IO利用异常处理来处理非阻塞IO产生的异常import socketserver = 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 113

原创 传输模型与套接字

本文使用环境为 pycharm远程连接Ubuntupython3.6本文实现一个简单的客户端和服务端服务端import socketserver = 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 53

原创 爬虫中params的快速转换

封装函数直接使用

2021-05-14 20:49:06 267

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

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

2021-04-24 19:54:44 50

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

面向对象高级##class Person:def init(self,name,age):self.name = nameself.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 125 1

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

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

2021-04-16 20:05:18 115

原创 文件基本操作

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

2021-04-13 23:34:04 454

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

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

2021-04-07 19:09:39 263

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

字符串 字符串本身不能够修改##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 182

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

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 278

原创 条件语句和while循环

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

2021-03-26 20:44:36 699

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

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

2021-03-20 22:28:46 98

空空如也

空空如也

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

TA关注的人

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