我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python import 【总结】

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python import 【总结】

Python import总结

可能网上很多文章或博客都没解释清楚,作者自己也苦心于Python的import。至此,把自己的总结的分享给大家,本文不做基础讲解,仅说明疑惑的地方。

新版本的Pycharm 2017.1.1,对自己定义的模块都有提示,写代码的提示(如方法,变量)。

wKioL1kEHmnBFJV3AAANxCJCu4c831.png-wh_50

import的本质,针对包和模块来说,对于版本Python2和Python3来说,意义一样的,仅拿Python2做实验说明,Python3不做赘述。Python2版本Python2.7.13,Python3版本Python3.6.1.

3.1   模块

导入模块的本质是把python文件解释和执行一遍。

test.py

#!/usr/bin/env python

# -*- coding:utf-8 -*-

# author: Changhua Gong

 

print("I am test module.")

下面在同级目录TestImport.py中导入该模块:

TestImport.py文件如下:

#!/usr/bin/env python

# -*- coding:utf-8 -*-

# author: Changhua Gong

 

import os,sys

import test

执行命令:

C:\Python27\python.exeC:/Users/Administrator/PycharmProjects/Foundation/FuckImp/TestImport.py

I am test module.

3.2   包

导入包的本质是执行包下的__init__.py文件。

dir1/__init__.py文件如下:

#!/usr/bin/env python

# -*- coding:utf-8 -*-

# author: Changhua Gong

 

print("I am dir1package.")

TestImport.py文件如下:

#!/usr/bin/env python

# -*- coding:utf-8 -*-

# author: Changhua Gong

 

import os,sys

import dir1

执行命令:

C:\Python27\python.exeC:/Users/Administrator/PycharmProjects/Foundation/FuckImp/TestImport.py

I am dir1 package.

4.1   导入模块

普通导入import test,模块下的全部对象全部导入,这里不做说明;下面是对模块进行对象的限制导入说明。

test.py文件如下:

#!/usr/bin/env python

# -*- coding:utf-8 -*-

# author: Changhua Gong

 

__all__=["A","printInfo"]

A = "Python"

B = "Java"

C = "Php"

def printInfo():

print("I am test module.")

TestImport.py文件如下:

#!/usr/bin/env python

# -*- coding:utf-8 -*-

# author: Changhua Gong

 

import os,sys

import test

# from test import *

 

print(test.A)

print(test.B)

print(test.C)

test.printInfo()

执行python:

C:\Python27\python.exeC:/Users/Administrator/PycharmProjects/Foundation/FuckImp/TestImport.py

Python

Java

Php

I am test module.

发现所有对象都导入了。

使用from x import *导入:

TestImport.py文件如下:

#!/usr/bin/env python

# -*- coding:utf-8 -*-

# author: Changhua Gong

 

import os,sys

# import test

from test import *

 

print(A)

print(B)

print(C)

printInfo()

执行命令:

C:\Python27\python.exe C:/Users/Administrator/PycharmProjects/Foundation/FuckImp/TestImport.py

Python

Traceback (most recent call last):

  File"C:/Users/Administrator/PycharmProjects/Foundation/FuckImp/TestImport.py",line 10, in <module>

    print(B)

NameError: name 'B' is not defined

注释掉__all__中没有的对象,如下:

TestImport.py文件如下:

#!/usr/bin/env python

# -*- coding:utf-8 -*-

# author: Changhua Gong

 

import os,sys

# import test

from test import *

 

print(A)

# print(B)

# print(C)

printInfo()

执行命令:

C:\Python27\python.exeC:/Users/Administrator/PycharmProjects/Foundation/FuckImp/TestImport.py

Python

I am test module.

总结:模块中__all__对对象的限制,仅对fromimport有效,对import无效

4.2   Python2

4.2.1   导入包

在__init__.py文件中,直接import该包下的模块。

导入dir1包:

dir1/__init__.py文件如下:

#!/usr/bin/env python

# -*- coding:utf-8 -*-

# author: Changhua Gong

'''

1.这个文件在导入包时,确实会被执行;

'''

 

import test11

import test12

TestImport.py文件如下:

#!/usr/bin/env python

# -*- coding:utf-8 -*-

# author: Changhua Gong

 

import os,sys

import dir1

 

dir1.test11.printInfo()

dir1.test12.printInfo()

执行命令:

C:\Python27\python.exeC:/Users/Administrator/PycharmProjects/Foundation/FuckImp/TestImport.py

I am test11.

I am test12.

在__init__.py文件中,定义__all__导入:

导入dir1包:

dir1/__init__.py文件如下:

#!/usr/bin/env python

# -*- coding:utf-8 -*-

# author: Changhua Gong

'''

1.这个文件在导入包时,确实会被执行;

'''

 

__all__=["test11","test12"]

TestImport.py文件如下:

#!/usr/bin/env python

# -*- coding:utf-8 -*-

# author: Changhua Gong

 

import os,sys

from dir1 import *

 

test11.printInfo()

test12.printInfo()

 

执行命令:

C:\Python27\python.exe C:/Users/Administrator/PycharmProjects/Foundation/FuckImp/TestImport.py

I am test11.

I am test12.

Python2中用from package import*可导入package下__init__.py文件限制的模块。将解释器切换至Python3,发现也可正常执行。

在__init__.py文件中,使用相对路径导入:

dir1/__init__.py文件如下:

#!/usr/bin/env python

# -*- coding:utf-8 -*-

# author: Changhua Gong

'''

1.这个文件在导入包时,确实会被执行;

'''

 

from . import test11

from . import test12

TestImport.py文件如下:

#!/usr/bin/env python

# -*- coding:utf-8 -*-

# author: Changhua Gong

 

import os,sys

import dir1

# from dir1 import *

 

dir1.test11.printInfo()

dir1.test12.printInfo()

或者

#!/usr/bin/env python

# -*- coding:utf-8 -*-

# author: Changhua Gong

 

import os,sys

# import dir1

from dir1 import *

 

test11.printInfo()

test12.printInfo()

上述Python都能正常运行在Python2中,切换python解释器3,发现也能正常运行。

4.3   Python3

导入dir1包:

dir1/__init__.py文件如下:

#!/usr/bin/env python

# -*- coding:utf-8 -*-

# author: Changhua Gong

'''

1.这个文件在导入包时,确实会被执行;

'''

 

import test11

import test12

TestImport.py文件如下:

#!/usr/bin/env python

# -*- coding:utf-8 -*-

# author: Changhua Gong

 

import os,sys

import dir1

 

dir1.test11.printInfo()

dir1.test12.printInfo()

执行命令:

C:\Python36\python.exeC:/Users/Administrator/PycharmProjects/Foundation/FuckImp/TestImport.py

Traceback (most recent call last):

  File"C:/Users/Administrator/PycharmProjects/Foundation/FuckImp/TestImport.py",line 6, in <module>

    import dir1

  File"C:\Users\Administrator\PycharmProjects\Foundation\FuckImp\dir1\__init__.py",line 8, in <module>

    importtest11

ModuleNotFoundError: No module named 'test11'

总结:包中__init__.py文件中直接importmodule,调用该包时,Python2中能正常运行,Python3中却异常报错。

  1. 针对模块导入,模块中可采取__all__限制from moduleimport *导入的对象,模块的导入Python2和Python3并没有差异,都不会抛出异常;

  2. 针对的导入,Python2中包下__init__文件可直接import对应包下的模块,Python3不能这样导入,需使用相对路径导入(from . import module),而相对路径导入的方法对Python2和Python3都有效;

  3. 针对的导入,Python2中包下__init__文件中使用__all__限制frompackage import *对象时,对Python2和Python3都有效;

  4. 针对从包来导包的导入,例如本例。

下面是dir1下的__init__文件

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author: Changhua Gong
'''
1.
这个文件在导入包时,确实会被执行;
'''

from . import test11
from . import test12

 

交互式环境

C:\Users\Administrator\PycharmProjects\Foundation>python  顶级目录

>>> from FuckImp import dir1

>>> dir1.test11.printInfo()  # 加上包名就可调用了

I am test11.

        

         在python项目中

         TestImp.py如下:

#!/usr/bin/env python

# -*- coding:utf-8 -*-

# author: Changhua Gong

 

from FuckImp import dir1

 

dir1.test11.printInfo()# 加上包名就可调用了

运行

C:\Python27\python.exeC:/Users/Administrator/PycharmProjects/Foundation/FuckImp/TestImport.py

I am test11.

Python2和Python3一样有效

  1. 当import后是package或module时,调用对应的对象时,需加上pkg.module.object或module.object, 如from x import *,可直接调用x下的对象。


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python import 【总结】

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python import 【总结】

Python import总结可能网上很多文章或博客都没解释清楚,作者自己也苦心于Python的import。至此,把自己的总结的分享给大家,本文不做基础讲解,仅说明疑惑的地方。新版本的Pycharm 2017.1.1,对自己定义的模块都有
2023-01-31

python 总结

一.列表1.extend(列表独有功能)循环添加到一个列表中a.有列表users = ['张三',‘李四]   people = ['小明,王五']users.extend(people)   # 在users中添加people.exten
2023-01-31

Python-socket总结

socket是什么什么是socket所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过"套接字"向网络发出请求或者应答网络请求。说白了就是一种通信机制。列入你和移动客服咨询问题时,会有一个客服
2023-01-31

PYthon signal总结

预设信号处理函数signal包的核心是使用signal.signal()函数来预设(register)信号处理函数,如下所示:singnal.signal(signalnum, handler)signalnum为某个信号,handler为
2023-01-31

Python中list总结

1:列表 list的定义:一个连续的,排列有序的数列,由若干个元素组成,元素可以是任意对象(数字、字符串,对象,列表),元素可以使用索引查找,线性的数据结构。使用[ ]表示。列表是可变的,是可迭代对象。列表具体定义l=[ ] (空列表)
2023-01-31

python用法总结

requests库的用法:requests是python实现的简单易用的HTTP库因为是第三方库,所以使用前需要cmd安装pip ×××tall requests安装完成后import一下,正常则说明可以开始使用了基本用法:import r
2023-01-31

Python import

python 的import是需要将项目目录加到python的环境变量里面这样才能用项目的相对路径来导入文件要运行文件加入import osimport sysBASEDIR = os.path.dirname(os.path.abspat
2023-01-31

Python 函数总结

声明和调用函数:    声明函数的方法是用def关键字,函数名及小括号里面的参数列表。def foo(x): print x    调用函数:给出函数名和一小对括号,并放入所需参数:#!/usr/bin/env pytho
2023-01-31

python 面试总结

金* python开发工程师:1. 字符串连接+和join的区别:主要考察两种实现方式内存管理:       字符串对象是不可改变的,Python创建一个字符串后,你不能把这个字符中的某一部分改变。任何对字符串的操作包括'+'操作符, 每次
2023-01-31

Python:索引总结

Python包含6种内建序列:列表元组字符串Unicode字符串buffer对象xrange对象索引#字符串可以直接使用索引,不需要专门的变量引用>>> 'Hello World!'[0]'H'>>> 'Hello World!'[11]'
2023-01-31

python语法总结

正确处理中文,可以在#!/usr/bin/python下面加上 一行# -*- coding: utf-8 -*-列表list。用方括号list1=[1,'2',3,[a,b,c]]尾部添加元素list1.append('python')l
2023-01-31

Python总结:Python基础(一)

入门知识拾遗一、作用域对于变量的作用域,执行声明并在内存中存在,该变量就可以在下面的代码中使用。123if 1==1:    name = 'wupeiqi'print  name下面的结论对吗?外层变量,可以被内层变量使用内层变量,无法被
2023-01-31

python 学习总结3

Python蟒蛇绘制一、实现程序如下 1 import turtle 2 turtle.setup (650, 350, 200, 200)#turtle的绘图窗体turtle.setup(width, height, startx, st
2023-01-30

python import MySQLd

警告:Python26\lib\site-packages\MySQLdb\__init__.py:34: DeprecationWarning: the sets module is deprecated  from sets impor
2023-01-31

python shutil模块总结

shutil.copyfile(src,dst)复制文件,如果存在会覆盖copymode( src, dst)复制权限copystat(src, dst)复制访问时间和修改时间和权限copy(src, dst) 复制文件到一个目录copy2
2023-01-31

python学习总结-----pytho

一、python简介    python 是一种面向对象、解释性的脚本语言,遵循 GPL 协议。语法简单、社区强大、丰富的库支持。又被称为“胶水语言”。能把其他语言(主要C/C++)写的模块很轻松的结合在一起。二、python 安装 win
2023-01-31

python paramiko 问题总结

Working with paramikoSSHClient is the main class provided by the paramkio module. It provides the basic interface you ar
2023-01-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录