主要内容:安装,Python sqlite3 模块 API,连接数据库,实例,创建表,实例,INSERT 操作,实例,SELECT 操作,实例,UPDATE 操作,实例,DELETE 操作,实例安装 SQLite3 可使用 sqlite3 模块与 Python 进行集成。sqlite3 模块是由 Gerhard Haring 编写的。它提供了一个与 PEP 249 描述的 DB-API 2.0 规范兼容的 SQL 接口。您不需要单独安装该模块,因为 Python 2.5.x 以上版本默认自带了该
在前面章节中,对于使用 open() 函数打开的文件,我们一直都在用 close() 函数将其手动关闭。本节就来详细介绍一下 close() 函数。 close() 函数是专门用来关闭已打开文件的,其语法格式也很简单,如下所示: file.close() 其中,file 表示已打开的文件对象。 读者可能一直存在这样的疑问,即使用 open() 函数打开的文件,在操作完成之后,一定要调用 close
主要内容:Python read()函数《Python open()函数》一节中,介绍了如何通过 open() 函数打开一个文件。在其基础上,本节继续讲解如何读取已打开文件中的数据。 Python 提供了如下 3 种函数,它们都可以帮我们实现读取文件中数据的操作: read() 函数:逐个字节或者字符读取文件中的内容; readline() 函数:逐行读取文件中的内容; readlines() 函数:一次性读取文件中多行内容。 本节先讲
主要内容:open()是否需要缓冲区,open()文件对象常用的属性在Python 中,如果想要操作文件,首先需要创建或者打开指定的文件,并创建一个文件对象,而这些工作可以通过内置的 open() 函数实现。 open() 函数用于创建或打开指定文件,该函数的常用语法格式如下: file = open(file_name [, mode='r' [ , buffering=-1 [ , encoding = None ]]]) 此格式中,用 [] 括起来的部分为
前面章节提到,当指定模块(或包)没有说明文档时,仅通过 help() 函数或者 __doc__ 属性,无法有效帮助我们理解该模块(包)的具体功能。在这种情况下,我们可以通过 __file__ 属性查找该模块(或包)文件所在的具体存储位置,直接查看其源代码。 仍以前面章节创建的 my_package 包为例,下面代码尝试使用 __file__ 属性获取该包的存储路径: 程序输出结果为: C:\Use
在使用 dir() 函数和 __all__ 变量的基础上,虽然我们能知晓指定模块(或包)中所有可用的成员(变量、函数和类),比如: 程序执行结果为: ['ascii_letters', 'ascii_lowercase', 'ascii_uppercase', 'capwords', 'digits', 'hexdigits', 'octdigits', 'printable', 'punctua
主要内容:raise 不需要参数在前面章节的学习中,遗留过一个问题,即是否可以在程序的指定位置手动抛出一个异常?答案是肯定的, Python 允许我们在程序中手动设置异常,使用 raise 语句即可。 读者可能会感到疑惑,即我们从来都是想方设法地让程序正常运行,为什么还要手动设置异常呢?首先要分清楚程序发生异常和程序执行错误,它们完全是两码事,程序由于错误导致的运行异常,是需要程序员想办法解决的;但还有一些异常,是程序正常运行的
主要内容:用 __call__() 弥补 hasattr() 函数的短板本节再介绍 Python 类中一个非常特殊的实例方法,即 __call__()。该方法的功能类似于在类中重载 () 运算符,使得类实例对象可以像调用普通函数那样,以“对象名()”的形式使用。 举个例子: 程序执行结果为: 调用__call__()方法 小牛知识库 https://www.xnip.cn 可以看到,通过在 CLanguage 类中实现 __call__() 方法,使的 clangs
在 Python 类的内部,无论是类属性还是实例属性,都是以字典的形式进行存储的,其中属性名作为键,而值作为该键对应的值。 为了方便用户查看类中包含哪些属性,Python 类提供了 __dict__ 属性。需要注意的一点是,该属性可以用类名或者类的实例对象来调用,用类名直接调用 __dict__,会输出该由类中所有类属性组成的字典;而使用类的实例对象调用 __dict__,会输出由类中所有实例属性
前面在介绍 Python 内置函数时,提到了 dir() 函数,通过此函数可以某个对象拥有的所有的属性名和方法名,该函数会返回一个包含有所有属性名和方法名的有序列表。 举个例子: 程序运行结果为: ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__g
我们知道, Python 通过调用 __init__() 方法构造当前类的实例化对象,而本节要学的 __del__() 方法,功能正好和 __init__() 相反,其用来销毁实例化对象。 事实上在编写程序时,如果之前创建的类实例化对象后续不再使用,最好在适当位置手动将其销毁,释放其占用的内存空间(整个过程称为 垃圾回收(简称GC) )。 大多数情况下,Python 开发者不需要手动进行垃圾回收,
前面章节中,我们经常会直接输出类的实例化对象,例如: 程序运行结果为: <__main__.CLanguage object at 0x000001A7275221D0> 通常情况下,直接输出某个实例化对象,本意往往是想了解该对象的基本信息,例如该对象有哪些属性,它们的值各是多少等等。但默认情况下,我们得到的信息只会是“类名+object at+内存地址”,对我们了解该实例化对象帮助不大。 那么,
__new__() 是一种负责创建类实例的静态方法,它无需使用 staticmethod 装饰器修饰,且该方法会优先 __init__() 初始化方法被调用。 一般情况下,覆写 __new__() 的实现将会使用合适的参数调用其超类的 super().__new__(),并在返回之前修改实例。例如: 输出结果为: __new__(): <class '__main__.demoClass'> ('
通过学习《 Python类变量和实例变量》一节,了解了如何动态的为单个实例对象添加属性,甚至如果必要的话,还可以为所有的类实例对象统一添加属性(通过给类添加属性)。 那么, Python 是否也允许动态地为类或实例对象添加方法呢?答案是肯定的。我们知道,类方法又可细分为实例方法、静态方法和类方法,Python 语言允许为类动态地添加这 3 种方法;但对于实例对象,则只允许动态地添加实例方法,不能添
前面不止一次讲过, Python 中子类会继承父类所有的类属性和类方法。严格来说,类的构造方法其实就是实例方法,因此毫无疑问,父类的构造方法,子类同样会继承。 但我们知道,Python 是一门支持多继承的面向对象编程语言,如果子类继承的多个父类中包含同名的类实例方法,则子类对象在调用该方法时,会优先选择排在最前面的父类中的实例方法。显然,构造方法也是如此。 举个例子: 运行结果,结果为: 我是人,