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、交叉引用
如果有两个文件交叉引用,这个时候我建议可以保留一个文件的引用,另外一个文件的引用可以放到函数下面来做,比如说像这样,
def process():import exer1exer1.add()
7、import文件的顺序建议
关于python下import文件的顺序,我个人的经验是这样安排比较合理一些,
- built-in 系统库
- 其他系统库
- 第三方库
- 子目录库
- 本地其他文件等等
python编程(import头文件)相关推荐
- 在jupter中利用Python编程查看pkl文件内容的步骤
pkl文件是python保存文件的一种格式. 下面以 test.pkl 文件为例,展示在jupter中利用Python编程查看pkl文件内容的步骤. 一.查看Python代码所在的文件夹 import ...
- python关于文件的编程题_《Python编程》源代码文件
压缩包 : bbc59749e0028c3f1ab3a1c9a762a6d.rar 列表 <Python编程>源代码文件/.gitignore <Python编程>源代码文件/ ...
- C++编程常用头文件及其包含函数汇总
C++编程常用头文件及其包含函数汇总 1.#include <iostream> #include<iostream>是标准的C++头文件,任何符合标准的C++开发环境都有这个 ...
- Linux socket 网络编程 常用头文件
一 三种类型的套接字: 1.流式套接字(SOCKET_STREAM) 提供面向连接的可靠的数据传输服务.数据被看作是字节流,无长度限制.例如FTP协议就采用这种. 2.数据报式套接字(SOCKET_D ...
- c51语言的标准库函的头文件,C51编程中头文件的使用
头文件在C51的编程中是不可缺少的部分.本文将对keil C中常用头文件予以说明,并就如何编写头文件进行初步介绍. 一.C51常见本征函数库 一些常见的头文件都是keil C自带的,在安装目录下的C5 ...
- 51单片机c语言编程的头文件,51单片机编程的头文件reg51.h详解
我们在用c语言编程时往往第一行就是头文件,51单片机为reg51.h或reg52.h,51单片机相对来说比较简单,头文件里面内容不多,像飞思卡尔.ARM系列的单片机头文件往往内容就非常多,尽管如此,对 ...
- C语言编程规范 — 头文件、函数
0 编码规范说明 0.1 前言 为了提高产品或项目代码质量,软件开发人员编写出简洁.可靠.可维护.可测试.高效.可移植的代码,树立良好的编程规范是非常有必要的,良好的编程规范能提高编程效率,规避很多编 ...
- linux sockaddr_in头文件,linux网络编程常用头文件
sys/types.h:数据类型定义 sys/socket.h:提供socket函数及数据结构 netinet/in.h:定义数据结构sockaddr_in arpa/inet.h:提供IP地址转换函 ...
- linux下的socket在哪个头文件,linux下socket编程常用头文件
sys/types.h:数据类型定义 sys/socket.h:提供socket函数及数据结构 netinet/in.h:定义数据结构sockaddr_in arpa/inet.h:提供IP地址转换函 ...
最新文章
- js 获取当前时间 随记
- android:使用Messenger进行进程间通信(一)
- 转:android实时语音问题分析
- 【异常】 ‘ascii‘ codec can‘t decode byte 0xe8 in position 2: ordinal not in range(128)
- python furl模块 网址修改 参数解析
- C++---拷贝构造函数和赋值构造函数
- server vscode中的live_VSCode 建议你启用 gopls,它到底是个什么东东?
- hdu 1007(最近点对)
- mysql查询出过去一个月_Mysql查询今天、昨天、7天、近30天、本月、上一月 数据...
- LeetCode 988. 从叶结点开始的最小字符串(DFS)
- c语言如何控制电脑串口,C语言直接驱动硬件实现PC机的串口操作
- java getcharat_Java UTF8.getCharArray方法代码示例
- 局域网即时通讯软件java_如何选择企业即时通讯软件?
- 排序——选择排序、快速排序
- 基于Maven的S2SH(Struts2+Spring+Hibernate)框架搭建
- 基于深度学习的银行卡号识别 卡号识别和分割
- 体验一命通关 - Java技能树测评
- mysql 将年月日转换成年_SQL数据库中怎么将时间格式转换到年和月?
- 通过S2B2C供应链电商平台网站解决方案,实现大宗商品万亿产业数字化转型
- 看Vue文档总结之路(四)
热门文章
- Spring Cloud中如何保证各个微服务之间调用的安全性
- HaLow技术提升车载Wi-Fi质量 促进车联网发展
- 探究.NET的bin引用程序集运行机制看.NET程序集部署原理
- javascript+div实现鼠标划过,切换层效果
- tornado基本使用一
- clipboard.js在弹出框中无法复制的问题
- Could not find leader nimbus
- C语言文件路径中的”/“和“\“
- 基本面(内在)-》技术面(外在)-》消息面(驱动)
- datagridview的数据存取