函数代码块以def关键词开头,后接函数名称和小括号(),小括号后的冒号:表示函数体的开始;
任何传入参数和自变量必须放在小括号中间;
函数的第一行语句可以使用注释语句编写函数说明;
函数体遵循缩进语法;
函数以return语句结束,用于返回结果给调用方。
本文主要以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’)
import
1、系统库的应用
这里说的系统库,一般是指python软件自带的库,不是从第三方安装的库。比如说,如果importsys了,会怎么打印。>>>importsys
>>>printsys
这说明sys库很有可能就是嵌入在python里面的,根本没有办法删除。那是不是所有的库都是这样呢,大家可以找os试一试:>>>importos
>>>printos
很明显,这里的os库是由pyc提供的,所以从优先级来说,似乎sys还要更重要一些。
2、第三方库
所谓第三方库,就是通过pythonsetup.pyinstall安装、pip安装或者通过apt-getinstall安装的库。这类库很多,偶自己常用的就有webpy、twisted、cv2、sklearn、wxpython,这些lib无一例外,都是以pyc的形式存在的。比如说,大家看一下webpy:>>>importweb
>>>printweb
3、本地目录文件引用
如果是本地文件引用,其实方法也很简单,直接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
或者是,importsys
sys.path.append(‘../’)
fromexer1import*
6、交叉引用
如果有两个文件交叉引用,这个时候偶建议可以保留一个文件的引用,另外一个文件的引用可以放到函数下面来做,比如说像这样:defprocess():
importexer1
exer1.add()
7、import文件的顺序建议
关于python下import文件的顺序,偶个人的经验是这样安排比较好。