python学习
陈弟弟
不知道自己在干嘛
展开
-
Python学习笔记27-元类、元类实现ORM
1.类也是对象类本身是用来创建对象的,但同时类自己也是对象,由元类创建的对象2.创建类的方法:(1)正常创建类的方法:class TestA(object): num1=100 num2=200 def testA(): pass用help查看TestA类(2)使用type方法创建类def testB(): pass#type(类名, 由父类名称组成的元组(针对继承的情况,可以为空),包含属性的字典(名称和值)) Test2 = type("TestB",(object原创 2020-07-13 11:33:21 · 138 阅读 · 0 评论 -
Python学习笔记26-mini-web框架-路由支持正则
1.利用正则对路由进行判断灵活匹配调用合适的方法2.添加一个关注的函数1)前端让添加按钮具备返回数据让正则匹配为http://127.0.0.1:7890/add/(\d+).html的形式2)让add函数对返回的请求作出分析并返回结果3.取消关注1)前端让删除按钮具备返回数据让正则匹配为http://127.0.0.1:7890/del/(\d+).html的形式2)让del_focus函数对返回的请求作出分析并返回结果4.修改股票信息1)前端让修改按钮具备返回数据让正则匹配为htt原创 2020-07-12 16:02:11 · 247 阅读 · 0 评论 -
Python学习笔记25-mini_web框架添加路由以及MySQL功能
1.引入路由的概念解决程序判断执行哪个页面(1)使用字典来导入路由(2)使用代参数的装饰器来导入路由1)方案1:import reURL_FUNC_DICT = dict()def route(url): def set_func(func): URL_FUNC_DICT[url] = func # 相当于 URL_FUNC_DICT["/index.py"] = index def call_func(*args,**kwargs):原创 2020-07-11 16:53:47 · 362 阅读 · 0 评论 -
Python学习笔记24-闭包、装饰器
1、闭包定义: 在函数内部再定义一个函数,并且这个函数用到了外边函数的变量,那么将这个函数以及用到的一些变量称之为闭包例子:def line(k,b): def create_y(x): print(k * x + b) return create_ylineA = line(1,2)lineA(1)lineA(2)lineA(3)闭包和函数的区别在于,返回的不止一个函数,同时返回了数据修改闭包的全局变量不是使用global,使用nonlocal2、装饰器...原创 2020-07-11 09:31:29 · 107 阅读 · 0 评论 -
Python学习笔记23-WSGI、miniweb框架
1、完善静态服务器(1)封装web服务器(应用前面学习的web静态服务器)将前面学习过的学习过的并发web服务器的多进程http服务器封装起来:import socketimport reimport multiprocessingclass WSIGServer(object): def __init__(self): # 1. 创建套接字 self.tcp_sever_socket = socket.socket(socket.AF_INET,socket.SOCK_STREA原创 2020-07-10 11:19:44 · 121 阅读 · 0 评论 -
Python学习笔记22-Mysql拓展
1、sql语句参数化防止sql注入(使用%s作为占位符)from pymysql import *def main(): find_name = input("请输入物品名称:") # 创建Connection连接 conn = connect(host='localhost',port=3306,user='root',password='mysql',database='jing_dong',charset='utf8') # 获得Cursor对象 cs原创 2020-07-08 11:39:19 · 136 阅读 · 0 评论 -
Python学习笔记21-MySQL与Python的交互
1、准备数据1)创建数据表– 创建 “京东” 数据库create database jing_dong charset=utf8;– 使用 “京东” 数据库use jing_dong;– 创建一个商品goods数据表create table goods( id int unsigned primary key auto_increment not null, name varchar(150) not null, cate_name varchar(40) not原创 2020-06-27 09:50:15 · 171 阅读 · 0 评论 -
Python学习笔记20-数据库查询
1、创建条件背景:(1)创建数据库、数据表创建数据库create database python_test_1 charset=utf8;– 使用数据库use python_test_1;– students表create table students( id int unsigned primary key auto_increment not null, name varchar(20) default '', age tinyint unsigned defa原创 2020-06-21 14:49:17 · 577 阅读 · 0 评论 -
Python学习笔记19-SQL语句的使用
1、数据的完整性一个数据库就是一个完整的业务单元,可以包含多张表,数据被存储在表中在表中为了更加准确的存储数据,保证数据的正确有效,可以在创建表的时候,为表添加一些强制性的验证,包括数据字段的类型、约束(1)数据类型可以通过查看帮助文档查阅所有支持的数据类型使用数据类型的原则是:够用就行,尽量使用取值范围小的,而不用大的,这样可以更多的节省存储空间常用数据类型如下:整数:int,bit小数:decimal字符串:varchar,char日期时间: date, time, datet原创 2020-06-13 15:40:07 · 349 阅读 · 0 评论 -
Python学习笔记18-MySql的安装、Navicat的安装使用
1、MySQL的安装(1)服务器端安装安装服务器端:在终端中输入如下命令,回车后,然后按照提示输入sudo apt-get install mysql-server当前使用的ubuntu镜像中已经安装好了mysql服务器端,无需再安装,并且设置成了开机自启动服务器用于接收客户端的请求、执行sql语句、管理数据库服务器端一般以服务方式管理,名称为mysql启动服务sudo service mysql start查看进程中是否存在mysql服务ps ajx|grep mysql原创 2020-06-12 10:45:06 · 233 阅读 · 0 评论 -
Python学习笔记17-魔法属性、with与“上下文管理器”
魔法属性doc表示类的描述信息class Foo: """ 描述类信息,这是用于看片的神奇 """ def func(self): passprint(Foo.__doc__)#输出:类的描述信息module 和 classmodule 表示当前操作的对象在那个模块class 表示当前操作的对象的类是什么test.py# -*- coding:utf-8 -*-class Person(object): def __init原创 2020-06-07 21:51:51 · 130 阅读 · 0 评论 -
Python学习笔记16-property属性
1、property属性:将一个方法以属性的方式调用;方法通常返回的是一个值,调用的时候通常直接调用属性不用带括号。class Foo: def func(self): return 100 # 定义property属性 @property def prop(self): return 100# ############### 调用 ###############foo_obj = Foo()print(foo_obj.func()原创 2020-06-07 18:06:08 · 121 阅读 · 0 评论 -
Python学习笔记15-多继承、类属性、实例属性、类方法、实例方法、静态方法
一、多继承1、重写延用父类的方法1)父类名字.父类方法print("******多继承使用类名.__init__ 发生的状态******")class Parent(object): def __init__(self, name): print('parent的init开始被调用') self.name = name print('parent的init结束被调用')class Son1(Parent): def __init__原创 2020-06-07 15:00:30 · 182 阅读 · 0 评论 -
python学习笔记14-私有化、import
1、私有化xx: 公有变量_x: 单前置下划线,私有化属性或方法,from somemodule import *禁止导入,类对象和子类可以访问__xx:双前置下划线,避免与子类中的属性命名冲突,无法在外部直接访问(名字重整所以访问不到)__xx__:双前后下划线,用户名字空间的魔法对象或属性。例如:__init__ , __ 不要自己发明这样的名字xx_:单后置下划线,用于避免与Python关键词的冲突通过name mangling(名字重整(目的就是以防子类意外重写基类的方法或者属性)如:原创 2020-05-30 20:40:37 · 147 阅读 · 0 评论 -
Python学习笔记13-深拷贝和浅拷贝以及其他一些拷贝方式
1、浅拷贝:对于一个对象的顶层拷贝(只拷贝了应用,没有拷贝到内容)(1)直接赋值,默认浅拷贝传递对象的引用而已:(2)copy浅拷贝,没有拷贝子对象,所以原始数据改变,子对象会改变(3)浅拷贝对不可变类型和可变类型的copy不同copy.copy对于可变类型,会进行浅拷贝;copy.copy对于不可变类型(比如元组),不会拷贝,仅仅是指向,和直接赋值的浅拷贝相似。2、深拷贝:包含对象里面的自对象的拷贝,所以原始对象的改变不会造成深拷贝里任何子元素的改变。(1)(2)深拷贝对不可变类型原创 2020-05-30 17:10:55 · 125 阅读 · 0 评论 -
Python学习笔记12-GIL(全局解释器锁)
理解GIL(全局解释器锁):(1)GIL和多线程:每个线程在执行的过程都需要先获取GIL,保证同一时刻只有一个线程可以执行代码。这个问题只出现在使用Cpython解释器的时候,同时也是只出现在使用多线程的时候;(2)GIL和互斥锁:在使用线程的时候会避免多线程共享全局变量带来全局变量混乱的问题,我们引入了互斥锁(使用互斥锁解决代码中的资源竞争问题时,当一个线程执行时,会将全局共享的资源上锁,当线程执行完成后,将锁解开,释放资源,其他线程才能够使用。),GIL的作用与互斥锁的作用相似,是为了解决解释器原创 2020-05-30 17:00:10 · 120 阅读 · 0 评论 -
python学习笔记11-网络通信
MAC地址:在设备与设备之间数据通信时用来标记收发双方(网卡的序列号)IP地址:在逻辑上标记一台电脑,用来指引数据包的收发方向(相当于电脑的序列号)网络掩码:用来区分ip地址的网络号和主机号默认网关:当需要发送的数据包的目的ip不在本网段内时,就会发送给默认的一台电脑,成为网关集线器:已过时,用来连接多态电脑,缺点:每次收发数据都进行广播,网络会变的拥堵交换机:集线器的升级版,有学习功能知道需要发送给哪台设备,根据需要进行单播、广播路由器:连接多个不同的网段,让他们之间可以进行收发数据,每次收到原创 2020-05-29 15:54:05 · 104 阅读 · 0 评论 -
Python学习笔记10-web静态服务器
Web静态服务器1) 实现简单的http服务器import socketdef service_client(new_client_socket): """为客户端返回数据""" # 1. 接收浏览器发送过来的请求,即http请求 # GET / HTTP/1.1 new_client_socket.recv(1024) print(request) # 2. 返回http格式的数据给浏览器 # 2.1 准备发送给浏览器的数据----header response = "HTTP/原创 2020-05-17 18:12:15 · 181 阅读 · 0 评论 -
Python学习笔记9-TCP的三次握手、四次挥手
TCP3次握手,4次挥手(1)3次握手:(2)4次挥手注:由于第四次挥手时有一个时间等待状态导致服务端关闭客户端没有马上关闭的问题:通过SO_REUSEADDR套接字可以使得第四次挥手后服务端立即释放资源,下次连接可以重新绑定端口...原创 2020-05-17 18:08:39 · 188 阅读 · 0 评论 -
Python学习笔记8-Http协议
HTTP协议(1) 分析http协议1)打开网络调试助手作为服务端,通过浏览器连接获得浏览器发送过来的数据GET / HTTP/1.1GET表示一个读取请求,将从服务器获得网页数据,/表示URL的路径,URL总是以/开头,/就表示首页,最后的HTTP/1.1指示采用的HTTP协议版本是1.1。目前HTTP协议的版本就是1.1,但是大部分服务器也支持1.0版本,主要区别在于1.1版本允许多个HTTP请求复用一个TCP连接,以加快传输速度。Host:表示请求域名2)打开浏览器查看服务器响应的信息原创 2020-05-17 11:50:37 · 431 阅读 · 0 评论 -
python学习笔记7-正则表达式
正则表达式(1) re模块:可以通过正则表达式对字符串进行匹配 import re"""使用match方法进行匹配操作"""#result = re.match(正则表达式,要匹配的字符串)result = re.match("itcast","itcast.cn")""""如果上一步匹配到数据的话,可以使用group方法来提取数据"""ret=result.group()print(ret)(2) 利用正则表达式匹配单个字符 import re# 匹配任意一个字符res原创 2020-05-16 17:13:54 · 151 阅读 · 0 评论 -
python学习笔记6-多任务-线程、进程、协程
1、多任务:并行:执行方数量 ≥ 被执行任务数量并发:执行方数量 < 被执行任务数量并发: 注:(实际上总有一些任务不在执行,因为切换任务的速度相当快,看上去一起执行而已)2、主线程和子线程的理解:主线程会等待所有的子线程结束后才结束3、利用enumerate查询当前线程执行数量4、通过继承threading.Thread()的方式创建线程:使用threading模块时,...原创 2020-05-05 17:32:23 · 210 阅读 · 0 评论 -
python学习笔记5-网络编程-TCP文件下载案例
客服端编程import socketdef main(): # 1. 创建套接字 tcp_client_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 2. 连接服务端 tcp_client_socket.connect(("127.0.0.1",8080)) # 3. 传递下载文件名 file_name =...原创 2020-05-04 23:09:55 · 195 阅读 · 0 评论 -
python学习笔记4-网络编程-TCP编程步骤
Tcp客服端搭建流程1. 创建socket套接字2. 连接客户端connect()3. 接收发送信息recv/send4. 关闭套接字程序设计案例:import socketint main(): # 1. 创建socket套接字 tcp_client_socket=socket.socket(socket.AF_INET,socket.SOCKET_STREAM) # 2....原创 2020-05-04 17:35:02 · 309 阅读 · 0 评论 -
python学习笔记3-网络编程-UDP编程步骤
创建一个基于udp的网络程序流程很简单,具体步骤如下:from socket import *1. 创建udp套接字udp_socket = socket(AF_INET, SOCK_DGRAM)2. 准备接收方的地址# '192.168.1.103'表示目的ip地址# 8080表示目的端口dest_addr = ('192.168.1.103', 8080) # 注意 是元组...原创 2020-05-03 15:43:05 · 286 阅读 · 0 评论 -
python学习笔记2-黑马项目实战飞机大战第一篇---游戏框架的搭建
2. 游戏框架搭建(1) 封装文件框架 plane_main:封装主游戏类;创建游戏对象;启动游戏import pygamefrom plane_sprites import *class PlaneGame(object): """飞机大战主游戏""" def __init__(self): self.screen=pygame.display...原创 2020-02-28 16:37:49 · 361 阅读 · 0 评论 -
python学习笔记1-黑马项目实战飞机大战第一篇---pygame入门
1. pygame入门(1) 游戏的初始化和退出init方法pygame.init():初始化pygame所有模块,使用其他模块时必须先调用,游戏时开始调用;quit方法pygame.quit():卸载pygame所有模块,在游戏结束前调用游戏代码框架:import pygamepygame.init()# 游戏代码...pygame.quit()(2) 游戏界面的创建坐标...原创 2020-02-25 16:58:55 · 1251 阅读 · 1 评论