Python学习之路
文章平均质量分 89
关于Python的学习:从零开始,从简单到复杂。
记录自己学习Python的过程,致敬周景阳老师。
哈哥撩编程
【易编橙·终身成长社群】星主,2023年度·博客之星&超级个体得主,COC上海社区主理人,谷歌、亚马逊、1024等开发者大会分享嘉宾,《程序员:职场效能必修宝典》作者。
展开
-
MySQL数据库_数据的查询_排序、聚合函数、分组
文章目录MySQL数据库排序聚合函数分组MySQL数据库排序为了方便查看数据,可以对数据进行排序语法:select * from 表名 order by 列1 asc|desc ,列2 asc|desc,...说明:将行数据按照列1进行排序,如果某些行列1的值相同时,则按照列2排序,以此类推默认按照列值从小到大排列(asc)asc从小到大排列,即升序desc从大到小排序...原创 2019-05-21 10:50:00 · 2206 阅读 · 0 评论 -
MySQL数据库_数据的查询_基本查询与条件查询
文章目录MySQL数据库数据的查询数据的基本查询数据的条件查询MySQL数据库数据的查询数据的基本查询建数据库、数据表-- 创建数据库create database python_test charset=utf8;-- 使用数据库use python_test;-- students表create table students( id int unsigned p...原创 2019-05-20 10:36:15 · 2806 阅读 · 3 评论 -
MySQL数据库_数据的增删改查
文章目录MySQL数据库数据的增删改查增加删除修改查询数据的备份和恢复备份恢复MySQL数据库数据的增删改查数据的增删改查增删改查(CURD)C:创建【Create】U:更新【Update】R:读取【Retrieve】D:删除【Delete】增加格式:INSERT INTO table_name (column_name1,column_name2,...) VALU...原创 2019-05-16 22:48:44 · 973 阅读 · 5 评论 -
MySQL数据库_数据库与数据表操作
MySQL数据库命令行连接现在在工作中基本不使用终端进行连接操作数据库了,一般都使用图形化工具,如Navicat for MySQL,DBeaver等等,但是操作数据库的命令操作方式,需要熟练掌握。通过终端连接。 命令: mysql -uroot / mysql -uroot -p (输入密码)连接成功之后,如下图所示退出登录quit 和 exit或ctrl+d数...原创 2019-05-15 17:35:06 · 505 阅读 · 4 评论 -
MySQL数据库_数据完整性
MySQL数据库数据完整性一个数据库就是一个完整的业务单元,可以包含多张表,数据被存储在表中在表中为了更加准确的存储数据,保证数据的正确有效,可以在创建表的时候,为表添加一些强制性的验证,包括数据字段的类型、约束数据类型使用数据类型的原则是:够用就可以,尽量使用取值范围小的,而不用大的,这样可以节省更多的存储空间常用数据类型如下:整数:int,bit(最小的信息单位)...原创 2019-05-15 17:30:36 · 435 阅读 · 1 评论 -
MySQL数据库_MAC系统安装MySQL
MySQL数据库MySQL安装、启动与关闭因为我用的是mac,所已这里的安装步骤仅适用于mac;mac系统下,安装的方法有两种,一种是通过安装包方式,另一种是通过命令行方式。参考文章:http://www.jianshu.com/p/fd3aae701db9这里我选择的是通过 Homebrew 的命令行方式安装的,具体操作如下:brew install mysql安装完成后,启...原创 2019-05-14 20:22:43 · 338 阅读 · 0 评论 -
MySQL数据库_数据库的基本介绍
数据库的简单介绍“数据”的存储据传说,上古时代人们通过 “结绳记事” 的方式来进行计数或者记录一些大大小小的事情,是帮助人们回忆过去的唯一线索。当文字产生后,人们通过文字的方式来进行传统的信息数据的记录。而传统的信息数据记录方式存在着一些缺陷,比如 数据不易保存,备份起来不方便,信息查找略显困难等等…进入现代之后,人们通过“文件”、“数据库”的方式存储信息数据。文件文件的使用方式简...原创 2019-05-14 17:57:42 · 762 阅读 · 2 评论 -
Python高级语法_with与上下文管理器
文章目录Python高级语法with与“上下文管理器”普通版进阶版高级版什么是上下文(context)上下文管理器实现上下文管理器的另外方式Python高级语法with与“上下文管理器”如果你有阅读源码的习惯,可能会看到一些优秀的代码经常出现带有 “with” 关键字的语句,它通常用在什么场景呢?今对于系统资源如文件、数据库连接、socket 而言,应用程序打开这些资源并执行完业务逻辑之后...原创 2019-05-08 22:44:55 · 458 阅读 · 2 评论 -
Python高级语法_面向对象设计及腾讯代码参考实例
文章目录Python高级语法面向对象设计参考实例Python高级语法面向对象设计继承 - 是基于Python中的属性查找(如X.name)多态 - 在X.method方法中,method的意义取决于X的类型封装 - 方法和运算符实现行为,数据隐藏默认是一种惯例参考实例腾讯即时通信模块,初级封装#! /usr/bin/env python# coding: utf-8imp...原创 2019-05-08 22:40:09 · 685 阅读 · 3 评论 -
Python高级语法_魔法属性与构造方法
无论人或事物往往都有不按套路出牌的情况,对于一个类,Python的类属性也是如此,存在着一些具有特殊含义的属性,python定义了许多可用的魔法属性,有些每个类都默认存在,有些需要用户手动定义。原创 2019-05-08 22:30:32 · 434 阅读 · 3 评论 -
Python高级语法_property属性讲解与应用
文章目录property属性讲解与应用property属性property属性的有两种方式装饰器方式类属性方式:创建值为 property 对象的类属性Django框架中应用了property属性(目前仅作了解)property属性-应用私有属性添加getter和setter方法使用property升级getter和setter方法使用property取代getter和setter方法prope...原创 2019-05-08 22:07:17 · 509 阅读 · 2 评论 -
Python高级语法_实例方法、静态方法、类方法
文章目录Python高级语法实例方法、静态方法、类方法类属性、实例属性实例方法、静态方法和类方法Python高级语法实例方法、静态方法、类方法类属性、实例属性它们在定义和使用中有所区别,而最本质的区别是内存中保存的位置不同,实例属性属于对象类属性属于类代码示例:class Province(object): # 类属性 country = '中国' d...原创 2019-05-08 01:20:14 · 552 阅读 · 14 评论 -
Python高级语法_再议 封装、继承、多态
文章目录再议 封装、继承、多态为啥要封装?为啥要继承?怎样去理解多态?再议 封装、继承、多态前面Python基础章节我们在Python基础:面向对象三大特性简单的介绍了一下 封装、继承、多态 ,现在我们再针对 封装、继承、多态 做一些补充。为啥要封装?见下图封装的好处在使用面向过程编程时,当需要对数据处理时,需要考虑用哪个模板中哪个函数来进行操作,但是当用面向对象编程时,因为已...原创 2019-05-08 00:54:45 · 482 阅读 · 4 评论 -
Python高级语法_再议多继承以及MRO顺序
文章目录再议多继承以及MRO顺序多继承中的MRO顺序\*args、**kwargs的另外用处--->拆包单继承中的MRO继承的面试题再议多继承以及MRO顺序多继承中的MRO顺序单独调用父类的方法print("******多继承使用类名.__init__ 发生的状态******")class Parent(object): def __init__(self, name):...原创 2019-05-06 18:06:09 · 366 阅读 · 10 评论 -
Python高级语法_Python的赋值、深拷贝与浅拷贝的区别
Python高级语法Python的赋值、深拷贝与浅拷贝的区别通过前面的学习我们了解到,在python中,给一个对象赋值,实际上就是对象对内存空间存储的值的引用。当我们把对象赋值给另一个变量的时候,这个变量并没有拷贝这个对象,而只是拷贝了这个对象的引用而已。一般情况下我们会通过三种方法来实现拷贝对象的引用。直接赋值直接赋值,默认浅拷贝传递对象的引用而已,原始列表改变,被赋值的变量也会做相同...原创 2019-05-05 17:40:44 · 1345 阅读 · 8 评论 -
Python高级语法_关于GIL锁及解决方法
在Python3.4之后,由于对GIL有了较大的改进。在单核的情况下,对于单个线程长期占用GIL的情况有所好转;但是在多核的情况下,性能仍然还是没有多大的改善。很多时候有些事情我们无法改变,但是生活给了我们智慧;所以为了客服困难,我们始终还是能找到解决办法的。原创 2019-05-01 18:08:27 · 1054 阅读 · 6 评论 -
网络通信-网络通信过程
文章目录网络通信网络通信过程NAT网络通信网络通信过程两台电脑的网络说明:如果两台电脑之间通过网线连接是可以直接通信的,但是需要提前设置好ip地址以及网络掩码并且ip地址需要控制在同一网段内,例如 一台为192.168.1.1另一台为192.168.1.2则可以进行通信使用集线器组成一个网络当有多态电脑需要组成一个网时,那么可以通过集线器(Hub)将其链接在一起一...原创 2019-04-30 18:03:43 · 1043 阅读 · 3 评论 -
Wireshark抓包工具的使用
Wireshark抓包工具的使用说明:目前接触的情况来看,安全测试工程师使用Wireshark的占比要比软件测试工程师要多。以下信息来自’百度百科’Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。网络封包分析软件的功...原创 2019-04-29 15:18:23 · 845 阅读 · 8 评论 -
网络通信-TCP/IP协议
文章目录TCP/IP协议TCP/IP协议(族)TCP/IP的分层管理OSI七层网络模型(近作了解)TCP/IP协议TCP/IP协议(族)计算机与网络设备要互相通信,双方就必须要基于通用协议标准,比如,如何探测到通信目标、由哪一边先发起通信、使用哪种语言进行通信、怎样结束通信等规则都需要事先确定。不同的硬件、操作系统之间的通信,所有的这一切都需要一种规则。而我们就把这种规则称之为协议(prot...原创 2019-04-28 23:55:23 · 2171 阅读 · 6 评论 -
关于 AttributeError: module ‘select‘ has no attribute ‘epoll‘
关于 AttributeError: module ‘select’ has no attribute 'epoll’关于该报错的情景先说一下,我是在Win环境下,导入的 ‘select’ 包 import select然后在 主函数 中创建的 epoll 对象 epl = select.epoll()在运行的时候 报错 内容如下:AttributeError: module ...原创 2019-04-26 18:04:42 · 9090 阅读 · 13 评论 -
WEB静态服务器-epoll版的http服务器
文章目录WEB静态服务器epoll版的http服务器什么是epoll ?epoll的原理过程代码示例WEB静态服务器epoll版的http服务器什么是epoll ?epoll是什么?按照Linux中 "man"手册的说法:是为处理大批量句柄而作了改进的poll。当然,这不是2.6内核才有的,它是在2.5.44内核中被引进的(epoll(4) is a new API introduced ...原创 2019-04-26 01:22:42 · 584 阅读 · 11 评论 -
WEB静态服务器-使用单进程、线程、非堵塞实现长连接的http服务器
WEB静态服务器单进程、线程、非堵塞、、长连接的http服务器代码示例如下:import socketimport redef service_client(new_socket, request): """为这个客户端返回数据""" # # 1、接收浏览器发送过来的请求,即http请求 # # GET / HTTP/1.1 # # .......原创 2019-04-26 01:12:00 · 450 阅读 · 6 评论 -
WEB服务器-长连接与短连接
WEB静态服务器长连接与短链接什么是长连接、短连接?在HTTP/1.0中默认使用短连接。也就是说,客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。当客户端浏览器访问的某个HTML或其他类型的Web页中包含有其他的Web资源(如JavaScript文件、图像文件、CSS文件等),每遇到这样一个Web资源,浏览器就会重新建立一个HTTP会话。而从HTTP/1....原创 2019-04-24 23:51:29 · 4215 阅读 · 16 评论 -
WEB服务器-单进程、线程、非堵塞模式的实现与验证
WEB静态服务器非堵塞模式非阻塞模式是指利用socket事件的消息机制,Server端与Client端之间的通信处于异步状态。附:过程原理仅作理解,切记死记硬背单进程非堵塞-模型代码示例如下:from socket import *import time# 用来存储所有的新链接的socketg_socket_list = list()def main(): s...原创 2019-04-24 23:43:31 · 456 阅读 · 8 评论 -
WEB服务器-并发服务器(多进程、多线程、gevent)
文章目录WEB静态服务器并发服务器 - 多进程并发服务器 - 多线程并发服务器 - gevent(协程)WEB静态服务器并发服务器 - 多进程代码示例如下:import socketimport reimport multiprocessingdef service_client(new_socket): """为这个客户端返回数据""" # 1、接收浏览器发送...原创 2019-04-23 23:49:14 · 694 阅读 · 5 评论 -
Web服务器-静态服务器-显示用户需要的页面
文章目录简单WEB服务器实现WEB静态服务器1-显示index.html的页面2-根据用户的需求返回响应的页面简单WEB服务器实现WEB静态服务器1-显示index.html的页面代码示例如下:import socketdef service_client(new_socket): """为这个客户端返回数据""" # 1、接收浏览器发送过来的请求,即http请求...原创 2019-04-23 23:40:36 · 635 阅读 · 8 评论 -
WEB服务器-TCP协议之三次握手与四次挥手
本文经过借鉴书籍资料【图解HTTP】、他人博客总结出的知识点。如有冒犯,欢迎联系。三次握手 与 四次挥手三次握手:建立连接,保证双方准备资源四次挥手:断开连接,将资源释放掉所谓三次握手(Three-Way Handshake)即建立TCP连接,是指建立一个TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立。所谓四次挥手(Four-Way Wavehand)即终...原创 2019-04-20 15:27:45 · 1244 阅读 · 4 评论 -
WEB服务器-简单的WEB服务器实现
简单的WEB服务器实现代码示例如下:import socketdef service_client(new_socket): """为这个客户端返回数据""" # 1、接收浏览器发送过来的请求,即http请求 # GET / HTTP/1.1 # ...... request = new_socket.recv(1024) pri...原创 2019-04-19 15:41:34 · 560 阅读 · 14 评论 -
WEB服务器-HTTP协议
文章目录HTTP协议HTTP协议简介Chrome/Firefox 【开发者工具】HTTP协议分析总结HTTP协议HTTP协议简介Chrome/Firefox 【开发者工具】在Web应用中,服务器把网页传给浏览器,实际上就是把网页的HTML代码发送给浏览器,让浏览器显示出来。而浏览器和服务器之间的传输协议是HTTP,所以:HTML是一种用来定义网页的文本,会HTML,就可以编写网页;...原创 2019-04-18 09:59:58 · 580 阅读 · 11 评论 -
多任务-协程
文章目录协程迭代器可迭代对象与迭代器如何判断一个对象是否可以迭代?如何判断一个对象是否是迭代器?for...in... 循环的本质迭代器的应用场景并不是只有for循环能接收可迭代对象生成器创建生成器方法1创建生成器方法2生成器的本质生成器小结使用 send 唤醒协程 - yield简单实现协程协程 - greenlet协程 - gevent进程、线程、协程的区别案例:并发图片下载器协程迭代器...原创 2019-04-16 21:55:12 · 475 阅读 · 12 评论 -
Windows环境下Python中multiprocessing关于RuntimeError异常的处理方式
前言在上一篇博文中,我们发现下方的代码示例在Linux、Mac系统上是可以正常执行的,但是如果是在Windows系统执行就会抛出RuntimeError异常。虽然上一篇博文有针对该RuntimeError异常作出处理,但是我还是觉得针对该问题需要单独提出来一下(因为很有纪念意义,原创 2019-04-11 21:14:51 · 2615 阅读 · 1 评论 -
多任务-进程
文章目录进程进程以及状态使用Process完成多进程2个while循环一起执行多进程实现多任务进程 PID进程与线程的区别进程间的通信 - Queue多进程之间通过Queue实现数据共享进程池 Pool进程池 Pool - 概述进程池的创建RuntimeError异常的解决方法案例:文件夹copy器_多进程版进程进程以及状态进程==程序:==例如xxx.py,是一个静态的==进程:==一...原创 2019-04-11 20:50:27 · 415 阅读 · 5 评论 -
多任务-线程
文章目录线程多任务介绍、以及Thread的基本使用多任务介绍多任务的概念Thread创建线程完成多任务使用thread模块查看正在运行的线程、主线程等待子线程先结束通过继承Thread类完成创建线程多线程-共享全局变量多线程-共享全局变量-args多线程-共享全局变量问题同步概念、互斥锁及资源竞争的解决同步的概念互斥锁死锁、银行家算法死锁附录-银行家算法案例:多线程版本的UDP聊天器线程多任务...原创 2019-04-09 15:40:48 · 570 阅读 · 11 评论 -
网络编程案例-基于TCP网络协议的案例:文件下载器
基于TCP网络协议的案例:文件下载器文件下载器_模拟客户端import socketdef main(): # 1.创建套接字 tcp_socket= socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 2.获取服务器的IP和PORT dest_ip = input("请输入下载服务器的IP:")...原创 2019-04-04 00:42:56 · 480 阅读 · 6 评论 -
网络编程-tcp
文章目录网络编程TCPTCO介绍TCP特点TCP与UDP的不同点TCP客户端TCP客户端构件流程TCP服务器网络编程TCPTCO介绍**TCP协议,传输控制协议(英语:Transmission Control Protocol,缩写为 TCP)**是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的 RFC793定义。TCP通信需要经过创建连接、数据传送、终止连接三个步骤...原创 2019-04-04 00:40:10 · 493 阅读 · 6 评论 -
网络编程-udp
文章目录网络编程udp网络程序---发送、接收数据udp网络程序-发送/接收数据应用:udp聊天器网络编程udp网络程序—发送、接收数据udp网络程序-发送/接收数据创建一个基于udp的网络程序流程很简单,具体步骤如下:1、创建客户端套接字2、发送/接收数据3、关闭套接字发送数据代码如下import socketdef main(): # 创建一个udp套接字...原创 2019-04-04 00:30:24 · 409 阅读 · 4 评论 -
网络编程-基本概念
文章目录网络编程网络编程 - 基本概念网络通信概述IP地址Linux、Windows 查看网卡信息IP地址的分类端口简述聊天信息的发送端口号端口的分类socket简介创建socket网络编程网络编程 - 基本概念网络通信概述1.什么是网络?网络是一种辅助双方或者多方能够连接在一起的工具如果没有网络,可想 单机的世界是多么的孤单2.使用网络的目的就是为了联通多方然后进行通信用的...原创 2019-04-04 00:27:05 · 454 阅读 · 5 评论 -
Python基础:文件操作与文件编码
文章目录文件的基本操作操作文件的基本套路操作文件的函数/文件read 方法 -- 读取文件文件指针写入文件按行读取文件内容文件读写案例文件操作目录操作文本文件的编码格式(科普)ASCII 编码 和 UNICODE 编码ASCII 编码ASCII表UTF-8 编码格式Python 2.x 中如何使用中文UNICODE 字符串文件的基本操作操作文件的基本套路在 计算机中要操作文件的套路非常固定...原创 2019-03-27 14:46:48 · 1080 阅读 · 19 评论 -
Python基础:模块与包
文章目录模块的概念模块的两种导入方式import 导入from...import 导入from...import * (仅作了解)模块的搜索顺序[扩展]原则--每一个文件都应该可以被导入的实际开发场景\_\_name\_\_ 属性:包(package)案例演练:发布模块制作发布压缩包步骤创建 setup.py 文件构建模块生成发布压缩包pip 安装第三方模块安装和卸载命令如下在Mac下安装在Lin...原创 2019-03-25 16:10:20 · 562 阅读 · 18 评论 -
Python基础:异常及异常的处理
文章目录异常的概念捕获异常简单的捕获异常语法错误类型的捕获捕获未知错误异常捕获完整语法异常的传递主动抛出(raise)异常异常的概念程序在运行时,如果 python 解释器 遇到一个错误, 会停止程序的执行,并且提示一些错误信息, 这就是 异常程序停止执行并且提示错误信息 这个动作,我们通常称之为: 抛出(raise)异常开发时,很难将 所有的特殊情况 都处理的面面俱到,通过 ...原创 2019-03-21 01:08:08 · 578 阅读 · 19 评论