上一页 1 2 3 4 5 6 ··· 9 下一页
摘要: 正常情况下,当我们定义了一个class,创建了一个class的实例后,我们可以给该实例绑定任何属性和方法,这就是动态语言的灵活性。先定义class: class Student(object): pass 然后,尝试给实例绑定一个属性: >>> s = Student() >>> s.name = 阅读全文
posted @ 2020-12-07 23:42 HK牛牛 阅读(64) 评论(0) 推荐(0) 编辑
摘要: 在绑定属性时,如果我们直接把属性暴露出去,虽然写起来很简单,但是,没办法检查参数,导致可以把成绩随便改: s = Student() s.score = 9999 这显然不合逻辑。为了限制score的范围,可以通过一个set_score()方法来设置成绩,再通过一个get_score()来获取成绩, 阅读全文
posted @ 2020-12-07 23:39 HK牛牛 阅读(77) 评论(0) 推荐(0) 编辑
摘要: 继承是面向对象编程的一个重要的方式,因为通过继承,子类就可以扩展父类的功能。 回忆一下Animal类层次的设计,假设我们要实现以下4种动物: ·Dog - 狗狗; ·Bat - 蝙蝠; ·Parrot - 鹦鹉; ·Ostrich - 鸵鸟。 如果按照哺乳动物和鸟类归类,我们可以设计出这样的类的层次 阅读全文
posted @ 2020-12-07 23:37 HK牛牛 阅读(59) 评论(0) 推荐(0) 编辑
摘要: 在程序运行的过程中,如果发生了错误,可以事先约定返回一个错误代码,这样,就可以知道是否有错,以及出错的原因。在操作系统提供的调用中,返回错误码非常常见。比如打开文件的函数open(),成功时返回文件描述符(就是一个整数),出错时返回-1。 用错误码来表示是否出错十分不便,因为函数本身应该返回的正常结 阅读全文
posted @ 2020-12-07 23:32 HK牛牛 阅读(102) 评论(0) 推荐(0) 编辑
摘要: 程序能一次写完并正常运行的概率很小,基本不超过1%。总会有各种各样的bug需要修正。有的bug很简单,看看错误信息就知道,有的bug很复杂,我们需要知道出错时,哪些变量的值是正确的,哪些变量的值是错误的,因此,需要一整套调试程序的手段来修复bug。 第一种方法简单直接粗暴有效,就是用print()把 阅读全文
posted @ 2020-12-07 23:21 HK牛牛 阅读(65) 评论(0) 推荐(0) 编辑
摘要: #我们把变量从内存中变成可存储或传输的过程称之为序列化 #把变量内容从序列化的对象重新读到内存里称之为反序列化,即unpickling。 在程序运行的过程中,所有的变量都是在内存中,比如,定义一个dict: d = dict(name='Bob', age=20, score=88) 可以随时修改变 阅读全文
posted @ 2020-12-07 22:40 HK牛牛 阅读(80) 评论(0) 推荐(0) 编辑
摘要: 读写文件是最常见的IO操作。Python内置了读写文件的函数,用法和C是兼容的。 读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘,所以,读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后,通过操作系统提供的接口从 阅读全文
posted @ 2020-12-07 22:16 HK牛牛 阅读(191) 评论(0) 推荐(0) 编辑
摘要: 字符串是编程时涉及到的最多的一种数据结构,对字符串进行操作的需求几乎无处不在。比如判断一个字符串是否是合法的Email地址,虽然可以编程提取@前后的子串,再分别判断是否是单词和域名,但这样做不但麻烦,而且代码难以复用。 正则表达式是一种用来匹配字符串的强有力的武器。它的设计思想是用一种描述性的语言来 阅读全文
posted @ 2020-12-07 22:05 HK牛牛 阅读(190) 评论(0) 推荐(0) 编辑
摘要: 多进程和多线程,这是实现多任务最常用的两种方式。 首先,要实现多任务,通常我们会设计Master-Worker模式,Master负责分配任务,Worker负责执行任务,因此,多任务环境下,通常是一个Master,多个Worker。 如果用多进程实现Master-Worker,主进程就是Master, 阅读全文
posted @ 2020-12-07 21:57 HK牛牛 阅读(62) 评论(0) 推荐(0) 编辑
摘要: 在多线程环境下,每个线程都有自己的数据。一个线程使用自己的局部变量比使用全局变量好,因为局部变量只有线程自己能看见,不会影响其他线程,而全局变量的修改必须加锁。 但是局部变量也有问题,就是在函数调用的时候,传递起来很麻烦: def process_student(name): std = Stude 阅读全文
posted @ 2020-12-07 21:44 HK牛牛 阅读(64) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 ··· 9 下一页