Python教程
张大仙是个妖怪
我以为我能逗你笑你就会喜欢我,可是我却输给了让你哭的人!
展开
-
1.Python教程 目录汇总
26.Python面向对象编程 类和实例 详解25.Python 模块使用 详解24.Python函数式编程 偏函数 详解原创 2019-09-17 11:38:28 · 320 阅读 · 0 评论 -
在Python中出现“TabError: inconsistent use of tabs and spaces in indentation”的解决方案
最近在linux上修改python oj代码的时候:出现如下错误:TabError: inconsistent use of tabs and spaces in indentation这一般是由于混用了tab键和4个空格键造成的,可以检查一下代码,要么全部使用tab,要么全部使用4个空格,或者用idle编辑器进行校正。...原创 2020-04-03 18:00:14 · 684 阅读 · 0 评论 -
49.Python 正则表达式 详解
正则表达式是一种用来匹配字符串的强有力的武器。它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它“匹配”了,否则,该字符串就是不合法的转载 2019-09-23 10:49:25 · 204 阅读 · 0 评论 -
48.Python 进程和线程 进程vs.线程以及分布式进程 详解
目录进程vs.线程分布式进程小结进程vs.线程我们介绍了多进程和多线程,这是实现多任务最常用的两种方式。现在,我们来讨论一下这两种方式的优缺点。首先,要实现多任务,通常我们会设计Master-Worker模式,Master负责分配任务,Worker负责执行任务,因此,多任务环境下,通常是一个Master,多个Worker。如果用多进程实现Master-Worker,主进程就是Maste...转载 2019-09-20 12:07:29 · 144 阅读 · 0 评论 -
47.Python 进程和线程 ThreadLocal 详解
一个ThreadLocal变量虽然是全局变量,但每个线程都只能读写自己线程的独立副本,互不干扰。ThreadLocal解决了参数在一个线程中各个函数之间互相传递的问题转载 2019-09-20 10:41:06 · 201 阅读 · 0 评论 -
46.Python 进程和线程 多线程 详解
多线程编程,模型复杂,容易发生冲突,必须用锁加以隔离,同时,又要小心死锁的发生。Python解释器由于设计时有GIL全局锁,导致了多线程无法利用多核。多线程的并发在Python中就是一个美丽的梦转载 2019-09-20 10:16:19 · 160 阅读 · 0 评论 -
45.Python 进程和线程 多进程 详解
在Unix/Linux下,可以使用fork()调用实现多进程。要实现跨平台的多进程,可以使用multiprocessing模块。进程间通信是通过Queue、Pipes等实现的。原创 2019-09-19 16:57:26 · 209 阅读 · 0 评论 -
44.Python IO编程 序列化 详解
Python语言特定的序列化模块是pickle,但如果要把序列化搞得更通用、更符合Web标准,就可以使用json模块。json模块的dumps()和loads()函数是定义得非常好的接口的典范。当我们使用时,只需要传入一个必须的参数。但是,当默认的序列化或反序列机制不满足我们的要求时,我们又可以传入更多的参数来定制序列化或反序列化的规则,既做到了接口简单易用,又做到了充分的扩展性和灵活性。转载 2019-09-19 13:30:47 · 136 阅读 · 0 评论 -
43.Python IO编程 操作文件和目录 详解
Python的os模块封装了操作系统的目录和文件操作,要注意这些函数有的在os模块中,有的在os.path模块中转载 2019-09-19 11:16:08 · 177 阅读 · 0 评论 -
42.Python IO编程 StringIO和BytesIO 详解
StringIO和BytesIO是在内存中操作str和bytes的方法,使得和读写文件具有一致的接口转载 2019-09-19 10:21:22 · 472 阅读 · 1 评论 -
41.Python IO编程 文件读写 详解
IO编程IO在计算机中指Input/Output,也就是输入和输出。由于程序和运行时数据是在内存中驻留,由CPU这个超快的计算核心来执行,涉及到数据交换的地方,通常是磁盘、网络等,就需要IO接口。比如你打开浏览器,访问新浪首页,浏览器这个程序就需要通过网络IO获取新浪的网页。浏览器首先会发送数据给新浪服务器,告诉它我想要首页的HTML,这个动作是往外发数据,叫Output,随后新浪服务器把...转载 2019-09-18 17:52:19 · 223 阅读 · 0 评论 -
40.Python错误、调试和测试 文档测试 详解
doctest非常有用,不但可以用来测试,还可以直接作为示例代码。通过某些文档生成工具,就可以自动把包含doctest的注释提取出来。用户看文档的时候,同时也看到了doctest。转载 2019-09-18 16:43:19 · 170 阅读 · 0 评论 -
39.Python错误、调试和测试 单元测试 详解
如果你听说过“测试驱动开发”(TDD:Test-Driven Development),单元测试就不陌生。单元测试是用来对一个模块、一个函数或者一个类来进行正确性检验的测试工作。 比如对函数abs(),我们可以编写出以下几个测试用例: 输入正数,比如1、1.2、0.99,期待返回值与输入相同; 输入负数,比如-1、-1.2、-0.99,期待返回值与输入相反; 输入0,期...转载 2019-09-18 16:25:09 · 144 阅读 · 0 评论 -
38.Python错误、调试和测试 调试 详解
程序能一次写完并正常运行的概率很小,基本不超过1%。总会有各种各样的bug需要修正。有的bug很简单,看看错误信息就知道,有的bug很复杂,我们需要知道出错时,哪些变量的值是正确的,哪些变量的值是错误的,因此,需要一整套调试程序的手段来修复bug转载 2019-09-18 15:38:15 · 230 阅读 · 0 评论 -
37.Python错误、调试和测试 错误处理 详解
Python内置的try...except...finally用来处理错误十分方便。出错时,会分析错误信息并定位错误发生的代码位置才是最关键的。程序也可以主动抛出错误,让调用者来处理相应的错误。但是,应该在文档中写清楚可能会抛出哪些错误,以及错误产生的原因。原创 2019-09-18 14:54:10 · 289 阅读 · 0 评论 -
36.Python面向对象高级编程 使用元类 详解
metaclass是Python中非常具有魔术性的对象,它可以改变类创建时的行为。这种强大的功能使用起来务必小心转载 2019-09-18 13:52:14 · 237 阅读 · 0 评论 -
35.Python面向对象高级编程 使用枚举类 详解
Enum可以把一组相关常量定义在一个class中,且class不可变,而且成员可以直接比较转载 2019-09-18 11:40:48 · 177 阅读 · 0 评论 -
34.Python面向对象高级编程 定制类 详解
定制类中 __str__ , __iter__ , __getitem__ , __getattr__, __call__ 使用详解转载 2019-09-18 10:17:31 · 238 阅读 · 0 评论 -
33.Python面向对象高级编程 多重继承 详解
继承是面向对象编程的一个重要的方式,因为通过继承,子类就可以扩展父类的功能原创 2019-09-17 17:43:47 · 178 阅读 · 0 评论 -
32.Python面向对象高级编程 使用@property 详解
@property广泛应用在类的定义中,可以让调用者写出简短的代码,同时保证对参数进行必要的检查,这样,程序运行时就减少了出错的可能性。转载 2019-09-17 17:02:53 · 174 阅读 · 0 评论 -
31.Python面向对象高级编程 使用__slots__ 详解
添加__slots__变量,来限制class实例能添加的属性转载 2019-09-17 16:08:38 · 227 阅读 · 0 评论 -
30.Python面向对象编程 实例属性和类属性 详解
实例属性属于各个实例所有,互不干扰;类属性属于类所有,所有实例共享一个属性;不要对实例属性和类属性使用相同的名字,否则将产生难以发现的错误。转载 2019-09-17 14:54:28 · 202 阅读 · 0 评论 -
29.Python面向对象编程 获取对象信息 详解
通过内置的一系列函数type(),isinstance(),dir(),我们可以对任意一个Python对象进行剖析,拿到其内部的数据原创 2019-09-17 14:38:23 · 519 阅读 · 0 评论 -
28.Python面向对象编程 继承和多态 详解
继承可以把父类的所有功能都直接拿过来,这样就不必重零做起,子类只需要新增自己特有的方法,也可以把父类不适合的方法覆盖重写。 动态语言的鸭子类型特点决定了继承不像静态语言那样是必须的。原创 2019-09-17 13:17:04 · 200 阅读 · 0 评论 -
27.Python面向对象编程 访问限制 详解
在python中,设置属性为私有使用,将属性命名为“__xx“类型转载 2019-09-17 11:35:46 · 180 阅读 · 0 评论 -
26.Python面向对象编程 类和实例 详解
类是创建实例的模板,而实例则是一个一个具体的对象,各个实例拥有的数据都互相独立,互不影响;方法就是与实例绑定的函数,和普通函数不同,方法可以直接访问实例的数据;通过在实例上调用方法,我们就直接操作了对象内部的数据,但无需知道方法内部的实现细节。和静态语言不同,Python允许对实例变量绑定任何数据,也就是说,对于两个实例变量,虽然它们都是同一个类的不同实例,但拥有的变量名称都可能不同:原创 2019-09-17 10:37:38 · 557 阅读 · 0 评论 -
25.Python 模块使用 详解
在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护。 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式。在Python中,一个.py文件就称之为一个模块(Module)。原创 2019-09-12 17:50:23 · 198 阅读 · 0 评论 -
24.Python函数式编程 偏函数 详解
Python的functools模块提供了很多有用的功能,其中一个就是偏函数(Partial function)。要注意,这里的偏函数和数学意义上的偏函数不一样原创 2019-09-12 14:40:56 · 153 阅读 · 0 评论 -
23.Python函数式编程 装饰器 详解
由于函数也是一个对象,而且函数对象可以被赋值给变量,所以,通过变量也能调用该函数。>>> def now():... print('2015-3-25')...>>> f = now>>> f()2015-3-25函数对象有一个__name__属性,可以拿到函数的名字:>>> now.__name...转载 2019-09-12 14:19:55 · 150 阅读 · 0 评论 -
22.Python函数式编程 匿名函数 详解
当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数 lambda 更方便。原创 2019-09-12 12:05:24 · 210 阅读 · 0 评论 -
21.Python函数式编程 返回函数 详解
一个函数可以返回一个计算结果,也可以返回一个函数。 返回一个函数时,牢记该函数并未执行,返回函数中不要引用任何可能会变化的变量原创 2019-09-12 11:18:54 · 230 阅读 · 0 评论 -
20.Python函数式编程 高阶函数 sorted 详解
排序也是在程序中经常用到的算法。无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小。如果是数字,我们可以直接比较,但如果是字符串或者两个`dict`呢?直接比较数学上的大小是没有意义的,因此,比较的过程必须通过函数抽象出来转载 2019-09-11 18:08:42 · 184 阅读 · 0 评论 -
19.Python函数式编程 高阶函数 filter 详解
filter()的作用是从一个序列中筛出符合条件的元素。由于filter()使用了惰性计算,所以只有在取filter()结果的时候,才会真正筛选并每次返回下一个筛出的元素。转载 2019-09-11 14:47:33 · 424 阅读 · 0 评论 -
18.Python函数式编程 高阶函数 map/reduce 详解
Python内建了map()和reduce()函数转载 2019-09-11 13:03:12 · 151 阅读 · 0 评论 -
17.Python函数式编程 高阶函数 详解
函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计。函数就是面向过程的程序设计的基本单元原创 2019-09-11 11:19:53 · 136 阅读 · 0 评论 -
16.Python高级特性 迭代器 详解
凡是可作用于for循环的对象都是Iterable类型;凡是可作用于next()函数的对象都是Iterator类型,它们表示一个惰性计算的序列,所以generator对象既是Iterable类型,也是Iterator类型;集合数据类型如list、dict、str等是Iterable但不是Iterator,不过可以通过iter()函数获得一个Iterator对象。原创 2019-09-10 14:36:36 · 145 阅读 · 0 评论 -
15.Python高级特性 生成器 详解
generator是非常强大的工具,在Python中,可以简单地把列表生成式改成generator,也可以通过函数实现复杂逻辑的generator原创 2019-09-10 14:06:54 · 131 阅读 · 0 评论 -
14.Python高级特性 列表生成式 详解
运用列表生成式,可以快速生成list,可以通过一个list推导出另一个list,而代码却十分简洁原创 2019-09-09 11:34:34 · 221 阅读 · 0 评论 -
13.Python高级特性 迭代 详解
任何可迭代对象都可以作用于for循环,包括我们自定义的数据类型,只要符合迭代条件,就可以使用for循环转载 2019-09-09 11:03:43 · 157 阅读 · 0 评论 -
12.Python高级特性 切片slice 详解
在很多编程语言中,针对字符串提供了很多各种截取函数(例如,substring),其实目的就是对字符串切片。Python没有针对字符串的截取函数,只需要切片一个操作就可以完成,非常简单。转载 2019-09-09 10:22:23 · 224 阅读 · 0 评论