python 头文件怎么写

本文主要以python2为例。首先介绍Python头文件的编程风格,然后详细介绍import部分的基本用法。这两部分是Python头文件的组成模块。
编程风格
#!/usr/bin/envpython#在文件头部(第一行)添加Python解释器
#-*-coding:utf-8-*-#在文件头部(第二行)和编辑器中设置UTF-8默认编码以保存文件
#Copyright(c)***#文件头部放置版权信息,文件编码后
#docstring是Python特有的注释风格,是模块、类别或函数的第一句话,可以通过__doc__方法访问
#用英语写注释,短注释可以忽略结尾的句号(.)
#docstring为每个模块编写类或函数
推荐使用三个双引号(”)定义docstring
docsting,不建议使用三个单引号(');'')#文件头部放置模块的docsting,版权信息之后
”””Thisisaonelinedocstring”””
”””Thetitleofamultilinedocstring:Aftertitleisthecontent.Youcanwriteitaslong
asneeded“”#将import语句放在文件头部,在模块docstring之后,在模块全局变量或全局常量之前
#按照从一般到特殊的原则分组
import语句,先import标准库,再import第三方库,import程序中的最终自定义库
#在不同组的import语句之间添加空行#每个import语句只导入一个模块
importsys
importtime
fromPyQt.QtCoreimportSIGNAL,QTimer#在终端中使用中文字符在文件头部添加
#importsys
#reload(sys)
#sys.setdefaultencoding('utf-8')相关推荐:Python教程
import
1、应用系统库
这里提到的系统库一般是指python软件自带的库,而不是第三方安装的库。例如,如果import sys,怎么打印?
>>>importsys >>>printsys <module'sys'(built-in)>
这表明sys库很可能嵌入python中,根本无法删除。所有的图书馆都是这样的吗?我们可以试试os:
>>>importos >>>printos <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:
>>>importweb >>>printweb <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中的函数,所以它可以这样做:
importexer
或者是
fromexer2import*
其次,需要注意的是,这种方法不仅适用于python,也适用于动态库文件。我们知道,有时为了扩展python功能,我们需要编写c文件来生成python使用的动态库。感兴趣的学生可以参考此链接。此时,如果需要引用动态库文件,请直接使用import文件名称。
4、引用子目录文件
除同级目录引用外,子目录引用更为常用。例如,exer1.如果exer11下面有py和sub目录.py想在sub下引用exer2.py,那么它该怎么办呢?此时,必须确保SUB目录下有__init__.py文件。
fromubimportexer
或者是,
fromsub.exer2import*
5、父目录引用子目录
有时,子目录经常反向引用,以使用父目录或其他目录(类似于util目录)的某些功能。此时,sys库派上了用场。假设exer1.py和sub目录在同一级别,sub目录下有exer2.此时exer2py文件.py想引用exer1.py的功能,那么它就可以这样操作了:
importsys
sys.path.append('../')
importexer或者是,
importsys
sys.path.append('../')
fromexer1import*6、交叉引用
如果有两个文件交叉引用,此时我建议保留一个文件的引用,另一个文件的引用可以放在函数下,例如:
defprocess(): importexer exer1.add()
7、建议import文件的顺序
关于python下import文件的顺序,我个人的经验是这样安排的比较合理,
built-in 系统库
其他系统库
第三方库
子目录库
其他本地文件等
