6月7日 python 复习 collections】的更多相关文章

collections是Python内建的一个集合模块,提供了许多有用的集合类. namedtuple 我们知道tuple可以表示不变集合,例如,一个点的二维坐标就可以表示成: >>> p = (1, 2) 但是,看到(1, 2),很难看出这个tuple是用来表示一个坐标的. 定义一个class又小题大做了,这时,namedtuple就派上了用场: from collections import namedtuple Point = namedtuple('Point', ['x', '…
"""1. os和sys都是干什么的?2. 你工作中都用过哪些内置模块?3. 有没有用过functools模块?"""1. os 系统相关 sys 系统交互相关的 2.内置模块: json re pickle os sys hashlib struck 进程池和线程城池 threating.Lock logging time 3. functools,用于高阶函数:指那些作用于函数或者返回其它函数的函数, 通常只要是可以被当做函数调用的对象就是这…
1.面向对象编程 1.面向过程编程核心是"过程"二字,过程指的是解决问题的步骤,即先干什么再干什么基于该思想编写程序就好比在编写一条流水线,是一种机械式的思维方式 优点:复杂的问题流程化.进而简单化缺点:可扩展性差 2.面向对象核心"对象"二字,对象指的是特征与技能的结合体,基于该思想编写程序就好比在创造一个世界,你就是这个世界的上帝,是一种上帝式的思维方式 优点:可扩展性强缺点:编程的复杂度高于面向过程 2.对象与类 1.类 对象是特征与技能的结合体,那类就是一系…
01. 列举常见的关系型数据库和非关系型都有那些? 1.关系型数据库通过外键关联来建立表与表之间的关系,---------常见的有:SQLite.Oracle.mysql 2.非关系型数据库通常指数据以对象的形式存储在数据库中,而对象之间的关系通过每个对象自身的属性来决定 ---常见的有:MongoDb.redis 02. MySQL常见数据库引擎及比较? MyISAM:默认的MySQL插件式存储引擎,它是在Web.数据仓储和其他应用环境下最常使用的存储引擎之一. · InnoDB:用于事务处理…
一.包 #官网解释 Packages are a way of structuring Python's module namespace by using "dotted module names" 包是一种通过使用'.模块名'来组织python模块名称空间的方式. #具体的:包就是一个包含有__init__.py文件的文件夹,所以其实我们创建包的目的就是为了用文件夹将文件/模块组织起来 #需要强调的是: 1. 在python3中,即使包下没有__init__.py文件,import…
昨天内容回顾: 1.迭代器 可迭代对象: 只要内置有__iter__方法的都是可迭代的对象 既有__iter__,又有__next__方法 调用__iter__方法==>得到内置的迭代器对象 调用__next__方法==>得到下一个值 for 循环机制 for item in 可迭代对象: pass   先调用对象的__iter__方法得到迭代器,再调用__next__方法,取出下一个值 优点 : 提供了一种不依赖索引的取值方式 同一时间在内存中只存在一个值,节省内存空间 缺点: 取值麻烦 一…
一.继承 什么是继承:   继承是一种新建类的方式,在python中支持一个子类继承多个父类   新建类称为子类或派生类   父类可以称之为基类或者超类   子类会遗传父类的属性 2.  为什么继承 减少代码冗余 3. 定义方式: class Parent: pass class SubClass(Parent): pass print(SubClass.__bases__) #查看类的父类 4.  继承,调用父类方法以及self class Foo: def f1(self): print('…
1.类的定义 #类的定义 class 类名: 属性='xxx' def __init__(self): self.name='enon' self.age=18 def other_func: pass 在定义类的时候,类内的代码就已经执行了 在定义类时需要在类内定义一个叫__init__的函数,该函数在调用时才会执行 self是位置参数,用于在调用函数时接受传入的第一个参数,该参数为调用此方法的object本身 #类的实例化==>对象 #1. 若类内部没有设置__init__方法,则生成对象时…
1.  装饰器的原理以及为什么要使用装饰器 在代码运行期间动态增加功能的方式,称之为"装饰器"(Decorator). 在不影响原代码结构的情况下为其添加功能 2.  装饰器的基本用法 def test(func): def warpper(*args,**kwargs): print("====start====") func(*args,**kwargs) print("=====end====") return warpper @test…
Django模板语言相关内容   Django模板系统 官方文档 常用语法 只需要记两种特殊符号: {{  }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 变量 {{ 变量名 }} 变量名由字母数字和下划线组成. 点(.)在模板语言中有特殊的含义,用来获取对象的相应属性值. 几个例子: view中代码: def template_test(request): l = [11, 22, 33] d = {"name": "alex"} class P…
JavaScript概述 ECMAScript和JavaScript的关系 1996年11月,JavaScript的创造者--Netscape公司,决定将JavaScript提交给国际标准化组织ECMA,希望这门语言能够成为国际标准.次年,ECMA发布262号标准文件(ECMA-262)的第一版,规定了浏览器脚本语言的标准,并将这种语言称为ECMAScript,这个版本就是1.0版. 该标准一开始就是针对JavaScript语言制定的,但是没有称其为JavaScript,有两个方面的原因.一是商…
1. 列表生成器 l=['egg%s' %i for i in range(100) if i>20 ] print(l) 若将 [ ] 换成 ( ),则为生成器表达式,结果是一个迭代器 #求文件中每行字符数的最大值 with open('E:\\test.txt','r',encoding='utf-8') as f : num=[len(line) for line in f] print(max(num)) 2. 模块 模块就是一系列功能的集合体,一个.py文件就是一个模块 #模块导入格式…
一.视图 1.什么是视图 视图就是通过查询得到一张虚拟表,然后保存下来,下次用的直接使用即可 2.为什么要用视图 如果要频繁使用一张虚拟表,可以不用重复查询 3.如何用视图 create view teacher2course asselect * from teacher inner join course on teacher.tid = course.teacher_id; drop view teacher2course; 强调1.在硬盘中,视图只有表结构文件,没有表数据文件2.视图通常…
一.反射 下述四个函数是专门用来操作类与对象属性的,如何操作? 通过字符串来操作类与对象的属性,这种操作称为反射 class People: country="China" def __init__(self,name): self.name=name def tell(self): print('%s is aaa' %self.name) obj=People('egon') 1.hasattr print(hasattr(People,'country')) print('cou…
1.hashlib  1.什么叫hash:hash是一种算法,该算法接受传入的内容,经过运算得到一串hash值 2.hash值的特点是:2.1 只要传入的内容一样,得到的hash值必然一样=====>要用明文传输密码文件完整性校验2.2 不能由hash值返解成内容=======>把密码做成hash值,不应该在网络传输明文密码2.3 只要使用的hash算法不变,无论校验的内容有多大,得到的hash值长度是固定的 import hashlib m=hashlib.md5() m.update('h…
问:Python怎么在字典里删除值但保留相应的键 答: 假设3都在值里,而非键>>> for v in D1.values():...     if 3 in v:...         v.remove(3)...>>> D1{'A1': [2], 'C1': [4, 5], 'B1': [3]} 这个代码还能适用于更多情况,比如: >>> D1 = {'A1' : [2, 3], 'B1': [3, 3], 'C1' : [4, 5]}>&g…
1.写入csv文件2.lxml的用法3.自定义字典类的方法4.bytes解码得到str,str编码得到bytes5.json 1 import csv import lxml.html class ScrapcCallback: def __init__(self): self.witer=csv.writer(open("test.csv","a")) self.fields =("name","age","gre…
Django之路由系统   Django的路由系统 Django 1.11版本 URLConf官方文档 URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表. 你就是以这种方式告诉Django,对于这个URL调用这段代码,对于那个URL调用那段代码. URLconf配置 基本格式: from django.conf.urls import url urlpatterns = [ url(正则表达式, views视图函数,参数,别…
Web框架本质及第一个Django实例   Web框架本质 我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端. 这样我们就可以自己实现Web框架了. 半成品自定义web框架 import socket sk = socket.socket() sk.bind(("127.0.0.1", 80)) sk.listen() while True: conn, addr = sk.accept() data = conn.recv(…
1.XML模块 xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单,不过,古时候,在json还没诞生的黑暗年代,大家只能选择用xml呀,至今很多传统公司如金融行业的很多系统的接口还主要是xml. xml的格式,就是通过<>节点来区别数据结构的 xml协议在各个语言里的都 是支持的,在python中可以用以下模块操作xml: # print(root.iter('year')) #全文搜索 # print(root.find('country')) #在…
1.序列化和反序列化 我们把对象(变量)从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling. 反过来,把变量内容从序列化的对象重新读到内存里称之为反序列化,即unpickling. 为什么要保持序列化?   1.持久化状态 2.跨平台数据交互 各种语言之间,实现数据相互转换 2.json.eval.pickle eval()虽然也能进行数据提取,但是,eval()只能识别python 定义的数据类型,用来做序列化不具有跨平台型 Json的使用 x="[1,2,true…
1. jQuery是什么?是一个轻量级的,兼容多浏览器的JS库(write less, do more) 1. 是一个工具,简单方便的实现一些DOM操作 2. 不用jQuery完全可以,但是不明智. 3. jQuery能做的事儿 1. 查找标签 2. 修改样式 3. 事件 4. AJAX (Django中讲) 5. 插件机制 4. jQuery是一个类库,类似于Python中的模块 A.使用时将相关文件(.js)拖进html文件中 <script src="jquery-3.3.1.min…
%还是format Python中格式化字符串目前有两种阵营:%和format,我们应该选择哪种呢? 自从Python2.6引入了format这个格式化字符串的方法之后,我认为%还是format这根本就不算个问题.不信你往下看. # 定义一个坐标值 c = (250, 250) # 使用%来格式化 s1 = "敌人坐标:%s" % c 上面的代码很明显会抛出一个如下的TypeError: TypeError: not all arguments converted during str…
一.DBUtils模块 介绍 The DBUtils suite is realized as a Python package containing two subsets of modules, one for use with arbitrary DB-API 2 modules, the other one for use with the classic PyGreSQL module. The dependencies of the modules in the universal…
一.外键foreign key    外键约束: 1.必须先创建被关联表才能创建关联表 2.插入记录时,必须先插入被关联表的记录,才能插入关联表(要用到被关联表)的记录 3.若不设置同步更新和同步删除,更新和删除都会受到限制 #表类型必须是innodb存储引擎,且被关联的字段,即references指定的另外一个表的字段,必须保证唯一 create table department( id int primary key, name varchar(20) not null )engine=in…
一. 异步与回调机制 问题: 1.任务的返回值不能得到及时的处理,必须等到所有任务都运行完毕才能统一进行处理 2.解析的过程是串行执行的,如果解析一次需要花费2s,解析9次则需要花费18s 解决一: (线程实现异步,回调解析结果) from concurrent.futures import ProcessPoolExecutor,ThreadPoolExecutor from threading import current_thread import requests import os i…
一.GIL:全局解释器锁 1 .GIL:全局解释器锁 GIL本质就是一把互斥锁,是夹在解释器身上的, 同一个进程内的所有线程都需要先抢到GIL锁,才能执行解释器代码 2.GIL的优缺点: 优点:  保证Cpython解释器内存管理的线程安全 缺点:同一进程内所有的线程同一时刻只能有一个执行,也就说Cpython解释器的多线程无法实现并行 二.GIL与多线程 有了GIL的存在,同一时刻同一进程中只有一个线程被执行 听到这里,有的同学立马质问:进程可以利用多核,但是开销大,而python的多线程开销…
一.进程队列补充-创建进程队列的另一个类JoinableQueue JoinableQueue同样通过multiprocessing使用. 创建队列的另外一个类: JoinableQueue([maxsize]):这就像是一个Queue对象,但队列允许项目的使用者通知生成者项目已经被成功处理.通知进程是使用共享的信号和条件变量来实现的. 参数介绍:     maxsize是队列中允许最大项数,省略则无大小限制.   方法介绍:     JoinableQueue的实例p除了与Queue对象相同的…
一. 异常 1.什么是异常 异常是错误发生的信号,程序一旦出错,如果程序中还没有相应的处理机制 那么该错误就会产生一个异常抛出来,程序的运行也随之终止 2.一个异常分为三部分: 1.异常的追踪信息 2.异常的类型 3.异常的值 3.异常的分类: 1.语法异常: 这类异常应该在程序执行前就改正 print('start....') x=1 x+=1 if print('stop....') 2.逻辑上的异常 #TypeError:int类型不可迭代 for i in 3: pass #ValueE…
一.封装之property @property把一个函数伪装成一个数据类型  @伪装成数据的函数名.setter   控制该数据的修改,修改该数据时触发 @伪装成数据的函数名.delect  控制该数据的删除,删除该数据时触发 class People: def __init__(self,name): self.__name=name @property #将name()函数伪装成一个数据属性name def name(self): #obj.name print('您现在访问的是用户名...…