254 次浏览
这基本上是单例对象的概念。如果您已经实例化了一个对象,并希望跨不同模块访问它,您可以使用两种方法,第一种是将该变量分配给您导入的模块下的一个变量名。例如,您有一个实例化的对象 myobj,并希望在模块 B 中使用它,那么您可以执行以下操作:>>> import B >>> B.myobj = myobj在模块 B 内部,像使用任何其他全局属性一样使用它。另一种方法是在需要的地方将此对象作为参数接受。例如,如果您有一个…… 阅读更多
132 次浏览
是的,函数调用(任何函数调用,不仅仅是递归函数)都会创建一个新的命名空间。但是,当作为参数给出时,对象是按引用传递的。因此,新的命名空间获得了对该引用的自己的副本,但它仍然引用与调用函数中相同的对象,如果您更改该对象的内容,您将在调用函数中注意到更改。更具体地说,每当解释器遇到对函数的调用时,它都会创建一个帧对象,该对象被推入帧堆栈。每次创建帧时,都会为该帧分配…… 阅读更多
162 次浏览
命名空间是实现作用域的一种方式。在 Python 中,每个包、模块、类、函数和方法函数都拥有一个“命名空间”,其中变量名得到解析。当评估函数、模块或包时(即开始执行),就会创建一个命名空间。把它想象成一个“评估上下文”。当函数等完成执行时,命名空间就会被丢弃。变量也被丢弃。此外,还有一个全局命名空间,如果名称不在局部命名空间中,则使用该命名空间。每个变量名都会在局部命名空间(函数体、模块等)中检查,然后在全局…… 阅读更多
82K+ 次浏览
本文解释了 Python 代码表达式 if __name__ == '__main__' 的含义。Python 程序使用条件 if __name__ == '__main__' 仅在 Python 解释器直接运行程序时才运行 if 语句内的代码。当文件的代码作为模块导入时,if 语句内的代码不会执行。什么是 __main__?单词 "__name__" 表示 Python 中的唯一变量。Python 具有大量以双下划线开头和结尾的特殊变量。为了简便起见,它们被称为 dunder(来自 Double Underscores)。…… 阅读更多
178 次浏览
在 Python 中,命名空间包允许您将 Python 代码分散到多个项目中。当您想将相关的库作为单独的下载发布时,这非常有用。例如,在 PYTHONPATH 中使用目录 Package-1 和 Package-2,Package-1/namespace/__init__.py Package-1/namespace/module1/__init__.py Package-2/namespace/__init__.py Package-2/namespace/module2/__init__.py 最终用户可以导入 namespace.module1 和导入 namespace.module2。在 Python 3.3 上,您无需执行任何操作,只需不要在命名空间包目录中放置任何 __init__.py 文件,它就会正常工作。这是因为 Python 3.3 引入了隐式命名空间包。在旧版本中,有一个标准模块,称为 pkgutil,您可以用它将模块“附加”到给定的命名空间。您…… 阅读更多
1K+ 次浏览
您可以使用 pip 在运行时安装包,并使用 importlib.import_module(moduleName) 通过使用其名称作为字符串来导入模块。例如,import pip import importlib def import_with_auto_install(package): try: return importlib.import_module(package) except ImportError: pip.main(['install', package]) return importlib.import_module(package) # Example if __name__ == '__main__': scrapy = import_with_auto_install('scrapy') print(scrapy)上述脚本安装 scrapy 模块并在模块安装完成后导入它。
6K+ 次浏览
Easy Install 是一个 Python 模块,它与 setuptools(easy_install)捆绑在一起,允许您自动下载、编译、安装和管理 Python 包。它于 2004 年包含在 setuptools 中,现在已被弃用。它当时之所以引人注目,是因为它可以自动安装依赖项并使用需求说明符从 PyPI 安装包。Pip 于 2008 年晚些时候发布,作为 easy install 的替代品,尽管它仍然主要基于 setuptools 组件。安装 Python 模块应使用 pip 而不是 easy install。如果您有 easy_install,则可以使用它来安装 pip。以下行…… 阅读更多
在撰写本文时,Azure Functions 对 Python 的支持处于实验阶段。因此,目前无法直接从包管理器获取要在您的实例上安装的模块。您需要使用代码自带模块。Azure Functions 默认情况下不提供任何模块。您可以通过上传门户 UX 或 kudu 来添加它们(这对于大量文件非常方便)。如果您不介意使用 virtualenv,则有一种替代方法。在 Azure Functions 上创建您的 Python 脚本。打开 Kudu 控制台并 cd 到您的脚本位置。在此文件夹中创建一个 virtualenv…… 阅读更多
869 次浏览
要检查您是否可以在 Python 2 中导入某些内容,您可以使用 imp 模块和 try...except。例如,import imp try: imp.find_module('eggs') found = True except ImportError: found = False print found这将为您提供输出:False您还可以使用 pkgutil 模块中的 iter_modules 来迭代所有模块以查找是否存在指定的模块。例如,from pkgutil import iter_modules def module_exists(module_name): return module_name in (name for loader, name, ispkg in iter_modules()) print module_exists('scrapy')这将给出输出:True这是因为此模块已安装在我的电脑上。或者,如果您…… 阅读更多
7K+ 次浏览
Python 标准库是可由 Python 程序使用的脚本模块的集合,无需重写常用的命令,从而简化了开发过程。通过在脚本开头“调用/导入”它们,可以使用它们。模块是一个包含 Python 代码的文件;“coding.py”文件将是一个名为“coding”的模块。我们使用模块将复杂的程序划分为更小、更易于管理的部分。模块还允许代码重用。在下面的示例中,名为“coding”的模块包含我们开发的函数 add()。…… 阅读更多