数智图书馆-无锡数智政务 本次搜索耗时 3.546 秒,为您找到 1443 个相关结果.
  • 空标题文档

    1.4 使用init() 方法创建常量清单 我们可以为所有卡片的花色单独创建一个类。可在21点应用中,花色不是很重要,用一个字母来代替就可以。 这里使用花色的初始化作为创建常量对象的一个实例。很多情况下,应用会包括一个常量集合。静态常量也正构成了策略(Strategy)或状态(State)模式的一部分。 有些情况下,常量会在应用或配置文件的初始化阶段...
  • 空标题文档

    2.5 bytes ()方法 只有很少的情景需要我们把对象转换为字节。在第2部分“持久化和序列化”中,我们会详细探讨这个主题。 通常,应用程序会创建一个字符串,然后使用Python的IO类内置的编码方法将字符串转换为字节。对于大多数情况,这种方法就足够了。只有当我们自定义一种新的字符串时,我们会需要定义这个字符串的编码方法。 依据不同的参数,byte...
  • 空标题文档

    2.7 del ()方法 del ()方法有一个让人费解的使用场景。 这个方法的目的是在将一个对象从内存中清除之前,可以有机会做一些清理工作。如果使用上下文管理对象或者with语句来处理这种需求会更加清晰,这也是第5章“可调用对象和上下文的使用”的内容。对于Python的垃圾回收机制而言,创建一个上下文比使用del ()更加容易预判。 但是,如果一个...
  • 空标题文档

    5.1 使用ABC可调用对象来进行设计 在Python中有两种创建可调用对象的简单方式,如下所示。 使用def语句创建一个函数。 通过创建继承自collections.abc.Callable类的实例。 也可以将一个变量赋值为lambda表达式。一个lambda表达式是一个小的匿名函数,其中只包含了一个表达式语句。我们不倾向于将lambda表达式保...
  • 空标题文档

    5.3 使用functools完成记忆化 Python库的functools模块中包含了记忆化的装饰器。可以重用这个模块而不必新建自己的可调用对象。 可像如下代码这样使用。 from functools import lru_cache@lru_cache(None)def pow6( x, n ):   if n == 0: return 1   ...
  • 空标题文档

    5.6 定义enter ()和exit ()方法 上下文管理器的定义包含两个特殊方法:enter ()和exit ()。with语句使用它们进行上下文的进入和退出。接下来会通过一个示例来进行说明。 我们经常使用上下文管理器来执行短暂的全局修改。可能是数据库事务状态的改变或者是锁状态的改变,亦或一些事情,只希望在事务结束前执行的逻辑,而事务结束后可以被移...
  • 空标题文档

    5.7 上下文管理器工厂 可以创建一个上下文管理器类来作为应用程序对象的工厂。这样的设计使得耦合降低,而且无需在应用程序类编写过多有关上下文管理器功能的逻辑。 假如需要一个Deck类来完成21点中的发牌。可它并非像听起来那样有用。对于单元测试,将需要一个完整的、模拟的deck对象和特殊序列的牌。它有一个优势,正如之前看到的,可以和上下文管理器类一起工作...
  • 空标题文档

    6.6 创建一种新的映射 Python中内置了dict映射,在库中也有许多映射类型。除了collections模块对dict的扩展(defaultdict、Counter和ChainMap)之外,库中还有一些模块包含了类似于映射的结构。 shelve模块是其他映射的一个重要示例。我们会在第10章“用Shelve保存和获取对象”中介绍它。dbm模块与sh...
  • 空标题文档

    7.4 计算一个数字的哈希值 我们需要恰当地定义hash ()方法。关于数值类型哈希值计算,也可参见Python标准库(Python Standard Library)中的4.4.4节部分。那部分定义了一个hash_fraction()函数,是我们所推荐的一种做法。下面是我们的一种做法。   def hash ( self ):     P = sy...
  • 空标题文档

    8.2 使用内置的装饰器 Python语言内置了一些装饰器。@property、@classmethod和@staticmethod装饰器用于标注类的方法。@property装饰器将一个方法函数转换成描述器。我们用这种简单属性语法来定义方法函数。当将@property装饰器用于方法上时,也会额外创建一对属性,它们可以用于创建setter和deleter属...