在内置函数(dict.list.set.tuple)的基础上,collections模块还提供了几个其他的数据类型:Counter.deque.defaultdict.namedtuple和OrdereDict等 1.namedtuple 作用:用于生成一个可以使用名字访问元素内容的tuple 如果要表示一个点,我们可以这样表示,但是在使用时我们很难看出这个tuple是用来表示一个坐标 p = (1,2) 因此我们调用namedtuple来解决这个问题 表示二维中的一个点: import col…
什么是序列? 就是每一个元素被有序的排成一列 什么是序列化? 就是将原本的列表.字典等内容转化成字符串的过程 什么时候会用到序列化? 数据存储(把数据放在文件.数据库),网络传输等 序列化的目的 1.以某种存储形式使自定义对象持久化 2.将对象从一个地方传递到另一个地方 3.使程序更具维护性 序列化:数据结构转换成字符串 反序列化:字符串转换成数据结构 三大序列化模块: 1.Json 特点: json是一个通用的序列化格式且只有很少一部分数据(str.list.dict.tuple.数字)类型能…
time模块 python表示时间的三种方式:时间戳.元祖(struct_time).格式化时间字符串 三种格式之间的转换: 1.时间戳 就是从1970年1月1日0点0分0秒开始按秒计算的偏移量,时间戳所给的时间是给计算机识别的 import time t = time.time() print(t,type(t)) #1566992452.458001 <class 'float'> 时间戳->结构化时间: import time t = time.time() print(t) #1…
在导入自定义的模块时,除了指定模块名之外,也需要指定目录,由于Python把目录称作包,因此,这类导入被称为包导入.包导入把计算机上的目录变成Python的命名空间,而目录中所包含的子目录和模块文件则对应命名空间中的属性. Python已经导入的模块保存在一个内置的sys.modules字典中,以便记录哪些模块已经记录了. 一,模块搜索路径 导入过程首先需要定位导入文件的位置,也就是,告诉Python到何处去找到要导入的文件,因此,需要设置模块的搜索路径.在大多数情况下,Python会自动到默认…
一.collections模块 在内置数据类型(dict.list.set.tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter.deque.defaultdict.namedtuple和OrderedDict等. 1.namedtuple:生成可以使用名字来访问元素内容的tuple 2.deque:双端队列,可以快速的从另外一侧追加和推测对象 3.Counter:计数器,主要用来计数 4.OrderedDict:有序字典 5.defaultdict:带有默…
怎么一下子就来学了模块? 其实学了判断.循环.函数等知识就可以开始下水写程序了,不用在意其他的细节,等你用到的时候再回过头去看,此所谓囫囵吞枣学习法. 为啥学模块? 有点用的.或者有点规模的程序都是要引入模块的. 一个小例子 你可以把一个模块(以文件的形式组织的)看成一个大的对象,里面有个中属性,以变量的方式使用. 例子: b.py def spam(text): print(text, 'spam') a = 'tuhooo' a.py import b b.spam('gumby') pri…
python Web程序 众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. Python的WEB框架分为两类: 自己写socket,自己处理请求 基于wsgi(Web Server Gateway Interface WEB服务网关接口,实现socket功能),自己处理请 如图示:…
5.1 如何引入模块 在Python中用关键字import来引入某个模块,比如要引用模块math,就可以在文件最开始的地方用import math来引入.在调用math模块中的函数时,必须这样引用: 模块名.函数名 有时候我们只需要用到模块中的某个函数,只需要引入该函数即可,此时可以通过语句 from 模块名 import 函数名1,函数名2.... 5.2 如何定义自己的模块 在Python中,每个Python文件都可以作为一个模块,模块的名字就是文件的名字. 比如有这样一个文件test.py…
模块导入 当文件夹中有这样一个自定义的command模块 在它的内部写下下列代码: print('这个py文件被调用!') def fuc(): print('这个函数被调用!') 然后我们在command模块中执行下列代码: import command #这个py文件被调用! 我们如果在这段程序中反复执行多次这一段代码,这一个文件结果也只会被导入一次 import command #这个py文件被调用! import command import command import command…
正则表达式: 它是字符串的一种匹配模式,用来处理字符串,可以极大地减轻处理一些复杂字符串的代码量 字符组:它是在同一位置可能出现的各种字符组成了一个字符组,用[]表示,但是它的结果只能是一个数字或者一个大写字母或小写字母等 下面测试以该网站为例http://tool.chinaz.com/regex/ #正则表达式 匹配字符串 匹配结果 #[0-9] 9 9 [0-9]的写法就相当于在用[0123456789] #[0123456789] 0 0 #[a-z] 1 None 这里只匹配小写字符a…
logging模块 用于便捷记录日志且线程安全的模块(便捷的写文件的模块,不允许多个人同时操作文件) 1.单文件日志 import logging logging.basicConfig(filename='log.log', #指定往哪个文件里写 format='%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s', datefmt='%Y-%m-%d %H:%M:%S %p', level=10, #只记录level…
模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才能完成(函数又可以在不同的.py文件中),n个 .py 文件组成的代码集合就称为模块. 如:os 是系统相关的模块:file是文件操作相关的模块 模块分为三种: 自定义模块 第三方模块 内置模块 使用模块 导入模块 Python之所以应用越来越广泛,在一定程度上也依赖于其为程序员提供了大量的模块以供…
Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. 1.创建django程序 通过命令行 django-admin startproject mysite 创建project 一个工程可以包含多个app,app共用一个project的配置文件 cd mysite python manage.py startapp app01 创建app01 pyt…
学习Python类时,我们明白了类的本质,以及所谓的面向对象编程思想强调的对事物本身的属性,我们对某一类事物进行描述——采用了很多方法,这些方法描述了类的属性(比如猫科动物的眼睛,四肢,是否哺乳类等等)老虎属于猫科动物,因此我们可以用猫科动物的类描述来描述老虎.但除了这些共性之外,老虎自身也具有一定的差异性,这就引出了继承这一概念: 即我们在描述老虎这一对象时,可以保留猫科动物这个类的属性,同时为老虎描述新的 属性,当然,我们也是创建老虎类来描述老虎(毕竟还有东北虎,华南虎之分).下面请见一段代…
参考: 高级特性 切片 Note 1.掌握了Python的基础语法之后,就可以写出很多很有用的程序了,比如打印1-90的奇数: #!/usr/bin/env python3 L = [] n = 1 while n <= 90 : L.append(n) n = n + 2 print(L) sh-3.2# ./easyprogram.py [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41…
使用dir()我们可以知道这个数据类型的内置函数有什么方法: print(dir(int)) print(dir(bool)) print(dir([])) print(dir({})) print(dir(set)) 1.迭代器 iterable:可迭代的 迭代就是将数据能够一个一个按顺序取出来 s = 'abc' print('__iter__' in dir(s)) #True li = [1,2] print('__iter__' in dir(li)) #True b = False…
基本数据类型补充 set set集合,是一个无序且不重复的元素集合 #创建 s = {11,22,33,44}#类似字典 s = set() #转换 l = (11,22,33,44) s1 = set(l) #iterable print(s1) l = [11,22,33,44] s1 = set(l) #iterable print(s1) l = "1234" s1 = set(l) #iterable print(s1) {33, 11, 44, 22} {33, 11, 4…
模块是一个包含所有你定义的函数和变量的文件,其后缀名是.py.模块可以被别的程序引入,以使用该模块中的函数等功能.这也是使用 python 标准库的方法. 1.模块的定义与分类 在python中模块实际上就是一个以 .py 结尾的源码文件.其中模块主要可以分为三种: 一是官方为我们提供的内建的模块 二是我们自己写的自定义的模块 三是其他地方提供的第三方模块 2.模块的导入 使用 import 导入 # 导入模块 import 模块名1,模块名2,... # 使用模块中的方法等 模块名.函数/类/…
大家都知道面向对象的三大特性:封装,继承,多态.封装特性在上一章节已经讲解过.这一章节主要讲解继承和多态. 继承: 当定义一个类的时候,可以从现有的类进行继承.那么新定义的类可以称为子类,被继承的现有的类称为基类,父类或者超类. 上一章节大家应该有所注意以下代码: >>> class Animal(object): pass object类是python所有类的基类,Animal类是object类的子类.Animal类继承于object类. 继承到底有什么好处?举个例子: >>…
15.1 屏幕抓取 15.1.1 Tidy和XHTML解析 Tidy:用来修复不规范且随意的HTML文档的工具. 为什么用XHTML: 和旧版本的HTML之间最主要的区别:HTML可能只用一个开始标签(<p>)结束一段然后开始下一段,而在XHTML中,首先要显示的关闭当前段落(</p>),  这种行为让XHTML更容易解析, 另外一个好处是:它是XML的一种,可以对他使用XML工具,例如xpath. 解析XTML用HTMLParser. 15.1.2 Beautiful Soup…
用在线网页测试正则表达式时,JavaScript不支持 零宽度正回顾后发断言 (?<=exp)测试时一直匹配失败 但re模块是支持 (?<=exp) 的 终于脱坑…
匿名函数: 未解决一些简单的需求而设计的函数 语法: func = lambda x : x**2 func:函数名 lambda:类似def的关键字 x:参数 x**2:返回值表达式 适用内置函数: min().max().filter().sorted().map()等 使用: l = [-2,5,6,1,0,4,12] print(list(filter(lambda x: x % 3 == 0,l))) #[6, 0, 12] print(list(sorted(l,key=lambda…
python函数递归就是自己调用自己,无限循环,但是python限制了调用的次数1000次,就会终止,递归用在栏目分类,采集程序比较多,下面简单说函数递归用法和实例 1,函数递归用法 def func(n): n=n/2 print(n) func(n) 2,函数递归回归,也就是函数递归后,要一层层返回 def fuc(a): a=a/2 print(a) fuc(a) print(a) fuc(10) 输出结果 5 2 1 0 0 1 2 5 注意一定要知道,递归函数一定是这样递归回来. 文章…
集合是python独有的数据列表,集合可以做数据分析,集合是一个无序的,唯一的的数据类型,可以确定列表的唯一性,说一下集合的创建和基本常见操作方法 1,集合的创建 s={1,2,4} 也可以用set() 创建集合 2,集合的基本操作方法 s1={2,3,4,6} s1.add(5) 增加一个元素 s1.pop() 随机删除一个元素 s1.remove(4) 当出现一个不存在的数据的时候,出现错误 s1.discard(4) 当出现一个不存在的数据的时候 ,不会报错 s1.update({1,2}…
字典是python比较常见的数据类型,跟列表一样,比如的字典的创建,字典的常见的操作的方法,增加,删除,修改,查找等方法,字典的一共的数据方法为 keys()  values() fromkeys()  pop() popitem() clear() get() update() copy() setdefault() 1,字典的创建方法 空字典 d1={} 用大括号 d1={'name':'laowu','url':'96net.com.cn'} dict(f=7,b=1,c=2) 用dict…
unittest 单元测试的一个框架什么框架 一堆工具的集合. TestCase TestSuite 测试套件,多个用例在一起 TestLoader是用来加载TestCase到TestSuite中的 TestRunner是来执行测试用例的,测试的结果会保存到TestResult实例中, 包括运行了多少测试用例,成功了多少,失败了多少等信息 用例必须以test开头 import unittest import HTMLTestRunner from BeautifulReport import B…
1  demo import logging # log level: # DEBUG # INFO # Warning # Error # CRITICAL logging.basicConfig(filename = "test.log", level=logging.DEBUG) // 配置: 设置log的输出文件和级别 logging.error("error message") logging.warning("warning message&q…
#-*- coding: utf-8 -*- import datetime #给定日期向后N天的日期 def dateadd_day(days): d1 = datetime.datetime.now() d3 = d1 + datetime.timedelta(days) return d3 #昨天 def getYesterday(): today = datetime.date.today() oneday = datetime.timedelta(days=1) yesterday =…
函数位置参数顾名思义就是按位置排序,按位置对应参数,位置一一对应,函数的关键词参数是不按照顺序来的,可以指定的参数传值.但是注意的是,位置参数必须在关键词参数之前. 1,函数位置参数 def good(id,name,url): print(id,name) good(1,'老王') 2,函数的关键词参数 def good(id,name,url): print(id,name,url) good(id,name,url="www.96net.com.cn") !!!  注意的是,位置…
多表查询: 内连接查询: 首先:创建两个表一个为tableA,一个为tableB,并且插入数据(代码省略) 同时查询两个表的记录: select * from tableA,tableB; 根据tableA中id 等于 tableB 中refer_id 进行内连接查询: select * from tableA,tableB where tableA.id=tableB.refer_id; 也可以用一下方法进行内连接查询: select * from tableB inner join tabl…