`

(转)简单说说python import与from...import....(python模块)

 
阅读更多

在python用import或者from...import来导入相应的模块。模块其实就一些函数和类的集合文件,它能实现一些相应的功能,当我们需要使用这些功能的时候,直接把相应的模块导入到我们的程序中,我们就可以使用了。这类似于C语言中的include头文件,Python中我们用import导入我们需要的模块。

eg:

import sys
print('================Python import mode==========================');
print ('The command line arguments are:')
for i in sys.argv:
    print (i)
print ('\n The python path',sys.path)

from sys import argv,path#导入特定的成员
print('================python from import===================================')
print('path:',path)

如果你要使用所有sys模块使用的名字,你可以这样:

from sys import *
print('path:',path)

从以上我们可以简单看出:

############################
#导入mode,import与from...import的不同之处在于,简单说:
# 如果你想要直接输入argv变量到你的程序中而每次使用它时又不想打sys,
# 则可使用:from sys import argv
# 一般说来,应该避免使用from..import而使用import语句,
# 因为这样可以使你的程序更加易读,也可以避免名称的冲突
###########################

 

关于Import中的路径搜索问题

类似于头文件,模块也是需要系统的搜索路径的,下面的命令即是系统默认的搜索路径,当你导入一个模块时,系统就会在下面的路径列表中搜索相应的文件。

>>> print(sys.path)

['D:/xx/PythonSERVER/python31/Code', 'D:\\xx\\PythonSERVER\\python31\\Lib\\idlelib', 'C:\\WINDOWS\\system32\\python31.zip', 'D:\\xx\\PythonSERVER\\python31\\DLLs', 'D:\\xx\\PythonSERVER\\python31\\lib', 'D:\\xx\\PythonSERVER\\python31\\lib\\plat-win', 'D:\\xx\\PythonSERVER\\python31', 'D:\\xx\\PythonSERVER\\python31\\lib\\site-packages']

(从例表中,我们可以看到python会首先在当前工作目录里去找)

如果没有找到相应的内容,则报错:

>>> import syss

Traceback (most recent call last):
  File "D:/xxx/xxx/xx/Code/test.py", line 19, in <module>
    import syss
ImportError: No module named syss

当然,我们也可以自行添加要搜索路径。调用列表的append方法即可:

import sys
sys.path.append('D:/xx/PythonSERVER/python31/Code')

另注:以上本部分信息摘至:http://blog.sina.com.cn/s/blog_4b5039210100ennq.html


创建自己的模块

在创建之前,有一点需要说明一下:每个Python模块都有它的__name__(就每个对象都自己的__doc__一样)。通过__name__我们可以找出每一个模块的名称,一般__name__的值有种:1 一是主模块名称为:"__main__"(可以理解为直接运行的那个文件),2 那些被主模块导入的模块名称为:文件名字(不加后面的.py)。有__name__是很有用的,因为我们可以通过 if __name__  == 'xxx' 判断来执行那些模块,那些模块不被执行。另外:每个Python程序也是一个模块。它扩展名为:.py扩展名。

下面,我们通过例子来说明:
首先:我们创建模块:mymodel.py

#!/user/bin/python
#Filename:mymodel.py
version = '1.0'
def sayHello():
    print ('Hello world')

def modelName():
    return __name__#返回它自己的名称
#end of model

以上语句注意:

                  1 这个模块应该被放置在我们输入它的程序的同一个目录中,或者在sys.path所列目录之一。

                  2 你已经看到,它与我们普通的Python程序相比并没有什么特别之处

 

然后:我们在test.py中来调用此模块:test.py

import sys,mymodel
sys.path.append('D:/xx/PythonSERVER/python31/Code')#提供搜索路径
print(__name__) #此处打印主模块的名称:__main__
mymodel.sayHello()
print('Version',mymodel.version)
print('Model Name',mymodel.modelName())
#打印被导入模块的名称: mymodel

我们使用from..import...

print('======================from.....import=====================================')
from mymodel import *
print(__name__)
#此处打印主模块的名称:__main__
sayHello()
print('Version',version)
print('Model Name',modelName()) 
#打印被导入模块的名称: mymodel

 

以上语句注意:

                  1 我们可以通过import来导入多个模块,用“,”(逗号)分隔。

                  2 注意import与from..import.....

分享到:
评论

相关推荐

    import, from...import,import...as的区别.pdf

    本文将详细解释在Python中使用import语句导入模块的几种不同方式,包括直接导入(import)、从模块中导入特定部分(from...import)以及导入模块时为其设置别名(import...as)的区别和用法。 首先,直接使用import...

    Python import用法以及与from...import的区别

    ### Python `import` 用法及与 `from...import` 的区别 在 Python 编程中,`import` 和 `from...import` 是两种常用的模块导入方式。它们可以帮助程序员引入其他 Python 文件(即模块)中定义的功能,如函数、类等...

    python import机制 - .pptx

    讲解了python的import机制,从pyc与py区别,python词法分析,import种类等方面分析python的import

    Python库 | wasgehtengine.import-1.3.0.zip

    资源分类:Python库 所属语言:Python 资源全名:wasgehtengine.import-1.3.0.zip 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    python中import与from方法总结(推荐)

    模块:所谓模块就是一个.py文件,用来存放变量,方法的文件,便于在其他python文件中导入(通过import或from)。 包(package): 包是更大的组织单位,用来组织区别管理多个模块文件。 import 用来导入模块 from 用于从模块...

    python模块导入练习.zip

    在Python中,你可以使用`import`语句来引入其他模块。例如,如果你想使用Python的标准库中的`math`模块,可以这样写: ```python import math ``` 接着,你可以通过`.`操作符访问`math`模块中的函数,如`sqrt()`:...

    python-import的规则.docx

    Python的import语句是程序组织和模块化的核心,它允许我们从不同的文件中引入功能,以便在当前脚本中重用代码。理解import的工作机制对于编写高效、可维护的Python程序至关重要。 首先,我们要理解模块搜索路径。当...

    python import

    在Python编程中,`import`语句是用于引入其他模块或包的关键字,这使得代码可以复用和组织。当你需要在不同的文件夹结构中导入`.py`文件时,了解正确的导入策略至关重要。以下是一些关于如何在Python中正确导入跨...

    详解Python中的from..import绝对导入语句

    为了在不同的模块或包之间共享代码,Python提供了导入(import)机制。导入机制支持两种主要类型的导入:**相对导入**与**绝对导入**。本文将详细介绍绝对导入的概念及其在Python中的应用,并通过具体示例加深理解。...

    python专用boost扩展模块/boost_python-1.55.win32-py3.3.rar

    Python Boost扩展模块是将C++的Boost库与Python语言相结合的一种工具,旨在增强Python的性能和功能。Boost库是一个开源的C++库集合,提供了大量的高效、跨平台的实用程序,包括数学算法、图形库、多线程支持、日期...

    解决python中导入win32com.client出错的问题

    解决这个问题的方法相对简单,主要分为两步:确保`win32com`模块已经安装,并且安装的是正确的版本。 ##### 第一步:安装win32com模块 可以使用Python的包管理工具pip来安装`win32com`及其相关组件。首先,打开...

    第10章 Python的模块和包.rar

    - 使用`from...import...`可以导入模块中的特定部分,如`from math import sqrt`仅导入平方根函数。 - `import...as...`可以给模块起别名,如`import numpy as np`,便于后续调用。 2. **内置模块与自定义模块**...

    opencv——python-3.4.0.12

    2. import cv2 失败,ImportError: DLL load failed: 找不到指定的模块 3. 按照网上博客提示,下载 Visual C++ Redistributable for Visual Studio 2015;,重启 4.依旧失败,import cv2 失败,ImportError: DLL ...

    lstm autoencoder keras 旋转器械异常检测.zip

    数据说明 ...from tensorflow.python.keras.layers.convolutional import Conv1D, UpSampling1D from tensorflow.python.keras.layers.convolutional import MaxPooling1D from tensorflow.python.keras.m

    Python之模块学习.doc

    2. **从模块导入特定项**:如果你只需要模块中的某些特定函数或对象,可以使用`from...import`语句来导入这些项。例如: ```python from module_name import function_name ``` 这种方式允许你在不引用模块名称...

    Python-将MicrosoftOutlookmsg文件转换为emlMIME消息文件的Python库

    2. **导入msgconvert模块**:在Python脚本中,你需要导入`msgconvert`模块,这样就可以调用其提供的函数来处理MSG文件。 3. **读取MSG文件**:使用`msgconvert.load_msg_file()`函数读取MSG文件并将其转换为Python...

    Python库 | lib_import-0.0.4.tar.gz

    在标签部分,"python 开发语言 Python库"明确了这个资源与Python语言的开发紧密相关,特别是对于那些需要扩展或优化其项目中模块导入功能的开发者来说,这个库可能是非常有用的。 通常,一个Python库的结构包括以下...

    Python库 | autoimport-1.0.4.tar.gz

    `autoimport`是一个Python库,其主要功能是动态地自动导入代码中需要用到的模块。这意味着你不再需要在脚本开头显式地导入所有需要的库,而是可以在运行时根据需要自动导入。这对于快速原型开发、实验性项目或者需要...

    Python编程入门教程.pptx

    Python编程入门教程.pptx Python编程入门教程.pptx Python编程入门教程.pptx

Global site tag (gtag.js) - Google Analytics