摘要:
参考 python核心编程 操作字符串是件大事,因为,在编程中涉及到的最多的数据结构非字符串莫属了。 正则表达式(regex),为高级的文本模式匹配、抽取、与/或文本形式的搜索和替换功能提供了基础。 解释:正则表达式,是一些由字符和特殊符号组成的字符串,它描述了模式的重复或者表述多个字符,这就赋予它 阅读全文
摘要:
参考 python核心编程 操作字符串是件大事,因为,在编程中涉及到的最多的数据结构非字符串莫属了。 正则表达式(regex),为高级的文本模式匹配、抽取、与/或文本形式的搜索和替换功能提供了基础。 解释:正则表达式,是一些由字符和特殊符号组成的字符串,它描述了模式的重复或者表述多个字符,这就赋予它 阅读全文
摘要:
摘录 python核心编程 上节介绍的thread模块,是不支持守护线程的。当主线程退出的时候,所有的子线程都将终止,不管他们是否仍在工作。 本节开始,我们开始介绍python的另外多线程模块threading,该模块支持守护线程,其工作方式:守护线程一般是一个等待客户端请求的服务器。如果没有客户端 阅读全文
摘要:
参考书籍:python核心编程 _thread模块除了可以派生线程外,还提供了基本的同步数据结构,又称为锁对象(lock object,也叫原语锁、简单锁、互斥锁、互斥和二进制信号量)。 下面是常用的线程函数: _thread模块的核心函数是start_new_thread()。专门用来派生新的线程 阅读全文
摘要:
本文主要介绍如何在python中使用线程。 全局解释器锁: python代码的执行是由python虚拟机(又名解释器主循环)进行控制的。python中,主循环中同时只能有一个控制线程在执行,就像单核CPU系统中的多线程一样——内存中可以有很多程序,但是在任意给定时刻只有有一个程序在执行。同理,虽然p 阅读全文
摘要:
多线程编程 在多线程(multithreaded,MT)出现之前,计算机程序的执行都是由单个步骤序列组成的,该序列组合在主机的CPU中按照同步顺序执行。无论是任务本身需要按照步骤顺序执行,还是整个过程实际上包含了多个子任务,都需要按照既定顺序方式执行。那么,如果这些子任务相互独立,没有因果关系呢,我 阅读全文
摘要:
当我们在内存中定义一个dict的时候,我们是可以随时修改变量的内容的: 我们可以随时修改name和age的值。但是当我们重新运行程序的时候,name、age的初始化值还是wc和28,实际情况下我们需要保存该dict的最后的值。 我们把变量从内存中变成可存储或传输的过程称之为序列化。python中称之 阅读全文
摘要:
python内置了os模块可以直接调用操作系统提供的接口函数,os.name查询的是操作系统,‘nt’表示windows系统 使用os.environ查看环境变量: 还可以获得某个具体的环境变量的值: 查看当前目录的绝对路径: 在某个目录下面创建新目录,需要两个步骤:先join(合成路径),再mkd 阅读全文
摘要:
主要介绍python两个内存读写IO:StringIO和BytesIO,使得读写文件具有一致的接口 StringIO 内存中读写str。需要导入StringIO 也可以用一个str初始化StringIO,然后像读文件一样读取: BytesIO 内存中操作二进制数据: 细心的童鞋会发现,f.read( 阅读全文
摘要:
IO——Input/Output,即输入输出。对于计算机来说,程序运行时候数据是在内存中的,涉及到数据交换的地方,通常是磁盘、网络等。比如通过浏览器访问一个网站,浏览器首先把请求数据发送给网站服务器,这个动作叫外发数据,即Output,随后网站服务器把数据网页发送给浏览器,这个动作是从外面接收数据, 阅读全文
摘要:
单元测试反应的是一种以测试为驱动的开发模式,最大的好处就是保证一个程序模块的行为符合我们设计的测试用例,在将来修改的时候,可以极大程度保证该模块行为仍然是正确的。 下面我编写一个Dict来,这个类的行为和dict一直,同时可以通过属性来访问。 mydict.py文件: 引入python自带的unit 阅读全文
摘要:
世界人都知道,程序总会有bug存在。复杂点的bug一般人不能一眼看出,这就一要一套调试程序的手段。 方法一:使用print()函数直接打印: 我们在认为可能出错的地方打印变量出来。这有很大的弊端,因为打印的代码实际功能并不需要。这都是垃圾信息。 方法二:用断言assert代替打印print() as 阅读全文
摘要:
高级语言包括python一般都内置了一套try…catch…finally的错误处理机制: 如果认为某些代码可能会出错,可以用try来运行这段代码; 如果try的代码块出现错误,则try代码省下的代码不会继续执行,而是直接跳转到catch代码块,catch就是错误处理代码块(如果没有错误,则不执行) 阅读全文
摘要:
枚举类型:在实际问题中,有些变量的值被限定在一个有限的范围内。例如:一个星期有且只有7天,一年有且只有十二个月,一个班每周有6门课程等等。如果把这些量说明为整型、字符串或者其他类型显然是不合适。编程界为此提供了一种称为枚举的类型。在枚举类型定义中列举出所有可能的取值,被说明为该枚举类型的变量取值范围 阅读全文
摘要:
Python中的class可以定义许多定制方法,可以让我们方便的生成特定的类。 我们之前介绍了__slots__、__len__(),python中还有许多这样的特殊函数: __str__ 上面我们定义了一个普通的Student类,打印出的是一堆<__main__.Student object at 阅读全文
摘要:
以Animal类为例,假设要实现以下4种动物: Dog(狗)、Bat(蝙蝠)、Parrot(鹦鹉)和Ostrich(鸵鸟) 如果按照哺乳类和鸟类来区分的话,可以这样设计: Animal: |--Mammal |--Dog |--Bat |--Bird |--Parrot |--Ostrich 但是, 阅读全文
摘要:
python中,我们可以直接添加和修改属性的值: 但是,101明显超过了满分100分,不合理。可以通过创建setScore()方法,进行参数检查: 但是上面的过程略显复杂。 这时,可以使用@property,既可以用类似属性的方法访问类的变量,又可以检查参数,@property实现起来稍微有点复杂: 阅读全文
摘要:
绑定属性 从之前的文章中,我们知道python是动态语言——实例可以绑定任意属性。 那如果实例绑定的属性和类的属性名一样的话,会是什么情况呢? 可知,我们可以给实例变量绑定和类属性同样名字的变量;同时如果实例变量和类属性使用相同的名字时,实例属性将屏蔽掉类属性;最后,如果删除实例属性后,同样的名称, 阅读全文
摘要:
type() type()函数用于判断对象类型: type()返回的是对应class类型。下面是判断两个变量的type类型是否相同: 如何判断一个对象是否是函数呢?使用types模块中定义的常量: isinstance() 如果存在以下继承关系:object->Animal->Dog->Husty 阅读全文
摘要:
继承 在面向对象的程序设计中,当我们定义一个class时候,可以从现有的class继承,新的class成为子类,被继承的class称为基类,父类或超类。 比如,编写一个名为Animal的class: 接着编写两个从Animal继承的类:Dog和Cat: 那么,对于Dog、Cat来说,Animal就是 阅读全文
摘要:
上一节我们介绍了,Class内部可以有属性和方法,外部代码通过直接调用实例的方法来操作数据,这样就可以隐藏内部的逻辑实现;同时,外部代码还是可以自由的修改实例的属性和增加方法。 但是有时候,我们不想这样呢?即不让内部属性被外部访问。 可以在属性的名称前面加上两个下划线__。如果一个变量以__开头,就 阅读全文
摘要:
面向对象编程的三大特点:封装、继承和多态! 封装 继续上篇文章的例子,Student类已经具备name和score属性,现在要答应学生的姓名和成绩,该怎么设计呢?可以这么想,谁最清楚name、score的数据是什么?当然是Student类的实例本身了!要访问这些数据,没有必要单独写一个外部函数,直接 阅读全文
摘要:
OOP——Object Oriented Programming,面向对象编程,是一种程序设计思想。该思想将对象作为程序的基本单元,一个对象包含了数据和操作数据的函数。 区别于面向过程的程序设计即把计算机程序视为一系列的命令集合(即一组函数的顺序集合),面向对象的程序设计是把计算机程序视为一组对象的 阅读全文
摘要:
一、模块定义 python中,一个.py文件就是一个模块(Module)。使用模块的好处:1、提高了代码的可维护性。我们把函数进行分组,分别放在不同的模块中。2、编写代码不必要从0开始,当一个模块编写完毕,就可以被其他的模块引用。python有很多内置的模块和第三方模块供引用。3、可以避免函数名和变 阅读全文
摘要:
一般的,通过设定函数参数的默认值,可以减低函数调用的难度。比如:int()函数可以把字符串转换成整数: 事实上,int()函数还提供额外的base参数,表示进制,只是默认值是10而已: 现在,如果我们需要转换大量的二进制字符串,每次都调用int(x,base=2)显得比较麻烦。这时我们可以尝试封装函 阅读全文
摘要:
函数是个对象,并且可以赋值给一个变量,通过变量也能调用该函数: 利用函数的_name_属性,可以拿到函数的名字: 如果我们在调用函数now()前后自动打印日志,但又不允许修改now()函数的定义——在代码运行期间动态增加功能的方式,称之为‘装饰器’Decorator。 比如,定义一个能打印日志的de 阅读全文
摘要:
有些时候,我们在传入函数时,不需要显示的定义函数,直接传入匿名函数更方便。在python中,对匿名函数提供了有限支持。以map()函数为例,计算f() = x2,使用匿名函数: 对比可知,匿名函数lambda x:x*x 实际上相当于: 关键字lambda表示匿名函数,冒号前面的x表示函数的参数。 阅读全文
摘要:
首先,来看一个一般意义的求和: 如果我们这么定义呢: 我们发现,这种定义的函数,返回的并不是一个具体的求和,而是一个函数!来看看怎么调用这个函数: 在这个例子中,lazy_sum中又定义了一个函数sum(),这个内部函数可以引用外部函数lazy_sum的参数和局部变量,当lazy_sum返回函数su 阅读全文
摘要:
python 内置的sorted()函数可以对一个list进行排序: 既然说是高阶函数,那么它还可以接受一个key函数来实现自定义的排序,比如按照绝对值大小进行排序: key指定的函数将作用于list中的每一个元素上,根据key函数返回的结果进行排序。 来看看字符串排序的问题: 默认的,对于字符串, 阅读全文
摘要:
python内置了一个filter函数,用于过滤序列。和map函数类似,filter()函数也接受一个函数和一个序列。只不过filter函数中是把函数依次作用于序列中的每一个元素,如果是True则保留这个元素,如果是False,则舍弃这个元素。例如,给定一个list,删除偶数,保留奇数: 注意,fi 阅读全文
摘要:
python 内置了map()和reduce()函数 1、map()函数 map()函数接收两个参数,一个是函数,一个是可迭代对象Iterable,map将传入的函数依次作用于序列的每一个元素。并把结果作为一个迭代器Iterator返回。 比如,函数f(x) = x2,要把这个函数作用在一个list 阅读全文
摘要:
1、变量可以指向函数 以内置的求绝对值abs()函数为例,: 可知,函数本身可以赋值给变量,即:变量指向函数。此时,我们可以通过变量来调用这个函数! 2、函数名其实也是变量 当abs指向10的时候,就无法通过abs(-10)调用该函数了。因为函数名其实就是一个指向函数的变量!abs这个变量已经指向一 阅读全文
摘要:
可以直接用for循环的数据类型有: 集合数据类型,如:list、tuple、dict、set、str等; 生成器generator,包括生成器和带yield的generator function。 以上这些可以直接使用for循环的对象统称为可迭代对象:Iterable. 可以使用isinstance 阅读全文
摘要:
通过上节的学习,我们知道使用列表生成式,可以直接创建一个列表。但是,有些时候,受到内存的限制等实际情况,列表生成式无法满足。比如,一个长度为1000万的列表,普通内存根本就不够,又或者实际处理的过程中,我们只需要访问前面几个元素,那后面的的绝大部分的空间都浪费了。 思路:如果能做到一开始并不是创建完 阅读全文
摘要:
List Comprehensions 即列表生成式,是Python内置的强大的用来生成列表list的生成式。 简单菜: 如果要生成[1*1,2*2,3*3,4*4,……,10*10]怎么做呢?一般的可以使用循环: 上面的例子比较简单,有时候循环太麻烦,而列表生成式则可以用一行语句替代循环实现相应的 阅读全文
摘要:
1、给定一个集合list或者tuple,可以通过for …… in ……的语法来实现循环遍历,这个循环我们就叫做迭代 迭代list: 迭代字符串: 迭代dict,迭代key 迭代value: 同时迭代key、value: Python中,只要是可迭代对象,都可以迭代。 那么,如何判断一个对象是不是可 阅读全文
摘要:
摘录廖雪峰网站 定义一个list: 取其前三个元素: 这个方法有点蠢,因为如果元素非常多,我们需要取其前N个元素,怎么办? 可能会想到用循环: 但是像这种很频繁很常用的操作手段,基本上所有的语言都提供了简单的操作方法,类似Substring方法(俗称取子串),python也提供了类似的方法,这就是切 阅读全文
摘要:
一、规划并成功的完成SQLSERVER 2014的安装 1、规划系统 安装SQL server 前,第一步应该是合理的规划。以下是规划时的任务和要点: ① 当前工作负载的基准 ② 估计工作负载的增长情况 ③ 最低硬件和软件的需求 ④ 合适的存储系统大小和I/O需求 ⑤ SQLSERVER 版本 ⑥ 阅读全文
摘要:
SQL server系统数据库很重要,大部分时候都不应该修改他们。唯一例外的是model数据库和tempdb数据库。model数据库允许部署更改到任何新创建的数据库(如存储过程),而更改tempdb数据库则是为了帮助扩展数据库以承担更多的负载。 1、Resource数据库 Resource数据库从S 阅读全文
摘要:
一、将输出作为输入——结果的重用 R有个特点,分析的结果可以保存下来,并可以作为进一步分析的输入使用。下面我们通过R中的预先安装好的数据集作为实例(这里只讲述原理,涉及到的统计知识,以后在另外的统计专栏中描述): 1、利用汽车数据mtcars执行一次简单的线性回归,通过车身重量(wt)预测每加仑行驶 阅读全文
摘要:
本篇简要介绍使用R的一些基本概念,包括基本说明、获取帮助、工作空间、输入输出,每个知识点中都会通过一个例子来练习。 一、R基本情况说明 1、R是一种区分大小写的解释性语言。 2、控制台默认使用命令提示符 < 表示。我们可以在 < 后每次输入一条命令;按 Enter键 执。或者一次性将一组命令写在一个 阅读全文
|