![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
python
文章平均质量分 53
littlecushion000
这个作者很懒,什么都没留下…
展开
-
python学习笔记
输入和输出name = raw_input('please enter your name: ')print 'hello,', n# print absolute value of an integer:a = 100if a >= 0: print aelse: print -a // 每一行都是一个语句,当语句以冒号“:”结尾时,缩进原创 2016-10-25 13:10:42 · 181 阅读 · 0 评论 -
python学习笔记 调试
需要一整套调试程序的手段来修复bug。第一种方法简单直接粗暴有效,就是用print把可能有问题的变量打印出来看看:用print最大的坏处是将来还得删掉它,想想程序里到处都是print,运行结果也会包含很多垃圾信息。所以,我们又有第二种方法。断言凡是用print来辅助查看的地方,都可以用断言(assert)来替代:# err.pydef foo(s):原创 2016-11-09 20:51:47 · 210 阅读 · 0 评论 -
python学习笔记 单元测试
以test开头的方法就是测试方法,不以test开头的方法不被认为是测试方法,测试的时候不会被执行。对每一类测试都需要编写一个test_xxx()方法。由于unittest.TestCase提供了很多内置的条件判断,我们只需要调用这些方法就可以断言输出是否是我们所期望的。最常用的断言就是assertEquals():self.assertEquals(abs(-1), 1) # 断言函数原创 2016-11-10 11:08:38 · 295 阅读 · 0 评论 -
python学习笔记 IO编程
由于CPU和内存的速度远远高于外设的速度,所以,在IO编程中,就存在速度严重不匹配的问题。举个例子来说,比如要把100M的数据写入磁盘,CPU输出100M的数据只需要0.01秒,可是磁盘要接收这100M数据可能需要10秒,怎么办呢?有两种办法:第一种是CPU等着,也就是程序暂停执行后续代码,等100M的数据在10秒后写入磁盘,再接着往下执行,这种模式称为同步IO;另一种方法是CPU原创 2016-11-10 11:27:29 · 234 阅读 · 0 评论 -
python学习笔记 操作文件和目录
Python的os模块封装了操作系统的目录和文件操作,要注意这些函数有的在os模块中,有的在os.path模块中。环境变量在操作系统中定义的环境变量,全部保存在os.environ这个dict中,可以直接查看:>>> os.environ{'VERSIONER_PYTHON_PREFER_32_BIT': 'no', 'TERM_PROGRAM_VERSION': '32原创 2016-11-10 18:44:22 · 256 阅读 · 0 评论 -
python学习笔记 序列化
JSON如果我们要在不同的编程语言之间传递对象,就必须把对象序列化(我们把变量从内存中变成可存储或传输的过程称之为序列化)为标准格式,比如XML,但更好的方法是序列化为JSON,因为JSON表示出来就是一个字符串,可以被所有语言读取,也可以方便地存储到磁盘或者通过网络传输。JSON不仅是标准格式,并且比XML更快,而且可以直接在Web页面中读取,非常方便。JSON表示的对象就是标准原创 2016-11-10 19:19:32 · 232 阅读 · 0 评论 -
python学习笔记 递归函数
在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。使用递归函数需要注意防止栈溢出。在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出。解决递归调用栈溢出的方法是通过尾递归优化,事实上尾递归和循环的效果原创 2016-10-31 10:07:46 · 262 阅读 · 0 评论 -
python学习笔记 切片
取一个list或tuple的部分元素是非常常见的操作。比如,一个list如下:>>> L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack']L[0:3]表示,从索引0开始取,直到索引3为止,但不包括索引3。即索引0,1,2,正好是3个元素如果第一个索引是0,还可以省略:>>> L[:3]['Michael', 'Sarah', '原创 2016-10-31 12:54:17 · 169 阅读 · 0 评论 -
python学习笔记 迭代和列表生成式
如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration)只要是可迭代对象,无论有无下标,都可以迭代,比如dict就可以迭代:>>> d = {'a': 1, 'b': 2, 'c': 3}>>> for key in d:... print key...acb因为dict的存储不原创 2016-10-31 12:57:58 · 284 阅读 · 0 评论 -
python学习笔记 进程和线程
对于操作系统来说,一个任务就是一个进程(Process),比如打开一个浏览器就是启动一个浏览器进程,打开一个记事本就启动了一个记事本进程,打开两个记事本就启动了两个记事本进程,打开一个Word就启动了一个Word进程。有些进程还不止同时干一件事,比如Word,它可以同时进行打字、拼写检查、打印等事情。在一个进程内部,要同时干多件事,就需要同时运行多个“子任务”,我们把进程内的这些“子任务”原创 2016-11-11 10:51:10 · 281 阅读 · 0 评论 -
python学习笔记 生成器
在Python中,这种一边循环一边计算的机制,称为生成器(Generator)。要创建一个generator,有很多种方法。第一种方法很简单,只要把一个列表生成式的[]改成(),就创建了一个generator:>>> L = [x * x for x in range(10)]>>> L[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]>>> g = (x原创 2016-10-31 13:29:19 · 231 阅读 · 0 评论 -
python学习笔记 高阶函数map/reduce
传入函数既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。一个最简单的高阶函数:def add(x, y, f): return f(x) + f(y)当我们调用add(-5, 6, abs)时,参数x,y和f分别接收-5,6和absmap()>>> def f(x):原创 2016-10-31 21:34:48 · 198 阅读 · 0 评论 -
python学习笔记 filter和sorted
filter()Python内建的filter()函数用于过滤序列。和map()类似,filter()也接收一个函数和一个序列。和map()不同的时,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。例如,在一个list中,删掉偶数,只保留奇数,可以这么写:def is_odd(n): retu原创 2016-10-31 22:43:17 · 220 阅读 · 0 评论 -
python学习笔记 返回函数
返回的函数并没有立刻执行,而是直到调用了f()才执行。我们来看一个例子:def count(): fs = [] for i in range(1, 4): def f(): return i*i fs.append(f) return fsf1, f2, f3 = count()实际结果是原创 2016-11-02 11:17:58 · 972 阅读 · 0 评论 -
python学习笔记 匿名函数和装饰器
匿名函数计算f(x)=x2时,除了定义一个f(x)的函数外,还可以直接传入匿名函数:>>> map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9])[1, 4, 9, 16, 25, 36, 49, 64, 81]通过对比可以看出,匿名函数lambda x: x * x实际上就是:def f(x): return x *原创 2016-11-02 11:47:08 · 327 阅读 · 0 评论 -
python学习笔记 错误处理
try让我们用一个例子来看看try的机制:try: print 'try...' r = 10 / 0 print 'result:', rexcept ZeroDivisionError, e: print 'except:', efinally: print 'finally...'print 'END'当我们认为某些代码可能原创 2016-11-09 20:24:51 · 252 阅读 · 0 评论 -
python学习笔记 使用元类
type()动态语言和静态语言最大的不同,就是函数和类的定义,不是编译时定义的,而是运行时动态创建的。动态类型语言:在运行期间检查数据的类型的语言。用这类语言编程,不会给变量指定类型,而是在附值时得到数据类型。如:Python和ruby就是典型动 态类型语言。很多脚本语言vbscrīpt,javascrīpt也是这类语言。看下面javascrīpt代码:fu原创 2016-11-09 19:23:54 · 539 阅读 · 0 评论 -
python学习笔记
整数Python可以处理任意大小的整数,当然包括负整数,在程序中的表示方法和数学上的写法一模一样,例如:1,100,-8080,0,等等。计算机由于使用二进制,所以,有时候用十六进制表示整数比较方便,十六进制用0x前缀和0-9,a-f表示,例如:0xff00,0xa5b4c3d2,等等。浮点数浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数原创 2016-10-25 13:19:57 · 221 阅读 · 0 评论 -
python学习笔记
>>> 'Hello, %s' % 'world''Hello, world'>>> 'Hi, %s, you have $%d.' % ('Michael', 1000000)'Hi, Michael, you have $1000000.'%运算符就是用来格式化字符串的。在字符串内部,%s表示用字符串替换,%d表示用整数替换,有几个%?占位符,后面就跟几个变量或者值,顺序要对应原创 2016-10-25 17:07:08 · 173 阅读 · 0 评论 -
python学习笔记使用list和tuple
listPython内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素。比如,列出班里所有同学的名字,就可以用一个list表示:>>> classmates = ['Michael', 'Bob', 'Tracy']变量classmates就是一个list。用len()函数可以获得list元素的个数:>原创 2016-10-25 17:23:32 · 176 阅读 · 0 评论 -
python学习笔记 类和实例
面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可能不同。仍以Student类为例,在Python中,定义类是通过class关键字:class Student(object): passclass后面紧接着是类名,即St原创 2016-11-07 10:33:42 · 189 阅读 · 0 评论 -
python学习笔记 访问限制
如果要让内部属性不被外部访问,可以把属性的名称前加上两个下划线__,在Python中,实例的变量名如果以__开头,就变成了一个私有变量(private),只有内部可以访问,外部不能访问,所以,我们把Student类改一改:class Student(object): def __init__(self, name, score): self.__name = name原创 2016-11-07 11:19:50 · 198 阅读 · 0 评论 -
python学习笔记 继承和多态
在OOP程序设计中,当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(Subclass),而被继承的class称为基类、父类或超类(Base class、Super class)。比如,我们已经编写了一个名为Animal的class,有一个run()方法可以直接打印:class Animal(object): def run(self):原创 2016-11-07 11:34:07 · 204 阅读 · 0 评论 -
python学习笔记 获取对象信息
当我们拿到一个对象的引用时,如何知道这个对象是什么类型、有哪些方法呢?使用type()首先,我们来判断对象类型,使用type()函数:基本类型都可以用type()判断:>>> type(123)type 'int'>>>> type('str')type 'str'>>>> type(None)type 'NoneType'>如果一个变量指向函数或者原创 2016-11-07 11:51:21 · 190 阅读 · 0 评论 -
python学习笔记 使用@property
Python内置的@property装饰器就是负责把一个方法变成属性调用的:class Student(object): @property def score(self): return self._score @score.setter def score(self, value): if not isinstance(v原创 2016-11-07 14:02:15 · 189 阅读 · 0 评论 -
python学习笔记 多重继承
采用多重继承。首先,主要的类层次仍按照哺乳类和鸟类设计:class Animal(object): pass# 大类:class Mammal(Animal): passclass Bird(Animal): pass现在,我们要给动物再加上Runnable和Flyable的功能,只需要先定义好Runnable和Flyable的类:class Ru原创 2016-11-07 14:08:19 · 199 阅读 · 0 评论 -
python学习笔记 使用__slots__
使用__slots__但是,如果我们想要限制class的属性怎么办?比如,只允许对Student实例添加name和age属性。为了达到限制的目的,Python允许在定义class的时候,定义一个特殊的__slots__变量,来限制该class能添加的属性:>>> class Student(object):... __slots__ = ('name', 'age')原创 2016-11-07 13:55:30 · 387 阅读 · 0 评论 -
python学习笔记 条件判断和循环
elif是else if的缩写,完全可以有多个elif,所以if语句的完整形式就是:if 条件判断1>: 执行1>elif 条件判断2>: 执行2>elif 条件判断3>: 执行3>else: 执行4>if语句执行有个特点,它是从上往下判断,如果在某个判断上是True,把该判断对应的语句执行后,就忽略掉剩下的elif和else原创 2016-10-26 11:35:54 · 262 阅读 · 0 评论 -
python学习笔记 使用dict和set
dict>>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}>>> d['Michael']95通过dict提供的get方法,如果key不存在,可以返回None,或者自己指定的value:>>> d.get('Thomas')>>> d.get('Thomas', -1)-1注意:返回None的时候Python原创 2016-10-28 14:01:35 · 264 阅读 · 0 评论 -
python学习笔记 定义函数
在Python中,定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回。我们以自定义一个求绝对值的my_abs函数为例:def my_abs(x): if x >= 0: return x else: return -x空函数原创 2016-10-28 16:26:52 · 344 阅读 · 0 评论 -
python学习笔记 定制类
__str__我们先定义一个Student类,打印一个实例:>>> class Student(object):... def __init__(self, name):... self.name = name...>>> print Student('Michael')0x109afb190>打印出一堆,不好看。怎么才能打印得好看呢原创 2016-11-07 14:24:46 · 179 阅读 · 0 评论 -
python学习笔记偏函数
int()函数可以把字符串转换为整数,当仅传入字符串时,int()函数默认按十进制转换:>>> int('12345')12345但int()函数还提供额外的base参数,默认值为10。如果传入base参数,就可以做N进制的转换:>>> int('12345', base=8)5349>>> int('12345', 16)74565假设要转换大量的二进制字符串原创 2016-11-02 14:49:35 · 248 阅读 · 0 评论