自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

是金子总会发光

print('Hello World!!!')

  • 博客(52)
  • 收藏
  • 关注

原创 重要的Python库

NumPyNumPy(Numerical Python)是Python科学计算的基础包。包括但不限于以下功能:1、数组处理快速高效的多维数组对象ndarray 用于对数组执行元素级计算以及直接对数组执行数学运算的函数 用于读写硬盘上基于数组的数据集的工具 线性代数运算、傅里叶变换、以及随机数生成 用于将C、C++、Fortran代码集成到Python的工具2、作为在算法之间传...

2018-09-27 18:08:42 256

原创 Python笔记——访问数据库

# 导入MySQL驱动:>>> import mysql.connector# 注意把password设为你的root口令:>>> conn = mysql.connector.connect(user='root', password='password', database='test')>>> cursor = conn.cur...

2018-09-27 16:08:52 210 1

原创 Python笔记——web开发之HTTP协议简介

在Web应用中,服务器把网页传给浏览器,实际上就是把网页的HTML代码发送给浏览器,让浏览器显示出来。而浏览器和服务器之间的传输协议是HTTP,所以: HTML是一种用来定义网页的文本,会HTML,就可以编写网页; HTTP是在网络上传输HTML的协议,用于浏览器和服务器的通信。 在举例子之前,我们需要安装Google的Chrome浏览器。为什么要使用Chrome浏览器而不...

2018-09-25 17:55:52 132

原创 hql和sql的区别

hql没有delete和update 1、首先,hql是面向对象查询的;sql是面向数据库做查询。2、hql的语法结构:from  + 类名+类对象 +where+类对象属性的条件;      sql的语法结构:from  +数据库表名+ where +表字段条件3、新增:hql不需要再用insert语句,只需构造新增对象后调用save()方法4、修改:hql不需要再用up...

2018-09-18 17:01:14 310

原创 Python笔记——正则表达式

字符串是编程时涉及到的最多的一种数据结构,对字符串进行操作的需求几乎无处不在。比如判断一个字符串是否是合法的Email地址,虽然可以编程提取@前后的子串,再分别判断是否是单词和域名,但这样做不但麻烦,而且代码难以复用。正则表达式是一种用来匹配字符串的强有力的武器。它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它“匹配”了,否则,该字符串就是不合法的。...

2018-09-13 21:05:05 136

原创 Python笔记——分布式进程

在Thread和Process中,应当优选Process,因为Process更稳定,而且,Process可以分布到多台机器上,而Thread最多只能分布到同一台机器的多个CPU上。Python的multiprocessing模块不但支持多进程,其中managers子模块还支持把多进程分布到多台机器上。一个服务进程可以作为调度者,将任务分布到其他多个进程中,依靠网络通信。由于managers模块...

2018-09-13 20:39:16 123

原创 Python笔记——进程和线程的优缺点

我们介绍了多进程和多线程,这是实现多任务最常用的两种方式。现在,我们来讨论一下这两种方式的优缺点。首先,要实现多任务,通常我们会设计Master-Worker模式,Master负责分配任务,Worker负责执行任务,因此,多任务环境下,通常是一个Master,多个Worker。如果用多进程实现Master-Worker,主进程就是Master,其他进程就是Worker。如果用多线程实现...

2018-09-13 16:14:55 819

原创 Python笔记——ThreadLocal

在多线程环境下,每个线程都有自己的数据。一个线程使用自己的局部变量比使用全局变量好,因为局部变量只有线程自己能看见,不会影响其他线程,而全局变量的修改必须加锁。但是局部变量也有问题,就是在函数调用的时候,传递起来很麻烦:def process_student(name): std = Student(name) # std是局部变量,但是每个函数都要用它,因此必须传进去:...

2018-09-13 15:53:54 111

原创 Python笔记——多线程

多任务可以由多进程完成,也可以由一个进程内的多线程完成。我们前面提到了进程是由若干线程组成的,一个进程至少有一个线程。由于线程是操作系统直接支持的执行单元,因此,高级语言通常都内置多线程的支持,Python也不例外,并且,Python的线程是真正的Posix Thread,而不是模拟出来的线程。Python的标准库提供了两个模块:_thread和threading,_thread是低级...

2018-09-13 15:47:52 114

原创 Python笔记——多进程

小结在Unix/Linux下,可以使用fork()调用实现多进程。要实现跨平台的多进程,可以使用multiprocessing模块。进程间通信是通过Queue、Pipes等实现的。  要让Python程序实现多进程(multiprocessing),我们先了解操作系统的相关知识。Unix/Linux操作系统提供了一个fork()系统调用,它非常特殊。普通的函数调用,调用...

2018-09-13 11:58:36 130

原创 Python笔记——序列化

在程序运行的过程中,所有的变量都是在内存中,比如,定义一个dict:d = dict(name='Bob', age=20, score=88)可以随时修改变量,比如把name改成'Bill',但是一旦程序结束,变量所占用的内存就被操作系统全部回收。如果没有把修改后的'Bill'存储到磁盘上,下次重新运行程序,变量又被初始化为'Bob'。我们把变量从内存中变成可存储或传输的过程称之...

2018-09-12 18:09:57 138

原创 Python笔记——操作文件和目录

如果我们要操作文件、目录,可以在命令行下面输入操作系统提供的各种命令来完成。比如dir、cp等命令。如果要在Python程序中执行这些目录和文件的操作怎么办?其实操作系统提供的命令只是简单地调用了操作系统提供的接口函数,Python内置的os模块也可以直接调用操作系统提供的接口函数。打开Python交互式命令行,我们来看看如何使用os模块的基本功能:>>> impo...

2018-09-12 12:00:08 237

原创 Python笔记——StringIO和BytesIO

1、StringIO很多时候,数据读写不一定是文件,也可以在内存中读写。StringIO顾名思义就是在内存中读写str。要把str写入StringIO,我们需要先创建一个StringIO,然后,像文件一样写入即可:>>> from io import StringIO>>> f = StringIO()>>> f.writ...

2018-09-12 10:56:08 170

原创 Python笔记——文件读写

IO在计算机中指Input/Output,也就是输入和输出。由于程序和运行时数据是在内存中驻留,由CPU这个超快的计算核心来执行,涉及到数据交换的地方,通常是磁盘、网络等,就需要IO接口。由于CPU和内存的速度远远高于外设的速度,所以,在IO编程中,就存在速度严重不匹配的问题。举个例子来说,比如要把100M的数据写入磁盘,CPU输出100M的数据只需要0.01秒,可是磁盘要接收这100M数据可...

2018-09-11 18:22:59 1245

原创 Python笔记——文档测试

如果你经常阅读Python的官方文档,可以看到很多文档都有示例代码。比如re模块就带了很多示例代码:>>> import re>>> m = re.search('(?<=abc)def', 'abcdef')>>> m.group(0)'def'可以把这些示例代码在Python的交互式环境下输入并执行,结果与文档中的示...

2018-09-11 18:21:26 162

原创 Python笔记——调试

程序能一次写完并正常运行的概率很小,基本不超过1%。总会有各种各样的bug需要修正。有的bug很简单,看看错误信息就知道,有的bug很复杂,我们需要知道出错时,哪些变量的值是正确的,哪些变量的值是错误的,因此,需要一整套调试程序的手段来修复bug。1、print()def foo(s): n = int(s) print('>>> n = %d' % n...

2018-09-11 17:07:44 111

原创 Python笔记——错误处理

高级语言通常都内置了一套try...except...finally...的错误处理机制,Python也不例外。一、try的机制try: print('try...') r = 10 / 0 print('result:', r)except ZeroDivisionError as e: print('except:', e)finally: ...

2018-09-11 15:57:58 367

原创 Python笔记——使用元类

type()动态语言和静态语言最大的不同,就是函数和类的定义,不是编译时定义的,而是运行时动态创建的。比方说我们要定义一个Hello的class,就写一个hello.py模块:class Hello(object): def hello(self, name='world'): print('Hello, %s.' % name)当Python解释器载入...

2018-09-05 16:57:18 157

原创 Python笔记——使用枚举类

当我们需要定义常量时,一个办法是用大写变量通过整数来定义,例如月份:JAN = 1FEB = 2MAR = 3...NOV = 11DEC = 12好处是简单,缺点是类型是int,并且仍然是变量。更好的方法是为这样的枚举类型定义一个class类型,然后,每个常量都是class的一个唯一实例。Python提供了Enum类来实现这个功能:from enum import E...

2018-09-04 18:28:28 262

原创 Python笔记——定制类

看到类似__slots__这种形如__xxx__的变量或者函数名就要注意,这些在Python中是有特殊用途的。__slots__我们已经知道怎么用了,__len__()方法我们也知道是为了能让class作用于len()函数。除此之外,Python的class中还有许多这样有特殊用途的函数,可以帮助我们定制类。1、__str__先定义一个Student类,打印一个实例:class St...

2018-08-31 18:20:01 105

原创 Python笔记——多重继承

继承是面向对象编程的一个重要的方式,因为通过继承,子类就可以扩展父类的功能。1、假设我们要实现以下4种动物:Dog - 狗狗;Bat - 蝙蝠;Parrot - 鹦鹉;Ostrich - 鸵鸟,采用多重继承。首先,主要的类层次仍按照哺乳类和鸟类设计:class Animal(object): pass# 大类(哺乳动物和鸟类):class Mammal(Animal):...

2018-08-31 15:43:19 273

原创 Python笔记——使用@property

在绑定属性时,如果我们直接把属性暴露出去,虽然写起来很简单,但是,没办法检查参数,导致可以把成绩随便改:s = Student()s.score = 9999这显然不合逻辑。为了限制score的范围,可以通过一个set_score()方法来设置成绩,再通过一个get_score()来获取成绩,这样,在set_score()方法里,就可以检查参数:class Student(ob...

2018-08-30 17:48:21 140

原创 Python笔记——使用__slots__

1、正常情况下,当我们定义了一个class,创建了一个class的实例后,我们可以给该实例绑定任何属性和方法,这就是动态语言的灵活性:class Student(object): # 创建一个class实例 passs = Student()s.name = 'Michael' # 动态给实例绑定一个属性print(s.name)def set_age(self, a...

2018-08-30 15:15:40 251

原创 Python笔记——实例属性和类属性

由于Python是动态语言,根据类创建的实例可以任意绑定属性。给实例绑定属性的方法是通过实例变量,或者通过self变量:class Student(object): def __init__(self, name): self.name = names = Student('Bob')s.score = 90但是,如果Student类本身需要绑定一个属...

2018-08-29 21:16:40 184

原创 Python笔记——获取对象信息

当我们拿到一个对象的引用时,如何知道这个对象是什么类型、有哪些方法呢?1、使用type()print(type(123))print(type('ssddfr'))print(type(None))# 结果<class 'int'># 结果<class 'str'># 结果<class 'NoneType'>如果一个变量指向函数或者类,也...

2018-08-29 20:34:48 100

原创 Python笔记——继承和多态

在OOP程序设计中,当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(Subclass),而被继承的class称为基类、父类或超类(Base class、Super class)。1、继承比如,我们已经编写了一个名为Animal的class,有一个run()方法可以直接打印:class Animal(object): def run(se...

2018-08-29 17:06:14 142

原创 Python笔记——访问限制

1、__xxx:实例的变量名如果以__开头,就变成了一个私有变量(private),只有内部可以访问,外部不能访问              如果外部代码要获取name和score怎么办?可以给Student类增加get_name和get_score方法              又要允许外部代码修改score怎么办?可以再给Student类增加set_score方法2、__xxx__...

2018-08-28 18:04:48 124

原创 Python笔记——类和实例

面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可能不同。1、仍以Student类为例,在Python中,定义类是通过class关键字:class Student(object): passclass后面紧接着是类名,即Stu...

2018-08-28 16:05:09 88

原创 Python笔记——模块

在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护。为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式。在Python中,一个.py文件就称之为一个模块(Module)。1、使用模块的好处最大的好处是大大提高了代码的可维护性。其次,编写代码不必从零开始。当一个模...

2018-08-27 17:54:31 145

原创 Python笔记——偏函数

Python的functools模块提供了很多有用的功能,其中一个就是偏函数(Partial function)。1、要注意,这里的偏函数和数学意义上的偏函数不一样。在介绍函数参数的时候,我们讲到,通过设定参数的默认值,可以降低函数调用的难度。而偏函数也可以做到这一点:int()函数可以把字符串转换为整数,当仅传入字符串时,int()函数默认按十进制转换:>>> i...

2018-08-25 20:28:12 99

原创 Python笔记——装饰器

1、由于函数也是一个对象,而且函数对象可以被赋值给变量,所以,通过变量也能调用该函数。>>> def now():... print('2015-3-25')...>>> f = now>>> f()2015-3-252、函数对象有一个__name__属性,可以拿到函数的名字:>>> now...

2018-08-25 17:02:53 110

原创 Python笔记——匿名函数lambda

当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便。1、计算,以map()函数为例,计算f(x)=时,除了定义一个f(x)的函数外,还可以直接传入匿名函数:print(list(map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9])))# 结果[1, 4, 9, 16, 25, 36, 49, 64, 81]2、...

2018-08-25 15:29:25 568

原创 Python笔记——返回函数

高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回。我们来实现一个可变参数的求和。通常情况下,求和的函数是这样定义的:def calc_sum(*args): ax = 0 for n in args: ax = ax + n return ax但是,如果不需要立刻求和,而是在后面的代码中,根据需要再计算怎么办?可以不返回求和的结...

2018-08-24 17:45:20 128

原创 Python笔记——sorted

排序算法:无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小。如果是数字,我们可以直接比较,但如果是字符串或者两个dict呢?直接比较数学上的大小是没有意义的,因此,比较的过程必须通过函数抽象出来。1、利用Python内置的sorted()函数对list进行排序:print(sorted([36, 5, -12, 9, -21]))#结果[-21, -12, 5, 9, 36...

2018-08-23 17:58:50 226

原创 Python笔记——filter

Python内建的filter()函数用于过滤序列。和map()类似,filter()也接收一个函数和一个序列。和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。1、在一个list中,删掉偶数,只保留奇数:def is_odd(n): return n % 2 == 1print(list(fil...

2018-08-23 15:30:30 145

原创 Python笔记——map/reduce

1、mapmap()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回。比如我们有一个函数f(x)=,要把这个函数作用在一个list [1, 2, 3, 4, 5, 6, 7, 8, 9]上,就可以用map()实现如下:def f(x): return x*xr = map(f, [1, 2, ...

2018-08-22 11:27:43 133

原创 Python笔记——迭代器

我们已经知道,可以直接作用于for循环的数据类型有以下几种:一类是集合数据类型,如list、tuple、dict、set、str等;一类是generator,包括生成器和带yield的generator function。这些可以直接作用于for循环的对象统称为可迭代对象:Iterable。1、可以使用isinstance()判断一个对象是否是Iterable对象:from ...

2018-08-20 15:27:06 81

原创 Python笔记——生成器

1、通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间。在Python中,这种一边...

2018-08-17 18:01:56 430

原创 Python笔记——列表生成式

列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式。1、生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]print(list(range(1,11)))2、生成[1x1, 2x2, 3x3, ..., 10x10]方法一:用循环L = []for x in range(1, 11...

2018-08-16 22:55:58 155

原创 Python笔记——迭代

如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration)1、dict的迭代list这种数据类型虽然有下标,但很多其他数据类型是没有下标的,但是,只要是可迭代对象,无论有无下标,都可以迭代,比如dict就可以迭代:d = {'a': 1, 'b': 2, 'c': 3}for key in d: pri...

2018-08-14 17:29:19 126

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除