python基础
文章平均质量分 65
Petrus_shuai
这个作者很懒,什么都没留下…
展开
-
关于自己对Python中元类的理解
一.什么是元类 一切源自于一句话:python中一切皆为对象,让我们先定义一个类,然后逐步分析class Oldboystudent: def __init__(self,name,age,sex): self.name=name self.age=age self.sex=sex def score(self...原创 2018-08-31 11:11:44 · 312 阅读 · 0 评论 -
匿名函数,内置函数,递归函数及二分法
一.什么是匿名函数 def 定义的是有名函数:特点是可以通过名字重复调用 def func(): pass 匿名函数就是没有名字的函数:特点是只能在定义的时使用一次二.为何要用匿名函数 强调:匿名函数的定义就相当于只产生一个变量的值,而没有绑定任何名字,所以会在定义完后就会被回收,无法重复使用,只能在定义时使用一次 ...原创 2018-10-10 17:03:11 · 181 阅读 · 0 评论 -
常见模块一
一.time与datetime模块 在python中,通常有这几种方式来表示时间: #时间戳:通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行"type(time.time())",返回的是 float类型 #格式化的时间字符串(Format String) #结构化的时间(str...原创 2018-10-17 19:07:41 · 140 阅读 · 0 评论 -
面向对象编程(一)
一.什么是面向对象的程序设计以及为什么要有它 1.面向过程的编程思想:核心是过程二字,过程指的是解决问题的步骤,即先干什么,再干什么,后干什么,基于该思想编写程序就好比在设计一条流水线,是一种机械式的思维方式 优点:复杂的问题流程化,进而简单化 缺点:可扩展性差 2.面向对象的编程思想:核心是对象二字,对象是特征与技能的结合体,基于该思想编写的程序,就好...原创 2018-10-22 20:06:23 · 115 阅读 · 0 评论 -
面向对象编程(二)
一.什么是继承 1. 继承一种新建类的方式,新建的类称之为子类/派生类,被继承的类称之为父类\基类\超类 2.python中继承的特点: 1).子类可以遗传/重用父类的属性 2).python中一个子类可以同时继承多个父类 3).在继承背景下去说,python中的类分为两种:新式类,经典类 ...原创 2018-10-23 16:38:19 · 158 阅读 · 0 评论 -
面向对象编程(三)
一.组合 1.什么是组合 组合指的是某一个对象拥有一个属性,该属性的值是另外一个类的对象class Foo: passclass Bar: passobj=Foo()obj.attr=Bar()obj.xxxobj.attr.yyy 2.为何要用组合 通过为某一个对象添加属性(属性的值是另外一个类的对象...原创 2018-10-24 19:15:13 · 234 阅读 · 0 评论 -
进程间通信(IPC机制),生产者与消费者模型
基于加锁能带来效率低和需要自己手动加锁的问题,我们最好寻找一种解决方案能够兼顾:1.效率高(多个进程共享一块内存的数据)2.帮我们处理好锁的问题,这就是multiprocessing模块为我们提供的基于消息的IPC通信机制:队列和管道。3.队列和管道都是将数据存放于内存中4.队列又是基于(管道+锁)实现的,可以让我们从复杂的锁问题中解脱出来,我们应该尽量避免使用共享数据,尽可能使...原创 2018-11-09 23:00:00 · 508 阅读 · 0 评论 -
Semaphore信号量,Event事件,线程Queue
一.信号量 Semaphore管理一个内置的计数器, 每当调用acquire()时内置计数器-1; 调用release() 时内置计数器+1; 计数器不能小于0;当计数器为0时,acquire()将阻塞线程直到其他线程调用release()。 实例:(同时只有5个线程可以获得semaphore,即可以限制最大连接数为5)import ti...原创 2018-11-15 20:26:49 · 476 阅读 · 0 评论 -
MySQL 如何删除有外键约束的表数据
今天删除数据库中数据,提示因为设置了foreign key,无法修改删除 可以通过设置FOREIGN_KEY_CHECKS变量来避免这种情况。SET FOREIGN_KEY_CHECKS=0;删除,更新数据,恢复外键SET FOREIGN_KEY_CHECKS=1;另:查看当前 FOREIGN_KEY_CHECKS的值SELECT @@FOREIGN_KEY_CHECKS;...原创 2018-11-20 20:16:12 · 414 阅读 · 0 评论 -
python并发编程之协程
一.引子原创 2018-11-16 17:17:01 · 108 阅读 · 0 评论 -
IO模型
在研究IO模型之前,我们先来了解一下几个知识点:同步/异步/阻塞/非阻塞1.同步:所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不会返回。按照这个定义,其实绝大多数函数都是同步调用。但是一般而言,我们在说同步、异步的时候,特指那些需要其他部件协作或者需要一定时间完成的任务。 2.异步: 当一个异步功能调用发出后,调用者不能立刻得到结果。当该异步功能完成后,通过状态、通知或...原创 2018-11-17 10:34:40 · 100 阅读 · 0 评论 -
MySql:视图 触发器 事务 存储过程 函数
一.视图 1. 视图是一个虚拟表(非真实存在),其本质是【根据SQL语句获取动态的数据集,并为其命名】,用户使用时只需使用【名称】即可获取结果集,可以将该结果集当做表来使用。 使用视图我们可以把查询过程中的临时表摘出来,用视图去实现,这样以后再想操作该临时表的数据时就无需重写复杂的sql了,直接去视图中查找即可,但视图有明显地效率问题,并且视图是存放在数据库中的,如果我们...原创 2018-11-26 21:58:24 · 160 阅读 · 0 评论 -
模块,包
一.模块介绍 1.什么是模块 模块就是一系列功能的集合体 2.模块的来源 1).内置的模块 2).第三方的模块 3).自定义模块 3.模块的类别 1).使用python编写的.py文件 2).已被编译为共享库或DLL的C或C++扩展 3).把一系列模块组织到一起的文件夹(...原创 2018-10-15 21:03:23 · 210 阅读 · 0 评论 -
python 迭代器,生成器,三元表达式
一.什么是迭代器 迭代指的是一个重复的过程,每一次重复都是基于上一次的结果而来的 迭代器指的是迭代取值的工具,该工具的特点是可以不依赖于索引取值二.为何要用迭代器 为了找出一种通用的和可以不依赖于索引的迭代取值方式三.如何使用迭代器 1. 可迭代的对象:但凡内置有.__iter__方法的对象都称之为可迭代的对象 2. 迭代器对象:既内置有...原创 2018-09-29 11:36:35 · 203 阅读 · 0 评论 -
python之GIL全局解释器锁,自定义互斥锁,死锁与递归锁
一.关于GIL与自定义互斥锁的区别1.GIL是python解释器自带的锁,自定义互斥锁是我们程序里面自定义的锁2.GIL锁只保证关于垃圾回收那一部分的数据是安全的,但是程序里面自定义的数据GIL无法保证,只能增加自定义锁代码如下:1.有自定义互斥锁的情况from threading import Thread,Lockimport time,randomn=100m...原创 2018-09-07 22:18:45 · 413 阅读 · 0 评论 -
__new()__ 与 __init()__的区别
class Student(): # def __call__(self, *args, **kwargs): # obj=self.__new__(self) # self.__init__(obj,*args, **kwargs) # return obj def __new__(cls, *args, **kwargs):...原创 2018-09-08 23:32:34 · 2260 阅读 · 0 评论 -
Python网络编程之多进程编程
在学习多进程之前,我们先来复习几个基本的知识点:1.什么是进程:进程指的是一个程序的运行过程,或者说一个正在执行的程序,所以说进程是一种虚拟的概念,该虚拟概念起源于操作系统2.操作系统发展史: (1)多道技术:1.空间上的复用即多个进程加载到同一片内存空间 是为时间上的复用做准备 ps:进程之间的内存空间是互相隔离的 ...原创 2018-09-06 09:07:51 · 316 阅读 · 0 评论 -
Python 单例模式
一.单例模式1.单例模式:多次实例化的结果指向同一个实例2.单例模式的实现方式一:(绑定类的方法)import settingsclass Mysql: __instance = None def __init__(self, IP, PORT): self.IP = IP self.PORT = PORT @clas...原创 2018-09-09 12:19:12 · 240 阅读 · 0 评论 -
TCP/IP协议三次握手与四次挥手流程解析
一、TCP报文格式 TCP/IP协议的详细信息参看《TCP/IP协议详解》三卷本。下面是TCP报文格式图:图1 TCP报文格式 上图中有几个字段需要重点介绍下: (1)序号:seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。 (2)确认序号:ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,ack=seq+1。 (3...原创 2018-09-09 20:49:42 · 1507 阅读 · 0 评论 -
python中json模块总结
通过Python的json模块,可以将字符串形式的json数据转化为字典,也可以将Python中的字典数据转化为字符串形式的json数据。 1、json字符串转为字典json.load / json.loads两个方法功能类似,可选参数也相同,最大的区别在于,json.load方法接受的输入,即第一个参数,是包含json数据的文件对象,如open方法的返回对象,json.loa...原创 2018-09-06 20:40:50 · 166 阅读 · 0 评论 -
Python字典按值排序,包含字典的列表按字典值排序的方法
1.通过lambda表达式对列表里面的字典进行排序x = [{'name':'Homer', 'age':39}, {'name':'Bart', 'age':10}]sorted_x = sorted(x, key=lambda x : x['name']) #姓名为升序排列print(sorted_x )sorted_x = sorted(x, key=lambda x : x...原创 2018-09-17 19:49:52 · 453 阅读 · 0 评论 -
Python并发编程之GIL解释器锁
1.什么是GIL全局解释器锁'''定义:In CPython, the global interpreter lock, or GIL, is a mutex that prevents multiple native threads from executing Python bytecodes at once. This lock is necessary mainly becau...原创 2018-09-07 18:56:05 · 290 阅读 · 0 评论 -
Python数据类型,字符编码,文件处理
一.字符串#需要掌握的操作#1、strip,lstrip,rstrip#2、lower,upper#3、startswith,endswith#4、format的三种玩法#5、split,rsplit#6、join#7、replace#8、isdigit#stripname="*Petrus**"print(name.strip("*"))print(name.ls...原创 2018-09-13 19:24:32 · 291 阅读 · 0 评论 -
函数对象、函数嵌套、名称空间与作用域
一.函数对象:指的是函数的内存地址可以像一个变量值一样去使用def foo(): #foo为函数的内存地址 print("from foo")#1.变量值可以被引用f=fooprint(f)f()#2.变量值可以当做参数传给另外一个函数def bar(x): print(x) x()bar(foo)#3.变量值可以当做函数的返回值def func...原创 2018-09-27 16:31:39 · 127 阅读 · 0 评论 -
python中闭包函数与装饰器
一.闭包函数:内部函数包含对外部作用域而非全局作用域的引用 闭:封闭,指的是该函数是定义一个函数内部的函数 包:该内部函数包含对外层函数名字的引用 提示:之前我们都是通过参数将外部的值传给函数,闭包提供了另外一种思路,包起来二.闭包的意义与应用 1.闭包的意义:返回的函数对象,不仅仅是一个函数对象,在函数外还包裹了一层作用域,这使得,该函数无论在何处调用,优先...原创 2018-09-27 21:02:26 · 179 阅读 · 0 评论