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

    1.8 复合的组合对象 为了描述21点游戏中的发牌。以下代码定义了Hand类,用来模拟打牌策略。 class Hand:  def init ( self, dealer_card ):    self.dealer_card= dealer_card    self.cards= []  def hard_total(self ):    retur...
  • 空标题文档

    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.2 特殊方法示例 通过观察21点中的Hand对象,会发现有一个很有趣的关于包含关系的例子。我们常常会想知道玩家的手中是否有ace。如果我们用扩展list的方式来定义Hand,那么我们就不能直接查询是否有ace。取而代之的是,我们只能查询某张牌。我们不想写类似下面这样的代码。 any( card(1,suit) for suit in Suits )...
  • 空标题文档

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

    10.7 有关更多的索引维护工作 很明显,在shelf索引维护方面可能会需要做更多的工作。当使用简单的数据模型时,可以简单的为一篇文章的标签,日期和标题添加索引。这里为博客的另外一个访问层定义了两个索引。其中一个索引简单的列出了博客记录的所有键值。另外一个索引则基于博客标题提供相应键值。这里假设标题不是唯一的。我们会从3个方面来演示这个访问层的操作。以下...
  • 空标题文档

    12.5 创建安全的REST服务 我们可以将应用程序的安全分为两个部分考虑:验证和授权。我们需要知道用户是谁,并且需要确保用户有运行某个WSGI应用程序的授权。如果使用用于确保凭证间加密传输的HTTP的Authorization头,实现这种安全机制就相对容易。 如果我们使用SSL,就可以简单地使用HTTP基本授权(HTTP Basic Authoriz...