Python文件头,python使用c语言的头文件
本文主要以python2为例。首先介绍Python头文件的编程风格,然后详细介绍导入部分的基本用法。这两部分是Python中头文件的组成部分。
编程风格
#!/usr/bin/envPython#将设置Python解释器添加到文件头(第一行)
#-*-coding:utf-8-*-#在文件头(第二行)添加并在编辑器中设置以utf-8默认编码保存文件。
#Copyright(c)***#版权信息放在文件头中,文件代码之后。
#docstring是Python特有的注释风格。它是模块、类或函数的第一条语句,可以通过__doc__方法访问。
#用英文写评论,短评论可以忽略句号(。)在最后。
#docstring是为每个模块、类或函数编写的
Docstring建议使用三个双引号(" ")来定义
Docsting,不建议使用三个单引号( )#模块的docsting放在文件头,版权信息之后。
" " " Thisisaonelinedocstring。"""
" " " thetitleofamultilinedocstring : aftertitleisscontent。Youcanwriteitaslong
根据需要。" " " #将import语句放在文件的开头,在模块docstring之后,模块全局变量或全局常量之前。
#按照从一般到特殊的原则分组
导入语句,先导入标准库,再导入第三方库,最后导入程序中的自定义库。
#在不同组的导入语句之间添加空行#每个导入语句只导入一个模块。
importsys
进口时间
来自pyqt。qtcoreimportsignal,qttimer #在终端中给文件头添加汉字。
#importsys
#重新加载(系统)
#sys.setdefaultencoding(utf-8 )相关建议:《Python教程》
import
1.系统库的应用
这里的系统库一般是指python软件自带的库,而不是从第三方安装的库。比如导入sys,会怎么打印?
importsys
按格式显示系统
模块“sys”(内置I
n)>这说明sys库很有可能就是嵌入在python里面的,根本没有办法删除。那是不是所有的库都是这样呢,我们可以找os试一试:
>>>importos很明显,这里的os库是由pyc提供的,所以从优先级来说,似乎sys还要更重要一些。>>>printos
<module'os'from'/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/os.pyc'>
2、第三方库
所谓第三方库,就是通过python setup.py install安装、pip安装或者通过apt-get install安装的库。这类库很多,我自己常用的就有webpy、twisted、cv2、sklearn、wxpython,这些lib无一例外,都是以pyc的形式存在的。比如说,我们看一下webpy:
>>>importweb3、本地目录文件引用>>>printweb
<module'web'from'/usr/local/lib/python2.7/site-packages/web.py-0.40.dev0-py2.7.egg/web/__init__.pyc'>
如果是本地文件引用,其实方法也很简单,直接import一下就可以了。如果import成功,python就会生成对应文件的pyc文件。比如说,exer1.py想引用一下exer2.py中的函数,那么它可以这么做:
importexer2或者是
fromexer2import*其次,要注意的是,这种方法不光适用于python,也适用于动态库文件。我们知道,有的时候为了扩展python功能,需要写c文件生成动态库供python使用。有兴趣的同学可以参考这个链接。这个时候,如果需要引用动态库文件,直接import文件名就可以了。
4、引用子目录文件
除了同级目录引用之外,另外用的比较多的就是子目录引用。比如说,exer1.py和sub目录在一个文件夹下面,如果exer1.py想引用sub下面的exer2.py,那么它应该怎么做呢?这个时候,一定要保证sub目录下有__init__.py文件。
fromsubimportexer2或者是,
fromsub.exer2import*5、子目录引用父目录
有的时候,子目录为了使用父目录或者其他目录(类似util目录)的一些功能,常常要反向引用。这个时候,sys库就派上了用场。假设exer1.py和sub目录在同一级,sub目录下有一个exer2.py文件,这个时候exer2.py想引用exer1.py的功能,那么它可以这么操作:
importsys或者是,sys.path.append('../')
importexer1
importsys6、交叉引用sys.path.append('../')
fromexer1import*
如果有两个文件交叉引用,这个时候我建议可以保留一个文件的引用,另外一个文件的引用可以放到函数下面来做,比如说像这样:
defprocess():7、import文件的顺序建议importexer1
exer1.add()
关于python下import文件的顺序,我个人的经验是这样安排比较合理一些,
built-in 系统库
其他系统库
第三方库
子目录库
本地其他文件等等
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。