`

Python3标准库学习(二)

 
阅读更多

== _ _builtin_ _ 模块 ==



这个模块包含 Python 中使用的内建函数. 一般不用手动导入这个模块; Python会帮你做好一切.

 

=== 使用元组或字典中的参数调用函数 ===

Python允许你实时地创建函数参数列表. 只要把所有的参数放入一个元组中或者字典中

示例代码如下:

 

#-*- encoding:gb2312 -*-

'''
Created on 2012-5-1

@author: Administrator
'''

def transimtParams(a,b):
    print(a,b)
#python2 的写法
#使用元组的参数调用函数
#apply(function, ("whither","canada?"))
#apply(function, (1, 2+3))
#使用字典中的参数调用函数
#apply(function, ("crunchy",), {"b": "frog"})
#apply(function, (), {"a": "crunchy", "b": "frog"})

#python3 的写法
#使用元组的参数调用函数
transimtParams(*("whither","canada?"))
transimtParams(*(1,2+3))
#使用字典中的参数调用函数
transimtParams(*("crunchy",),**{"b":"frog"})
transimtParams(**{"a":"crunchy", "b":"frog"})

  运行结果:

whither canada?
1 5
crunchy frog
crunchy frog

 

元组参数前面加*号,字典参数前面加**号。

 

===调用基类的构造函数===

示例:

 

class Rectangle:
    def __init__(self, color="white", width=10, height=10):
        print("create a", color, self, "sized", width, "x", height)

class RoundedRectangle(Rectangle):
    def __init__(self, **kw):
        #apply(Rectangle.__init__, (self,), kw)
        Rectangle.__init__(*(self,),**kw)

rect = Rectangle(color="green", height=100, width=100)
rect = RoundedRectangle(color="blue", height=20)
 

运行结果:

create a green <__main__.Rectangle object at 0x00BB2E70> sized 100 x 100
create a blue <__main__.RoundedRectangle object at 0x00C6E190> sized 10 x 20

 

 

===加载和重载模块===

 

如果你写过较庞大的 Python 程序, 那么你就应该知道 ``import`` 语句是用来导入外部模块的
(当然也可以使用 ``from-import`` 版本). 不过你可能不知道 ``import`` 其实是靠调用内建
函数 ``_ _import_ _`` 来工作的.

通过这个戏法你可以动态地调用函数. 当你只知道模块名称(字符串)的时候, 这将很方便.
[Example 1-4 #eg-1-4] 展示了这种用法, 动态地导入所有以 "``-plugin``" 结尾的模块.

====Example 1-4. 使用 _ _import_ _ 函数加载模块====[eg-1-4]

 

import glob, os

modules = []

for module_file in glob.glob("*-plugin.py"):
    try:
        module_name, ext = os.path.splitext(os.path.basename(module_file))
        module = __import__(module_name)
        modules.append(module)
    except ImportError:
        pass # ignore broken modules

# say hello to all modules
for module in modules:
    module.hello()
 

注意这个 plug-in 模块文件名中有个 "-" (hyphens). 这意味着你不能使用普通的 ``import`` 命令, 因为 Python 的辨识符不允许有 "-" .

 

[Example 1-5 #eg-1-5] 展示了 [Example 1-4 #eg-1-4] 中使用的 plug-in .

====Example 1-5. Plug-in 例子====[eg-1-5]

 

File: example-plugin.py

def hello():
    print "example-plugin says hello"

 

 [Example 1-6 #eg-1-6] 展示了如何根据给定模块名和函数名获得想要的函数对象.

====Example 1-6. 使用 _ _import_ _ 函数获得特定函数====[eg-1-6]


File: builtin-import-example-2.py

 

def getfunctionbyname(module_name, function_name):
    module = __import__(module_name)
    return getattr(module, function_name)

print(repr(getfunctionbyname("test-plugin", "hello")))

 


你也可以使用这个函数实现延迟化的模块导入 (lazy module loading). 例如在 [Example 1-7 #eg-1-7] 中
的 ``string`` 模块只在第一次使用的时候导入.

====Example 1-7. 使用 _ _import_ _ 函数实现 延迟导入====[eg-1-7]

File: builtin-import-example-3.py

 

class LazyImport:
    def __init__(self, module_name):
        self.module_name = module_name
        self.module = None
    def __getattr__(self, name):
        if self.module is None:
            self.module = __import__(self.module_name)
        return getattr(self.module, name)

string = LazyImport("string")

print(string.ascii_lowercase)
 

结果:abcdefghijklmnopqrstuvwxyz

 

Python 也提供了重新加载已加载模块的基本支持. [Example 1-8 #eg-1-8 会加载 3 次 //hello.py// 文件.

====Example 1-8. 使用 reload 函数====[eg-1-8]

File: builtin-reload-example-1.py

 

import hello
import imp


imp.reload(hello)
imp.reload(hello)

 

结果:

hello again, and welcome to the show
hello again, and welcome to the show
hello again, and welcome to the show

 

reload 直接接受模块作为参数.

``` [!Feather 注:  ^ 原句无法理解, 稍后讨论.]

注意,当你重加载模块时, 它会被重新编译, 新的模块会代替模块字典里的老模块. 但是, 已经用原模块里的类建立的实例仍然使用的是老模块(不会被更新).

同样地, 使用 ``from-import`` 直接创建的到模块内容的引用也是不会被更新的.

 

 

好了,__buildin__的模块就学到这里,明天学习关于名称空间的模块

分享到:
评论

相关推荐

    python标准库 中文

    Python标准库是Python编程语言的核心...学习并熟练掌握Python标准库,将极大地提升开发者的编程效率和代码质量。通过阅读《Python标准库》中文版.pdf,你可以系统地了解和掌握这些知识,从而在Python编程中游刃有余。

    python3 标准库参考手册.rar

    每个模块都有其特定的用途和使用场景,通过深入学习和掌握Python3标准库,开发者能够更高效地编写代码,解决复杂问题。这个参考手册将帮助你理解和利用这些资源,提高编程效率和代码质量。无论你是初学者还是经验...

    Python核心标准库学习

    最后,Python标准库还包括了错误和异常处理(如traceback和exceptions模块)、国际化(如locale模块)以及日期和时间(如datetime模块)等众多功能。 总之,Python核心标准库是一个庞大的资源宝库,无论你是新手...

    python3 标准模块实例学习 原版

    在Python3中,标准库扮演着至关重要的角色,它包含了大量的预装模块,为各种常见任务提供了便利的解决方案。本篇文章将深入探讨Python3标准模块的实例学习,帮助你更好地系统地学习和熟练掌握这些模块。 首先,我们...

    python 标准库示例

    描述中的“菜鸟必备文档,老鸟高飞翅膀, python快速进阶”则表达了这本书的目标读者群体,旨在帮助初学者快速掌握Python标准库的使用,同时为经验丰富的开发者提供深入学习的机会,以提升编程技能。 从标签...

    Python3.8.1标准库参考中文手册高清pdf版.rar

    此外,Python标准库还包括用于XML处理的`xml`模块,数据库接口的`sqlite3`,数学计算的`math`,图形用户界面的`tkinter`,以及用于加密和安全的`hashlib`和`ssl`模块等等。 总的来说,Python3.8.1标准库参考中文...

    Python标准库中英文.zip

    "Python标准库中文手册.zip"则可能是上述PDF文档的中文版,这对于中文使用者来说是个巨大的优势,因为语言障碍不再成为学习和理解Python标准库的难题。中文手册可能包含了详尽的中文注释和解释,使得非英语背景的...

    Python标准库3.7

    Python标准库是Python编程语言的核心组成部分,...提供的"Python标准库3.7.pdf"文件应该是官方文档的高清版,非常适合查阅和学习。通过仔细研读,你可以更好地掌握Python 3.7标准库的精髓,提升自己的编程实践能力。

    Python标准库(中文版)

    根据提供的文件信息,这里将对“Python标准库(中文版)”进行详细的解析与扩展,以便更好地理解Python标准库中的核心概念、功能及其在实际编程中的应用。 ### Python标准库概述 Python标准库是Python语言自带的一...

    python标准库中文版PDF(带章节书签PDF

    这份“Python标准库中文版PDF(带章节书签)”是对于这个庞大资源库的详细解释,特别适合初学者和有一定经验的开发者参考学习。书中的章节书签使得查阅和定位信息更加方便。 Python标准库涵盖了以下几个主要方面: 1...

    2014年辛星python标准库整理夏季版

    这份文档是对Python标准库的一次深入梳理和总结,尽管辛星本人承认这份文档可能不全面,并承诺在未来的版本中将进行改进,但该文档在当时为Python开发者提供了一个宝贵的学习资源。 从文档的描述来看,这份整理是...

    python中导入非标准库工具教程

    Python的非标准库涵盖各种领域,如数据处理(pandas、numpy)、网络请求(requests)、机器学习(scikit-learn、tensorflow)、图形用户界面(tkinter、wxPython)等。每个库都有其独特的API和使用方法,通常在安装...

    Python3.7.2中文文档-标准库-合集

    Python标准库是Python编程语言的核心组成部分,它包含了大量预装的模块和包,覆盖了各种功能,如网络通信、文件操作、数据结构、操作系统接口、加密、国际化等。这些模块由Python的开发团队维护,确保与Python解释器...

    python标准库PDF

    Python标准库是Python编程语言的核心组成部分,包含了大量预先编写好的函数和模块,为开发者提供了丰富的功能,无需从零开始编写所有代码。这个“Python标准库3.6参考手册中文完整pdf版”是针对Python 3.6版本的官方...

    PYTHON标准库带CD

    Python标准库是Python编程语言的核心组成部分,它包含了丰富的模块和函数,为开发者提供了大量预先编写好的功能,大大简化了开发过程。Python 2.0的标准库共有360个示例,这些示例覆盖了各种用途,从网络通信到文件...

    python标准库中文版PDF

    这份"Python标准库中文版PDF"对于中文学习者来说是一份极其宝贵的资源,它以中文详细解释了每个模块的用法和功能,使得理解和学习更为便捷。 Python标准库中的主要模块包括: 1. **os**:提供与操作系统交互的接口...

    Python标准库中文手册.zip

    通过这个中文手册,开发者可以快速查找和学习Python标准库中的特定功能,提高开发效率。手册通常会详细解释每个模块的用法、示例代码以及可能遇到的错误和解决方案。对于初学者和有经验的开发者来说,都是宝贵的参考...

Global site tag (gtag.js) - Google Analytics