python编程(import头文件)

栏目: Python · 发布时间: 6年前

内容简介:python编程(import头文件)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

关于 python 下面头文件引用,很多时候自己都会用错。所以,今天自己做了一些实验,特地记录一下,这样以后出问题的时候过来看一下。目前自己的工作平台还是以python2为主,所以这里使用的代码都是以python2作为基础练习的。

1、系统库的应用

这里说的系统库,一般是指python软件自带的库,不是从第三方安装的库。比如说,如果import sys了,会怎么打印,

feixiaoxingdeMacBook-Pro-4:process feixiaoxing$ python
Python 2.7.13 (default, Dec 18 2016, 07:03:34) 
[GCC 4.2.1 Compatible Apple LLVM 7.0.2 (clang-700.1.81)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print sys
<module 'sys' (built-in)>

这说明sys库很有可能就是嵌入在python里面的,根本没有办法删除。那是不是所有的库都是这样呢,我们可以找os试一试,

feixiaoxingdeMacBook-Pro-4:process feixiaoxing$ python 
Python 2.7.13 (default, Dec 18 2016, 07:03:34) 
[GCC 4.2.1 Compatible Apple LLVM 7.0.2 (clang-700.1.81)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> print os
<module 'os' from '/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/os.pyc'>

很明显,这里的os库是由pyc提供的,所以从优先级来说,似乎sys还要更重要一些。

2、第三方库

所谓第三方库,就是通过python setup.py install安装、pip安装或者通过apt-get install安装的库。这类库很多,我自己常用的就有webpy、twisted、cv2、sklearn、wxpython,这些lib无一例外,都是以pyc的形式存在的。比如说,我们看一下webpy,

feixiaoxingdeMacBook-Pro-4:Desktop feixiaoxing$ python
Python 2.7.13 (default, Dec 18 2016, 07:03:34) 
[GCC 4.2.1 Compatible Apple LLVM 7.0.2 (clang-700.1.81)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import web
>>> print web
<module 'web' from '/usr/local/lib/python2.7/site-packages/web.py-0.40.dev0-py2.7.egg/web/__init__.pyc'>

3、本地目录文件引用

如果是本地文件引用,其实方法也很简单,直接import一下就可以了。如果import成功,python就会生成对应文件的pyc文件。比如说,exer1.py想引用一下exer2.py中的函数,那么它可以这么做,

import exer2

或者是

from exer2 import *

其次,要注意的是,这种方法不光适用于python,也适用于动态库文件。我们知道,有的时候为了扩展python功能,需要写c文件生成动态库供python使用。有兴趣的同学可以参考这个 链接 。这个时候,如果需要引用动态库文件,直接import文件名就可以了。

4、引用子目录文件

除了同级目录引用之外,另外用的比较多的就是子目录引用。比如说,exer1.py和sub目录在一个文件夹下面,如果exer1.py想引用sub下面的exer2.py,那么它应该怎么做呢?这个时候,一定要保证sub目录下有__init__.py文件。过程也不复杂,

from sub import exer2

或者是,

from sub.exer2 import *

5、子目录引用父目录

有的时候,子目录为了使用父目录或者其他目录(类似util目录)的一些功能,常常要反向引用。这个时候,sys库就派上了用场。假设exer1.py和sub目录在同一级,sub目录下有一个exer2.py文件,这个时候exer2.py想引用exer1.py的功能,那么它可以这么操作,

import sys
sys.path.append('../')
import exer1

或者是,

import sys
sys.path.append('../')
from exer1 import *

6、import文件的顺序建议

关于python下import文件的顺序,我个人的经验是这样安排比较合理一些,

  • built-in 系统库
  • 其他系统库
  • 第三方库
  • 子目录库
  • 本地其他文件等等

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Bulletproof Ajax中文版

Bulletproof Ajax中文版

Jeremy Keith / 刘申、宋薇 / 人民邮电出版社 / 2007-11 / 39.00元

本书介绍了如何构建无懈可击的Ajax Web应用程序,重点讲述如何在已有Web站点使用Ajax增强网站用户体验,从而尽可能地保证网站拥有最大限度的可移植性和亲和力,这正是目前大多数网站面临的需求。书中主要介绍了JavaScript、DOM、XMLHttpRequest、数据格式等,同时还提出了一种Hijax方法,即可以让Web应用程序平稳退化的方法。 本书适合各层次Web开发和设计人员阅读......一起来看看 《Bulletproof Ajax中文版》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试