Python基础
文章平均质量分 57
karry_孙二
学习记录
展开
-
Python基础-48-文本处理(逗号分隔值CSV)
前言python自带模块csv可以将数据以csv格式输出到文件,也可以将csv数据读回列表、元组数据写入和读取【代码部分】# coding:utf-8import csv# data也可以为列表data = ( ["1", "suner001", "b123456"], ["2", "suner002", "b123456"], ["3", ...原创 2019-09-12 14:27:22 · 2208 阅读 · 0 评论 -
Python基础-47-yaml使用
前言基础的配置数据我们可以用.ini文件、.json文件等来存放,当然yaml也是可以的,并且使用起来更方便,本篇讲解yaml使用安装python中操作yaml文件的库为pyyaml模块pip install pyyaml 直接安装(如下图,安装完成)yaml文件编写的基础规则1)大小写敏感2)使用缩进表示层级关系3)缩进时不允许使用Tab,只允许使...原创 2019-07-12 17:13:08 · 380 阅读 · 0 评论 -
Python基础-46-邮件发送(带附件)
前言前面一篇主要是只发送纯文本情况,很多时候我们发送邮件都是带附件发的,比如带doc、xlsx、MP3等等MIMEMultipart/MIMEApplication带附件发送import smtplibfrom email.mime.text import MIMETextfrom email.mime.multipart import MIMEMultipartfro...原创 2019-07-01 15:02:35 · 1539 阅读 · 0 评论 -
Python基础-45-邮件发送(纯文本)
前言之前有过发送邮件的介绍(python发送邮件),这里更为详细整体的梳理一下SMTP1)SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议。2)SMTP 是建立在 TCP上的一种邮件服务,主要用于传输系统之间的邮件信息并提供来信有关的通知。3)SMTP是发送邮件的协议,Python内置会对SMTP的支持,可以发送纯文本邮件、HTM...原创 2019-07-01 15:02:19 · 714 阅读 · 0 评论 -
Python基础-44-装饰器详解
前言装饰器的简单功能在前面已经有过介绍(装饰器基础),本篇详细介绍一下装饰器的作用被装饰函数不带参数代码部分:# 在每个函数执行前打印出执行的函数名称def print_log(func): def wrapper(): print("当前执行的函数名为:",func.__name__) func() return wr...原创 2019-05-28 08:44:11 · 214 阅读 · 0 评论 -
Python基础-43-Super()使用
前言在面向对象-继承部分已经有过super继承的使用,这里独立出来梳理一下格式:super().方法(参数) # 对python3有效Super()代码部分:# super()继承class People(): def __init__(self,name,age): self.name = name self.age = ...原创 2019-05-27 14:17:14 · 173 阅读 · 0 评论 -
Python基础-42-匿名函数lambda
匿名函数 lambdalambda是一个匿名函数,在定义函数的时候,不想给函数起一个名字时可以使用匿名函数,用一个变量保存结果即可。通常这个匿名函数是不会被重复使用的语法:lambda 参数:表达式注:不能有循环和returndemo1定义一个匿名函数# 定义一个匿名函数实现加法计算sum_res = lambda x,y:x+y# 调用函数,传入参数...原创 2019-05-27 14:16:45 · 312 阅读 · 0 评论 -
Python基础-41-高阶函数map/reduce/filter/sorted
高阶函数把函数作为参数传入,这样的函数称为高阶函数,函数式编程就是指这种高度抽象的编程范式# lambda函数作为参数传入def sum_func(x,y,func): res = func(x,y) return res# 调用函数print(sum_func(50,30,lambda x,y:x+y))map()map函数接收两个参数,一个是函...原创 2019-05-27 14:16:19 · 160 阅读 · 0 评论 -
Python基础-40-Socket 案例二
前言基于上一篇的demo,本篇增加一些功能需求服务端:依旧为发送1~30之间随机的30个数字,以及将客户端返回的结果展示出来客户端:1)第一个client计算奇偶性,将结果返回2)第二个client计算数字的2倍,将结果返回3)第三个client判断数字是否大于10,将结果返回代码部分server端# coding:utf-8import socket...原创 2019-05-21 09:58:34 · 188 阅读 · 0 评论 -
Python基础-39-Socket 案例一
需求:服务端:1)服务端随机产生30个数字(数字不大于30)2)展示客户端反馈的结果客户端:1)客户端接收到服务端的30个随机数去分别计算数字奇偶性并将结果返回给服务端代码部分:server端# coding:utf-8import socketimport randomimport timesock = socket.socket(socket....原创 2019-05-21 09:58:15 · 219 阅读 · 0 评论 -
Python基础-38-Socket 编程二
前言前一篇可以实现两端的通信,但是只通信一次就结束了。本篇来优化一下,实现两端通信,我们需要停止通信的时候再结束“对话”。Socket实例server端# coding:utf-8import socketsock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)sock.bind(("",8000))sock...原创 2019-05-21 09:57:53 · 293 阅读 · 0 评论 -
Python基础-37-Socket 编程一
通信步骤C/S结构 client/server通信步骤:服务器端先初始化Socket,然后与端口绑定(bind),对端口进行监听(listen),调用accept阻塞,等待客户端连接。在这时如果有个客户端初始化一个Socket,然后连接服务器(connect),如果连接成功,这时客户端与服务器端的连接就建立了。客户端发送数据请求,服务器端接收请求并处理请求,然后...原创 2019-05-21 09:57:31 · 217 阅读 · 0 评论 -
Python基础-36-异常处理
概述当python检测到一个错误时,解释器就无法继续执行了,反而出现了一些错误提示,这就是所谓的“异常”异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行,在python无法正常处理程序时就会发生一个异常,当python脚本发生异常时我们需要捕获处理它,否则程序就会终止捕获异常语法try: 代码块except Exceptio...原创 2019-05-21 08:52:58 · 181 阅读 · 0 评论 -
Python基础-35-encode编码和decode解码
encode编码和decode解码1.unicode是 utf-8,gbk,gb2312的父编码,这些子编码都能转换成unicode编码,然后转化成其他子编码例如utf8可以转成unicode,再转gbk,但不能直接从utf8转gbk2.python中有两个方法用来解码(decode)与编码(encode),解码是子编码转unicode,编码就是unicode转子编码(1)代码...原创 2019-03-06 09:32:45 · 210 阅读 · 0 评论 -
Python基础-34-协程
协程概述协程,又称微线程,也称为用户级线程,在不开辟线程的基础上完成多任务,也就是在单线程的情况下完成多任务,多个任务按照一定顺序交替执行,通俗理解只要在def里面只看到一个yield关键字,就表示它是协程简单理解:协程是实现多任务的一种方式协程的优点(1)无需线程上下文切换的开销,协程避免了无意义的调度,由此可以提高性能(但也因此,程序员必须自己承担调度的责任,同时,协...原创 2019-03-04 08:18:12 · 156 阅读 · 0 评论 -
Python基础-33-hashlib模块
hashlib模块概述hashlib提供了常见的摘要算法,如MD5、SHA1等等摘要算法:又称为哈希算法、散列算法。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)常用的方法(1)md5()/sha1():创建一个md5或者sha1加密模式的hash对象(2)update(arg):用字符串参数来更新hash对象,如果同一个ha...原创 2019-03-04 08:17:27 · 190 阅读 · 0 评论 -
Python基础-32-正则表达式
正则表达式介绍1.正则表达式一种用来匹配字符串的强有力武器,用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,就认为它“匹配”了,否则,该字符串就是不合法的2.正则表达式是高级的字符串匹配处理方式3.正则表达式的原理:通过描述匹配内容的类型和长度来获取字符串当中的指定字符正则表达式的划分1.对类型的描述(1)原样匹配通常原样匹配会结合其他匹配一起出现...原创 2019-02-26 09:29:56 · 285 阅读 · 0 评论 -
Python基础-31-线程锁
全局解释器锁(GIL)1.python在设计之初就考虑到要在主循环中,同时西游一个线程在执行,就像单CPU的系统中运行多个进程那样,内存中可以存放多个程序,但任意时刻,只有一个程序再CPU中运行。同样地,虽然python解释器中可以“运行”多个线程,但在任意时刻,只有一个线程在解释器中运行2.对python虚拟机的访问由全局解释器锁(GIL)来控制,正式这个锁能保证同一时刻只有一个线程在运...原创 2019-02-25 08:19:00 · 139 阅读 · 0 评论 -
Python基础-30-守护线程
守护线程1.守护线程会在“该进程内所有非守护线程全部都运行完毕后,守护线程才会挂掉”2.主线程在其他非守护线程运行完毕后才算运行完毕(守护线程在此时就被回收)。因为主线程的结束意味着进程的结束,进程整体的资源都将被回收3.守护线程工作原理:守护线程一般是一个等待客户请求服务器,如果没有客户提出请求,它就在那里等。如果设定一个线程为守护线程,表示这个线程不重要,在进程退出的时候,不用...原创 2019-02-25 08:18:49 · 206 阅读 · 0 评论 -
Python基础-29-多线程threading的使用
threading介绍threading是对thread模块的再封装,线程并发运行并且共享内存threading模块支持守护线程threading的使用导入线程模块 import threading(1)threading常用方法threading.currentThread():返回当前的线程变量threading.currentThread().name:返...原创 2019-02-25 08:18:36 · 925 阅读 · 3 评论 -
Python基础-28-多线程基础
多线程介绍进程(1)计算机程序只不过是磁盘中可执行的二进制(或其他类型)的数据。它们只有在被读取到内存中,被操作系统调用的时候才开始它们的生命期(2)进程(有时被称为重量级进程)是程序的一次执行。每个进程都有自己的地址空间、内存、数据栈以及其他记录其运行轨迹的辅助数据。操作系统管理在其上运行的所有进程,并为这些进程公平地分配时间线程线程(有时被称为轻量级进程),跟进程有些...原创 2019-02-25 08:18:00 · 124 阅读 · 0 评论 -
Python基础-27-进程池Pool
进程池概述(1)池子里面放的是进程,进程池会根据任务执行情况自动创建进程而且尽量少创建进程,合理利用进程池中的进程完成多任务(2)当需要创建的子进程数量不多时,可以直接利用multiprocessing中的Process动态生成多个进程,但如果是上百甚至上千个目标,手动去创建进程的工作量巨大,此时就可以用到multiprocessing模块提供的Pool方法(3)初始化Pool时,...原创 2019-02-19 16:23:32 · 436 阅读 · 0 评论 -
Python基础-26-进程中通信Queue
Queue的使用multiprocessing模块的Queue实现多进程之间的数据传递,Queue本身是一个消息列队程序(1)实例化一个Queue对象:queue =multiprocessing.Queue(10)10为最大可接受的消息数量,若括号中没有指定,或数量为负数,代表可接受的数量没有上线(直到内存尽头)(2)Queue创建的实例对象常用方法queue.qsize(...原创 2019-02-19 16:22:24 · 243 阅读 · 0 评论 -
Python基础-25-进程中的变量
进程中的变量进程之间不共享全局变量(1)代码import multiprocessingimport time# 定义一个全局变量num_list,里面有一个元素100num_list = [100]# 写入数据def write_data(): for i in range(5): num_list.append(i) time...原创 2019-02-19 16:22:09 · 554 阅读 · 0 评论 -
Python基础-24-进程的使用
进程的使用导入进程模块:import multiprocessing(1)Process进程类的语法结构Process([group[,target[,name[,args[,kwargs]]]]])group:指定进程组,目前只能使用Nonetarget:执行的目标任务名(一般为执行的函数名)name:进程名args:以元组方式给执行任务传参(元组方式给执行函数传参)...原创 2019-02-19 16:21:55 · 268 阅读 · 0 评论 -
Python基础-23-进程基础
进程基础概述一个运行的程序或软件,进程是操作系统资源分配的基本单位注:一个程序至少有一个进程,一个进程至少有一个线程,多进程可以完成多任务进程的状态工作中,任务数往往大于cpu的核数,即一定有一些任务正在执行,而另外一些任务在等待cpu进行执行,因此导致了有了不同的状态(1)就绪态:运行的条件都已经准备好,正在等待cpu执行(2)执行态:cpu正在执行其...原创 2019-02-19 16:21:38 · 189 阅读 · 0 评论 -
Python基础-22-peewee操作数据库
peewee数据库模块映射概述我们用pymysql进行数据库操作是可行的,但是也存在很多的问题,假如开发人员不懂mysql,有时候我们随着业务需求的变换,而转换另一种数据库,进行操作,我们当前的pymysql对数据库数据的插入、删除和修改不方便。在这种情况下,我们提出orm(Object Relational Mapping数据库映射)概念,是一种程序技术,用于实现面向对象编程语言...原创 2019-02-15 10:55:23 · 4239 阅读 · 0 评论 -
Python基础-21-pymysql操作数据库
pycharm配置连接数据库1.View ---> Tool Windows ---> Database2.在右侧弹出的数据库信息中点击新增,选择需要新增的数据库3.填写数据库配置信息4.表示正常连接5.右侧显示已连接的数据库(红色按钮表示连接中,关闭连接点击即可)pymysql操作关键字创建连接connect实例化...原创 2019-02-15 10:55:15 · 359 阅读 · 0 评论 -
Python基础-20-文件操作
文件对象文件对象文件对象包括:超文本文件:图片,声音、视频 ;文本文件:普通文件python提供了必要的函数和方法进行默认情况下的文件基本操作,可以用file对象做大部分的文件操作打开文件open()函数想要读取和写入文件,必须调用py的内置函数open(),该函数创建一个文件对象,调用与之关联的支持方式语法:file object = open(file_nam...原创 2019-01-23 10:26:20 · 261 阅读 · 1 评论 -
Python基础-19-魔法方法(常用)
魔法方法概述在python中方法名如果是 __xxx__() 的,那么就有特殊的功能,因此叫做“魔法”方法其实每个魔法方法都是在对内建方法(str、del等))的重写__init__方法也叫初始化函数:def __init__(self,参数1,参数2,参数3)1)构造函数在类实例化之后自动执行2)构造函数传参在实例化的时候传参3)构造函数没有返回值...原创 2019-01-23 08:59:16 · 493 阅读 · 1 评论 -
Python基础-18-生成器
生成器概述生成器是能够动态提供数据的对象,生成器对象也是可迭代对象(实例)生成器有生成器函数和生成器表达式两种生成器函数概述含有yield语句的函数是生成器函数,此函数被调用将返回一个生成器对象。yield 翻译为(产生或生成)yield语句语法:yield 表达式(1)yield 用于def函数中,目的是将此函数作用生成器函数使用(2)yiel...原创 2019-01-15 10:01:53 · 145 阅读 · 0 评论 -
Python基础-17-迭代器
可迭代对象概述使用for...in...的循环语法,依次拿到数据进行使用,我们把这样的过程称为遍历,也叫迭代。python中的可迭代对象列表、集合、字符串、字典、元组,数字类型不可迭代(range(数字)是迭代对象)isinstance方法如何判断一个对象是否可以迭代可以使用isinstance()这个方法,使用前需要导入内置的方法collections中的It...原创 2019-01-15 10:01:41 · 164 阅读 · 0 评论 -
Python基础-16-集合
python集合集合概述集合是一组无序不重复的元素集合,可以使用大括号{}和set()函数创建集合注:创建一个空集合必须用set()而不是{},因为{}是用来创建一个空字典的集合特点集合是无序的集合与列表、元组类似,可以存储多个数据,但是这些数据是不重复的。set可以快速的完成对list中的元素去重复的功能num = {}print(type(num)) ...原创 2018-11-15 09:14:24 · 224 阅读 · 0 评论 -
Python基础-15-列表
Python列表列表是一个有序的,可修改的,元素以逗号分割,以中括号包围的一个序列。定义一个列表,列表为了存储多个数据,数据类型可不同,列表中可再包含列表直接用[]把list的所有元素都括起来,就是一个list对象。通常会把一个list赋值给一个变量,这样就可以通过变量来引用list定义列表eg:num_list = [1,2,3,4,5,6,7,8,9]eg:nam...原创 2018-11-15 09:13:21 · 469 阅读 · 0 评论 -
Python基础-14-字典
python 字典字典是一个无序的,可以修改的,元素呈键值对的形式,以逗号分割的,以大括号{ }包围的序列由于字典无序,所以我们定义字典和字典生成之后的元素的顺序是不同的;python字典的特点:因为字典是无序的,所以字典没有索引值;因为字典没有索引值,所以字典以键取值,字典的键唯一且不可修改(字典的键相当于列表的索引)定义字典(1)定义一个字典 ...原创 2018-11-15 09:12:22 · 274 阅读 · 0 评论 -
Python基础-13-类属性、实例属性
类属性、实例属性类属性类属性就是类对象所拥有的属性,它被所有类对象的实例对象所共有,在内存中只存在一个副本。对于公有的类属性,在类外可以通过类对象(类本身)和实例对象访问# coding:utf-8class People(): # 类属性 name = "suner" # 公有的类属性 __age = 18 # 私有的类属性 p = Pe...原创 2018-11-15 08:53:21 · 260 阅读 · 0 评论 -
Python基础-12-类方法、静态方法
类方法和静态方法类方法是类本身所拥有的方法,需要用修饰器 @classmethod 来标识其为类方法,对于类方法,一般以cls作为第一个参数,能够通过实例对象和类本身去访问① 类方法引用# coding:utf-8class People(): # 类属性 addr = "wuxi" # 类方法 @classmethod def...原创 2018-11-15 08:53:09 · 339 阅读 · 0 评论 -
Python基础-11-装饰器基础
装饰器1)装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象。2)它经常用于有切面需求的场景,比如:插入日志、性能测试、事务处理、缓存、权限校验等场景。3)装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量与函数功能本身无关的雷同代码并继续重用。概况地讲,装饰器的作用就是为已经存在的对象添...原创 2018-11-15 08:52:58 · 308 阅读 · 0 评论 -
Python基础-10-继承
面向对象特性—继承继承概念(1)对于面向对象的继承来说,就是将多个类的共有方法提取到一个父类当中,子类只需要继承父类,可以继承多个类;(2)子类可以新增自己的功能(3)子类可以重写父类的方法(重写:重写父类的方法,即函数名相同,功能不同)(4)新式类只会执行一次__init__()文件(即使有很多个父类也只会执行最近的那一个init)继承的分类(1)完全继承:子类...原创 2018-11-14 22:50:36 · 239 阅读 · 0 评论 -
Python基础-9-封装
面向对象特性—封装封装定义就是将内容封装在了某一个地方,以后去调用封装在某处的内容调用(1)通过对象直接调用(2)通过self间接调用(3)类的私有化(给属性前面加 __ )① 代码:#coding:utf-8class Book(): def __init__(self,book_name,book_page): self...原创 2018-11-14 22:49:47 · 172 阅读 · 0 评论