python导入模块顺序(python导入模块的方法有哪些)

1.python导入模块的方法有哪些

方法一

import modname

模块是指一个可以交互使用,或者从另一Python 程序访问的代码段。只要导入了一个模块,就可以引用它的任何公共的函数、类或属性。模块可以通过这种方法来使用其它模块的功能。

用import语句导入模块,就在当前的名称空间(namespace)建立了一个到该模块的引用.这种引用必须使用全称,也就是说,当使用在被导入模块中定义的函数时,必须包含模块的名字。所以不能只使用 funcname,而应该使用 modname.funcname

方法二

from modname import funcname

from modname import fa, fb, fc

或者

from modname import *

与第1种方法的区别:funcname 被直接导入到本地名字空间去了,所以它可以直接使用,而不需要加上模块名的限定* 表示,该模块的所有公共对象(public objects)都被导入到 当前的名称空间,也就是任何只要不是以”_”开始的东西都会被导入。

modname没有被定义,所以modname.funcname这种方式不起作用。并且,如果funcname如果已经被定义,它会被新版本(该导入模块中的版本)所替代。如果funcname被改成指向其他对象,modname不能不会觉察到。

建议:

1)如果你要经常访问模块的属性和方法,且不想一遍又一遍地敲入模块名,使用 from module import

2)如果你想要有选择地导入某些属性和方法,而不想要其它的,使用 from module import

3)如果模块包含的属性和方法与你的某个模块同名,你必须使用import module来避免名字冲突

4)尽量少用 from module import * ,因为判定一个特殊的函数或属性是从哪来的有些困难,并且会造成调试和重构都更困难。

方法三

内建函数__import__()

除了前面两种使用import关键字的方法以外,我们还可以使用内建函数 __import__() 来导入 module。两者的区别是,import 后面跟的必须是一个类型(type),而__import__() 的参数是一个字符串,这个字符串可能来自配置文件,也可能是某个表达式计算结果。例如:

mymodule = __import__ ('module_name')

附注:

1)模块的内容都放在一个模块文件中,如 mymodule 的内容应该放在PYTHONPATH 目录下的一个mymodule.py中,C实现的除外

2)包可以将几个模块名称空间组织起来, 如A.b 就表示在包A中的一个子模块b

可以单独导入某一个子模块,如Python文档中给出的例子

import sound.effects.echo

这样必须使用全称对里面的对象进行引用,如

sound.effects.echo.echofilter(input, output, delay=0.7, atten=4)

还可以使用下面的语句来加载echo子模块

from Sound.Effects import echo

它在没有包前缀的情况下也可以使用, 所以它可以如下方式调用:

echo.echofilter(input, output, delay=0.7, atten=4)

不主张从一个包或模块中用import * 导入所有模块,因为这样的通常会导致可读性很差。

from Package import specific_submodule的用法并没有错,实际上这还是推荐的用法,除非导入的模块需要使用其它包中的同名子模块(the importing module needs to use submodules with the same name from different packages).

综上所述,一般情况应该使用import , 但有几个例外

1)module文档告诉你要用from-import的

2)导入一个包组件。需要一个包里面的某个子模块,一般用from A.b import c比import A.b.c 更方便 且不会冒混淆的危险.

2.如何导入python中的模块

定义模块,只要使用文本编辑器,把一些python代码输入到文本中,然后以.py为后缀名进行保存,任何此类文件都会被认为是python模块。

比如说,下面的代码输入到一个文件中,就可以看作是一个模块:

def printme(var): print varif __name__ == '__main__': printme(1)

假设说输入到a.py中,那么import a就可以把这个模块导入。

然后可执行a.printme(3),屏幕即可打印出3:

>>> a.printme(3)3>>>

一个模块顶层定义的变量,会自动变成模块的属性。例如:

data=[1,2,3]def printme(var): print varif __name__ == '__main__': printme(1)

data变量就是模块的一个属性。其实printme也是一个属性,只不过是一个函数罢了。

引入模块示例如下:(假定此时data=[1,2,3]未定义)

>>> import a>>> a.data Traceback (most recent call last): File "", line 1, in a.dataAttributeError: 'module' object has no attribute 'data'>>> reload(a)>>> a.data Traceback (most recent call last): File "", line 1, in a.dataAttributeError: 'module' object has no attribute 'data'>>>

从上述提示可以看出data属性未定义,此时再在a.py文件中定义data=[1,2,3],重新加载a模块,并输出data属性:

>>> reload(a)>>> a.data[1, 2, 3]>>>

这里的reload函数可以重新加载一个模块。如果在模块代码中更改了,那么需要重新加载。

上面a.data,就是访问模块中的属性。

上面的例子是导入一个文件作为一个模块。

其实python的模块导入还有更丰富的内容。

除了模块名之外,python也可以导入指定目录路径。python代码的目录就称为包。因此,这类导入就称为包导入。事实上,包导入是把计算机上的目录变成python的一个命名空间。而属性就是目录中包含的子目录或者是模块文件。

看下面例子:

在我的桌面上有一个aa文件夹,里面有bb文件夹,bb里面有a.py这个文件。

那么在aa和bb文件夹中分别放置一个__init__.py,之后,在命令行中import aa.bb.a,就可以导入模块a了。

3.怎么从python引入自己的模块

1.如果导入的模块和主程序在同个目录下,直接import就行了

2.如果导入的模块是在主程序所在目录的子目录下,可以在子目录中增加一个空白的__init__.py文件,该文件使得python解释器将子目录整个也当成一个模块,然后直接通过“import 子目录.模块”导入即可。

3.如果导入的模块是在主程序所在目录的父目录下,则要通过修改path来解决,有两种方法:

(1)通过”import sys,sys.path.append('父目录的路径')“来改变,这种方法属于一次性的,只对当前的python解释器进程有效,关掉python重启后就失效了。

(2)直接修改环境变量:在windows中是 “ set 变量=‘路径’ ” 例如:set PYTHONPATH='C:\test\。' 查看是否设置成功用echo %PYTHONPATH%,而且进到python解释器中查看sys.path,会发现已经有了新增加的路径了。这 种方式是永久的,一次设置以后一直都有效。在linux中是 "export 变量=‘路径’ “,查看是" echo $变量 "

通过修改path是通用的方法,因为python解释器就是通过sys.path去一个地方一个地方的寻找模块的。

4.python 导入全部模块

通常的办法是,你将所有的模块都放到系统的lib目录里。或者是放到sys的path变量里。 然后就可以import了。

你可以设置一个容器。在容器里,将所有需要的模块都import完成。如果不知道哪些模块,可以使用OS的WALK来遍历。

把你的用户代码跑在容器里。这样就不需要import所有的模块了。 容器可以是自己写的一个解释器,比如象是ipython这样子。也可以是一个WEB界面, 或者是一个服务,一个可以调用插件的运行模块。

容器也可以是一个代码框架。

5.python在导入模块时模块会执行一次吗

在导入模块时,模块确实会优先走一遍,如果没有问题则按照代码的顺序由上而下运行。

可以使用pycharm来每行加入断点逐个调试一下,比如我这里写下简单的五行代码测试:当断点逐个执行时,发现import urllib 会运行两次,第一次就是执行模块,你可以理解为作检测,如果模块没有问题则先缓存到内存里,当有被调用的地方则立马对其做出反馈。然后第二次执行则是作为当前的主py程序里的普通代码来执行,按照代码由上而下的顺序运行。

其实不光模块或者包,自定义类和自定义函数也会优先执行一次的。

6.问Python导入模块的两种方法import module 和 from module*的差异

区别如下,以numpy模块为例:

① import numpy,在代码中调用numpy内的函数、方法、参数等时,需要如下写代码: numpy.mean()。 当然 也可写为import numpy as np,这样你在代码中调用时就用np替代numpy。

② from numpy import *,在代码中调用numpy内的函数、方法、参数等时则可直接如下写代码:mean()。

但是建议使用①中的方法导入模块,因为不排除两个模型中有相同名称的函数、方法、参数等,如出现此情况会起冲突。如你使用②方法导入了模块A、B,并且两个模型中都有函数mean(),而你在后面的代码中刚好需要调用mean()。请问计算机会怎么办???

打字不易,请采纳!!!

7.python如何导入自定义模块

这个问题涉及到包和模块管理。包名和模块名一般是小写。你的文件是下面的结构,需要创建空文件 b/__init__.py,将b目录变成package。

a/a.py

1

2

fromb.c importindex

index()

b/c.py

1

2

defindex():

print("hello")

b/__init__.py

a/a.py 里面有两种引用方式,相对引用和绝对引用:

# 如果a.py是 library,两种引用方式都可以

1

from..b.c importindex

# 如果a.py是 executable,必须使用绝对引用

1

fromb.c importindex

如果使用绝对引用,需要确保b所在目录在PYTHONPATH (sys.path)里面,比如可以这样执行:

1

envPYTHONPATH=. python a/a.py

8.Python导入模块或包需要注意哪些点

Python是一种面向对象的编程语言,里面包含有丰富强大的库,想要学习Python开发,首先需要学习如何导入模块或包。

下面就跟大家一起讨论下Python导入模块的几种方法:常规导入 最常用的导入方式,大概是这样的:import sys 只需要使用 import ,然后指定希望导入的模块或包即可。用这种方法导入的好处是可以一次性导入多个包或模块: import os, sys, time 虽然这节省了空间,但是却违背了Python风格指南。

Python风格指南建议将每个导入语句单独成行 。 有时在导入模块时,你想要重命名这个模块。

这个功能很容易实现:import sys as system print(system.platform) 上面的代码将我们导入的 sys 模块重命名为 system 。我们可以按照和以前一样的方式调用模块的方法,但是可以用一个新的模块名。

也有某些子模块必须要使用点标记法才能导入。 import urllib.error 这个情况不常见,但是对此有所了解总是没有坏处的。

使用from语句导入 有时我们只想要导入一个模块或库中的某个部分。那么Python是如何实现这点:from functools import lru_cache 上面这行代码可以让你直接调用 lru_cache 。

如果按常规方式导入 functools ,那么就必须像这样调用 lru_cache : functools.lru_cache(*args) 根据实际的使用场景,上面的做法可能是更好的。在复杂的代码库中,能够看出某个函数是从哪里导入的这点很有用的。

不过,如果你的代码维护的很好,模块化程度高,那么只从某个模块中导入一部分内容也是非常方便和简洁的。当然,你还可以使用from方法导入模块的全部内容,就像这样:from os import * 这种做法在少数情况下是挺方便的,但是这样也会打乱你的命名空间。

问题在于,你可能定义了一个与导入模块中名称相同的变量或函数,这时如果你试图使用 os 模块中的同名变量或函数,实际使用的将是你自己定义的内容。因此,你最后可能会碰到一个相当让人困惑的逻辑错误。

标准库中我唯一推荐全盘导入的模块只有Tkinter 。 如果你正好要写自己的模块或包,有人会建议你在 __init__.py 文件中导入所有内容,让模块或者包使用起来更方便。

我个人更喜欢显示地导入,而非隐式地导入。 你也可以采取折中方案,从一个包中导入多个项:from os import path, walk, unlinkfrom os import uname, remove 在上述代码中,我们从 os 模块中导入了5个函数。

你可能注意到了,我们是通过多次从同一个模块中导入实现的。当然,如果你愿意的话,你也可以使用圆括号一次性导入多个项: from os import (path, walk, unlink, uname, remove, rename) 这是一个有用的技巧,不过你也可以换一种方式:from os import path, walk, unlink, uname, \ remove, rename 上面的反斜杠是Python中的续行符,告诉解释器这行代码延续至下一行。

相对导入 PEP 328 介绍了引入相对导入的原因,以及选择了哪种语法。具体来说,是使用句点来决定如何相对导入其他包或模块。

这么做的原因是为了避免偶然情况下导入标准库中的模块产生冲突。这里我们以PEP 328中给出的文件夹结构为例,看看相对导入是如何工作的: my_package/ __init__.py subpackage1/ __init__.py module_x.py module_y.py subpackage2/ __init__.py module_z.py module_a.py 在本地磁盘上找个地方创建上述文件和文件夹。

在顶层的 __init__.py 文件中,输入以下代码: from . import subpackage1from . import subpackage2 接下来进入 subpackage1 文件夹,编辑其中的 __init__.py 文件,输入以下代码: from . import module_xfrom . import module_y 现在编辑 module_x.py 文件,输入以下代码: from .module_y import spam as ham def main(): ham() 最后编辑 module_y.py 文件,输入以下代码: def spam(): print('spam ' * 3) 打开终端, cd 至 my_package 包所在的文件夹,但不要进入 my_package 。在这个文件夹下运行Python解释器。

我使用的是IPython,因为它的自动补全功能非常方便: In [1]: import my_package In [2]: my_package.subpackage1.module_xOut[2]: In [3]: my_package.subpackage1.module_x.main()spam spam spam 相对导入适用于你最终要放入包中的代码。如果你编写了很多相关性强的代码,那么应该采用这种导入方式。

你会发现PyPI上有很多流行的包也是采用了相对导入 。还要注意一点,如果你想要跨越多个文件层级进行导入,只需要使用多个句点即可。

不过, PEP 328建议相对导入的层级不要超过两层 。 还要注意一点,如果你往 module_x.py 文件中添加了 if __name__ == '__main__' ,然后试图运行这个文件,你会碰到一个很难理解的错误。

编辑一下文件,试试看吧! from . module_y import spam as ham def main(): ham() if __name__ == '__main__': # This won't work! main() 现在从终端进入 subpackage1 文件夹,执行以下命令: python module_x.py 如果你使用的是Python 2,你应该会看到下面的错误信息:Traceback (most recent call last): File "module_x.py", line 1, in from . module_y import spam as 。

9.如何导入python模块

1. python是由一系列的模块组成的,每个模块就是一个py为后缀的文件,同时模块也是一个命名空间,从而避免了变量名称冲突的问题。

模块我们就可以理解为lib库,如果需要使用某个模块中的函数或对象,则要导入这个模块才可以使用,除了系统默认的模块(内置函数,约250多个)不需要导入外。2.在python中常用import或者from。

import来导入相应的模块。模块一些函数和类的集合文件,并实现一定的功能,当我们需要使用这些功能的时候,可以直接把相应的模块导入到我们的程序中,类似C语言中的include头文件。

输入模块的方法如下所示:3.import:import mode #导入mode模块print('=======Python import mode===============');print ('The command line arguments are:')for i in mode.argv:print (i)print ('\n The python path',mode.path)即导入mode模块后,使用mode.***即可使用mode模块中的***方法,函数等。4.from。

import。:from mode import argv,path #从mode中导入特定的成员print('========python from import============')print('path:',path)即使用from mode import argv即可直接调用mode模块中argv函数,方法等5. 简单的说,使用第二种方法导入模块,那么调用模块中的函数的时候就不需要输入模块名称即可直接调用了。

具体的实例可以参见如下两种情况:6.另外,还有一种'from。import。

as。'的导入方法。

这样调用模块中的函数的时候,可以用自己想要的名字来替代该函数名了,如下图中,即用'haha'来替代了'urlopen'这个函数:7.总结:导入mode模块,import与from…import的不同之处在于:如果你想要直接输入argv变量到你的程序中而避免每次调用都输入mode,则可使用:from mode import arg一般说来,应该避免使用from..import而使用import来增加程序的可读性,也可以避免名称的冲突。

python导入模块顺序

转载请注明出处编程代码网 » python导入模块顺序(python导入模块的方法有哪些)

资讯

pythonshiftjis(Shift)

阅读(24)

本文主要为您介绍pythonshiftjis,内容包括python单引号怎么打,ShiftJIS码表在哪里得到,在python怎么打出这个字符。一般日文的rpg游戏的码表通常是Shift-JIS格式的,但是不是全部的Shift-JIS编码,一般是精简的 游戏rom中会有一段字符编

资讯

pythonmqtt客户端(paho.mqtt.python)

阅读(20)

本文主要为您介绍pythonmqtt客户端,内容包括paho.mqtt.pythonmaster怎么安装,PythonRPyC如何实现客户端与服务端通信,Python中用socket编写服务器和客户端。下载Apollo服务器,下载后解压,然后运行apache-apollo-1.6\bin\apollo.cmd,输入crea

资讯

python最长回文(最长回文字符串)

阅读(25)

本文主要为您介绍python最长回文,内容包括最长回文字符串,最长回文字符串,输入一个字符串,求出其中最长的回文子串注意:判断时忽略所有标。好麻烦的程序 ,搞了一中午。程序如下,测试通过(带两个典型例

资讯

python正则小括号(Python正则表达式中括号的作用)

阅读(24)

本文主要为您介绍python正则小括号,内容包括ypthon正则表达式的小括号是怎么用的,Python正则表达式中括号的作用,python正则表达式去掉括号及其里面的内容。示例:(abc|bcd|cde),表示这一段是abc、bcd、cde三者之一均可,顺序也必须一致2、(abc)?,表示

资讯

python设置壁纸(如何用python写一个可以自动换壁纸)

阅读(43)

本文主要为您介绍python设置壁纸,内容包括python小白提问用python换个桌面背景,如何用python写一个可以自动换壁纸,python给图形化界面插入背景图片。path="D:\我的文档\My Pictures\wallpaper" #壁纸目录newpath=os.path.join(os.ge

资讯

python地址引用(python变量与地址的关系)

阅读(25)

本文主要为您介绍python地址引用,内容包括python怎么引用其他文件的类,python变量与地址的关系,如何导入其他位置的python模块。在C语言中,系统会为每个变量分配内存空间,当改变变量的值时,改变的是内存空间中的值,变量的地址是不改变的。而在p

资讯

python开发web框架搭建(pythonweb开发该用什么框架)

阅读(24)

本文主要为您介绍python开发web框架搭建,内容包括pythonweb开发该用什么框架,pythonweb开发框架怎么搭建,如何用Python做Web开发。作对初学者来说,循序渐进是最重要的,我推荐学习 Flask(Welcome | Flask (A Python Microframewo

资讯

python2.7除法(python2.7.12引用模块做整数除法)

阅读(34)

本文主要为您介绍python2.7除法,内容包括python除法/与//在2.7*和3.*版本的区别,python2.7.12引用模块做整数除法,python2.7.12引用模块做整数除法。没有_future_这个包吧~你是用python做除法么?整除不用引入任何包 ,把from _future_ import

资讯

python拓扑图数据(python如何表示数据结构)

阅读(21)

本文主要为您介绍python拓扑图数据,内容包括python如何表示数据结构,python数据分析和数据展现的模块可以用,简单介绍Python中的几种数据类型。Python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第

资讯

python爬虫执行js(如何用python爬取js渲染加载的视频文件)

阅读(25)

本文主要为您介绍python爬虫执行js,内容包括如何用python抓取js生成的数据,大神:python怎么爬取js的页面,Python爬虫在处理由Javascript动态生成的页面时解决方案百度。可以使用selenium+ phantomjsPhantomJS是一个基于webkit的JavaScript A

资讯

python对电脑要求(学习python的电脑需要怎样的配置)

阅读(23)

本文主要为您介绍python对电脑要求,内容包括学习python的电脑需要怎样的配置,python对电脑的要求,学习python的电脑需要怎样的配置求最低配,详细些,谢谢啦百度知。现在电脑的各种配置均可以用来学习python,老的赛扬、奔腾4 256 m 内存或者51

资讯

python3传参(python命令行传参的几种方法)

阅读(24)

本文主要为您介绍python3传参,内容包括python命令行传参的几种方法,python中参数传递的方式是什么,python函数传参是传值还是传引用。安装之后配置环境变量的步骤如下:1,点“我的电脑”,右键选“属性”2,选择:高级系统设置3,选择:环境变量4,在“系

资讯

pythonshiftjis(Shift)

阅读(24)

本文主要为您介绍pythonshiftjis,内容包括python单引号怎么打,ShiftJIS码表在哪里得到,在python怎么打出这个字符。一般日文的rpg游戏的码表通常是Shift-JIS格式的,但是不是全部的Shift-JIS编码,一般是精简的 游戏rom中会有一段字符编

资讯

pythonmqtt客户端(paho.mqtt.python)

阅读(20)

本文主要为您介绍pythonmqtt客户端,内容包括paho.mqtt.pythonmaster怎么安装,PythonRPyC如何实现客户端与服务端通信,Python中用socket编写服务器和客户端。下载Apollo服务器,下载后解压,然后运行apache-apollo-1.6\bin\apollo.cmd,输入crea

资讯

python最长回文(最长回文字符串)

阅读(25)

本文主要为您介绍python最长回文,内容包括最长回文字符串,最长回文字符串,输入一个字符串,求出其中最长的回文子串注意:判断时忽略所有标。好麻烦的程序 ,搞了一中午。程序如下,测试通过(带两个典型例

资讯

python正则小括号(Python正则表达式中括号的作用)

阅读(24)

本文主要为您介绍python正则小括号,内容包括ypthon正则表达式的小括号是怎么用的,Python正则表达式中括号的作用,python正则表达式去掉括号及其里面的内容。示例:(abc|bcd|cde),表示这一段是abc、bcd、cde三者之一均可,顺序也必须一致2、(abc)?,表示

资讯

python设置壁纸(如何用python写一个可以自动换壁纸)

阅读(43)

本文主要为您介绍python设置壁纸,内容包括python小白提问用python换个桌面背景,如何用python写一个可以自动换壁纸,python给图形化界面插入背景图片。path="D:\我的文档\My Pictures\wallpaper" #壁纸目录newpath=os.path.join(os.ge

资讯

python获取屏幕分辨率(python+appium中的tap怎么用呀)

阅读(34)

本文主要为您介绍python获取屏幕分辨率,内容包括python怎么自动识别设备的分辨率,python怎么自动识别设备的分辨率,python怎么获取mp4的分辨率。先看看tap是什么,定义在了TouchAction中,代码如下def tap(self, element=None, x=None, y