摘要:
1.python爬虫介绍 2.准备工作 比如新建项目命名为douban,然后新建个spider.py的python 文件 写入: def main(a): print("hello",a) main(2) if __name__=="__main__": #当程序执行时 #调用函数 main(1) 阅读全文
posted @ 2020-12-16 22:23
Chen洋
阅读(327)
评论(0)
推荐(0)
摘要:
报错:module 'urllib' has no attribute 'request'解决办法: 然后查找原因,据说python3有时候不会将子模块自动导入进去,所以前面加上:(亲测可行) import urllib.request 阅读全文
posted @ 2020-12-16 21:48
Chen洋
阅读(6133)
评论(0)
推荐(0)
摘要:
1.文件读写 读写文件是最常见的IO操作。Python内置了读写文件的函数,用法和C是兼容的。 读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘,所以,读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后,通过操作系 阅读全文
posted @ 2020-12-16 17:07
Chen洋
阅读(196)
评论(0)
推荐(0)
摘要:
1.单元测试 如果你听说过“测试驱动开发”(TDD:Test-Driven Development),单元测试就不陌生。 单元测试是用来对一个模块、一个函数或者一个类来进行正确性检验的测试工作。 比如对函数abs(),我们可以编写出以下几个测试用例: 输入正数,比如1、1.2、0.99,期待返回值与 阅读全文
posted @ 2020-12-16 16:48
Chen洋
阅读(169)
评论(0)
推荐(0)
摘要:
1.调试 程序能一次写完并正常运行的概率很小,基本不超过1%。总会有各种各样的bug需要修正。有的bug很简单,看看错误信息就知道,有的bug很复杂,我们需要知道出错时,哪些变量的值是正确的,哪些变量的值是错误的,因此,需要一整套调试程序的手段来修复bug。 第一种方法简单直接粗暴有效,就是用pri 阅读全文
posted @ 2020-12-16 16:42
Chen洋
阅读(276)
评论(0)
推荐(0)
摘要:
1.错误处理 在程序运行的过程中,如果发生了错误,可以事先约定返回一个错误代码,这样,就可以知道是否有错,以及出错的原因。在操作系统提供的调用中,返回错误码非常常见。比如打开文件的函数open(),成功时返回文件描述符(就是一个整数),出错时返回-1。 用错误码来表示是否出错十分不便,因为函数本身应 阅读全文
posted @ 2020-12-16 16:39
Chen洋
阅读(180)
评论(0)
推荐(0)
摘要:
1.使用枚举类 当我们需要定义常量时,一个办法是用大写变量通过整数来定义,例如月份: JAN = 1 FEB = 2 MAR = 3 ... NOV = 11 DEC = 12 好处是简单,缺点是类型是int,并且仍然是变量。 更好的方法是为这样的枚举类型定义一个class类型,然后,每个常量都是c 阅读全文
posted @ 2020-12-16 16:32
Chen洋
阅读(166)
评论(0)
推荐(0)
摘要:
1.多重继承 继承是面向对象编程的一个重要的方式,因为通过继承,子类就可以扩展父类的功能。 回忆一下Animal类层次的设计,假设我们要实现以下4种动物: Dog - 狗狗; Bat - 蝙蝠; Parrot - 鹦鹉; Ostrich - 鸵鸟。 如果按照哺乳动物和鸟类归类,我们可以设计出这样的类 阅读全文
posted @ 2020-12-16 15:56
Chen洋
阅读(217)
评论(0)
推荐(0)
摘要:
1.使用__slots__ 正常情况下,当我们定义了一个class,创建了一个class的实例后,我们可以给该实例绑定任何属性和方法,这就是动态语言的灵活性。先定义class: class Student(object): pass 然后,尝试给实例绑定一个属性: >>> s = Student() 阅读全文
posted @ 2020-12-16 15:23
Chen洋
阅读(157)
评论(0)
推荐(0)
摘要:
1.获取对象信息 当我们拿到一个对象的引用时,如何知道这个对象是什么类型、有哪些方法呢? 使用type() 首先,我们来判断对象类型,使用type()函数: 基本类型都可以用type()判断: >>> type(123) <class 'int'> >>> type('str') <class 's 阅读全文
posted @ 2020-12-16 15:17
Chen洋
阅读(192)
评论(0)
推荐(0)
摘要:
1.继承与多态 在OOP程序设计中,当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(Subclass),而被继承的class称为基类、父类或超类(Base class、Super class)。 比如,我们已经编写了一个名为Animal的class,有一个ru 阅读全文
posted @ 2020-12-16 15:09
Chen洋
阅读(224)
评论(0)
推荐(0)
摘要:
面向对象编程概述 面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想。OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数。 面向过程的程序设计把计算机程序视为一系列的命令集合,即一组函数的顺序执行。为了简化程序设计,面向过程把函数继 阅读全文
posted @ 2020-12-16 15:04
Chen洋
阅读(428)
评论(0)
推荐(0)
摘要:
模块概述 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护。 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式。在Python中,一个.py文件就称之为一个模块(Mo 阅读全文
posted @ 2020-12-16 14:44
Chen洋
阅读(300)
评论(0)
推荐(0)
摘要:
1.装饰器 由于函数也是一个对象,而且函数对象可以被赋值给变量,所以,通过变量也能调用该函数。 >>> def now(): ... print('2015-3-25') ... >>> f = now >>> f() 2015-3-25 函数对象有一个__name__属性,可以拿到函数的名字: > 阅读全文
posted @ 2020-12-16 14:32
Chen洋
阅读(112)
评论(0)
推荐(0)
摘要:
1.返回函数 函数作为返回值 高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回。 我们来实现一个可变参数的求和。通常情况下,求和的函数是这样定义的: def calc_sum(*args): ax = 0 for n in args: ax = ax + n return ax 但是, 阅读全文
posted @ 2020-12-16 14:25
Chen洋
阅读(165)
评论(0)
推荐(0)
摘要:
概述 函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计。函数就是面向过程的程序设计的基本单元。 而函数式编程(请注意多了一个“式”字)——Functional Programming,虽然 阅读全文
posted @ 2020-12-16 14:20
Chen洋
阅读(320)
评论(0)
推荐(0)
摘要:
1.切片 取一个list或tuple的部分元素是非常常见的操作。比如,一个list如下: >>> L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack'] 取前3个元素,应该怎么做? 笨办法: >>> [L[0], L[1], L[2]] ['Michael' 阅读全文
posted @ 2020-12-16 13:48
Chen洋
阅读(178)
评论(0)
推荐(0)
摘要:
1.函数的参数 定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了。对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了,函数内部的复杂逻辑被封装起来,调用者无需了解。 Python的函数定义非常简单,但灵活度却非常大。除了正常定义的必选参数外,还可 阅读全文
posted @ 2020-12-16 12:26
Chen洋
阅读(246)
评论(0)
推荐(0)
摘要:
1.调用函数 Python内置了很多有用的函数,我们可以直接调用。 要调用一个函数,需要知道函数的名称和参数,比如求绝对值的函数abs,只有一个参数。可以直接从Python的官方网站查看文档: http://docs.python.org/3/library/functions.html#abs 也 阅读全文
posted @ 2020-12-16 10:59
Chen洋
阅读(460)
评论(0)
推荐(0)

浙公网安备 33010602011771号