五、python模块以及包

模块:编写的别的程序中重用一些代码。

1 模块的写法:

  1. 创建一个.py文件,该文件中包含函数与变量。
  2. 使用撰写python解释器本身的本地语言来编写模块。比如使用C代码编写python模块,并且在编译后,可以通过标准的python解释器在你的python代码中使用它们。

2 使用标准库模块例子sys 模块包含了与 Python 解释器及其环境相关的功能,也就是所谓的系统功能( system),代码如下:

import sys
print('The command line arguments are:')
for i in sys.argv:print(i)
print('\n\nThe PYTHONPATH is', sys.path, '\n')
#程序输出
The command line arguments are:
F:/python/demo/test.pyThe PYTHONPATH is ['F:\\python\\demo', 'F:\\python\\demo', 'C:\\Windows\\system32\\python34.zip', 'I:\\Python34\\DLLs', 'I:\\Python34\\lib', 'I:\\Python34', 'I:\\Python34\\lib\\site-packages'] 

分析:在这一案例中,由于其是一个内置模块,因此 Python 知道应该在哪里找到它。如果它不是一个已编译好的模块,即用 Python 编写的模块,那么 Python 解释器将从它的sys.path 变量所提供的目录中进行搜索。如果找到了对应模块,则该模块中的语句将开始运行,并能够为你所使用。

你可以直接导入位于当前目录的模块。否则,你必须将你的模块放置在sys.path 内所列出的目录中。另外要注意的是当前目录指的是程序启动的目录。你可以通过运行 import os;print(os.getcwd()) 来查看你的程序目前所处在的目录。

3 .pyc文件?

  按字节码编译的文件。.pyc 文件在你下一次从其它不同的程序导入模块时非常有用——它将更加快速,因为导入模块时所需要的一部分处理工作已经完成了。同时,这些按字节码编译的文件是独立于运行平台的。

注意:这些 .pyc 文件通常会创建在与对应的 .py 文件所处的目录中。如果 Python 没有相应的权限对这一目录进行写入文件的操作,那么 .pyc 文件将不会被创建。

4 from..import语句。

  1. 常规用法(包含从同级.py文件中引入函数或者变量):
from math import sqrt
print("Square root of 16 is", sqrt(16))
#结果输出
Square root of 16 is 4.0

 

  2 从自定义包中引入包中.py的函数:例如  from mypacket.hello import *

from util import MongoUtil
# from util.MongoUtil import *#如果是第一种方法,则使用MongoUtil内部函数时候,需要MongoUtil.function()
#如果用第二种方法,则不用加前缀,可以直接使用。

 

5 模块的__name__属性

确定模块是独立运行的还是被导入进来运行 ,例如:

#在test.py文件中写入如下代码:
if __name__ == '__main__':print('This program is being run by itself')
else:print('I am being imported from another module')
#运行以后输出This program is being run by itself#在同一目录下新建test2.py文件,输入
import test
#运行以后输出I am being imported from another module'

6 编写自己的模块

#在mymodule.py中写入如下代码
def say_hi():
print('Hi, this is mymodule speaking.')
__version__ = '0.1'#另一个模块mymodule_demo.py中写入如下测试代码::
import mymodulemymodule.say_hi()
print('Version', mymodule.__version__)#另外一种导入方式
from mymodule import say_hi,__version__say_hi()
print("version",__version__)

注意:自己的模块应该放置于与其它我们即将导入这一模块的程序相同的目录下,或者放置在sys.path所列出的其中一个目录下。
7 dir函数

内置的 dir() 函数能够返回由对象所定义的名称列表 ,例如;

import sys
print(dir(sys))
#结果
['__displayhook__', '__doc__', '__excepthook__', '__interactivehook__', '__loader__', '__name__', '__package__', '__spec__', '__stderr__', '__stdin__', '__stdout__', '_clear_type_cache', '_current_frames', '_debugmallocstats', '_getframe', '_home', '_mercurial', '_xoptions', 'api_version', 'argv', 'base_exec_prefix', 'base_prefix', 'builtin_module_names', 'byteorder', 'call_tracing', 'callstats', 'copyright', 'displayhook', 'dllhandle', 'dont_write_bytecode', 'exc_info', 'excepthook', 'exec_prefix', 'executable', 'exit', 'flags', 'float_info', 'float_repr_style', 'getallocatedblocks', 'getcheckinterval', 'getdefaultencoding', 'getfilesystemencoding', 'getprofile', 'getrecursionlimit', 'getrefcount', 'getsizeof', 'getswitchinterval', 'gettrace', 'getwindowsversion', 'hash_info', 'hexversion', 'implementation', 'int_info', 'intern', 'maxsize', 'maxunicode', 'meta_path', 'modules', 'path', 'path_hooks', 'path_importer_cache', 'platform', 'prefix', 'setcheckinterval', 'setprofile', 'setrecursionlimit', 'setswitchinterval', 'settrace', 'stderr', 'stdin', 'stdout', 'thread_info', 'version', 'version_info', 'warnoptions', 'winver']

8 包
变量通常位于函数内部,函数与全局变量通常位于模块内部。如果你希望组织起这些模块的话,应该怎么办?这便是包

包是指一个包含模块与一个特殊的 __init__.py 文件的文件夹,后者向 Python 表明这一文
件夹是特别的,因为其包含了 Python 模块

 

注:参考《byte-of-python-chinese-edition》

 

转载于:https://www.cnblogs.com/buptzlb/p/7538382.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/253383.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jeecg选择按钮带入其他单据值

前端的标签 <input class"inputxt" id"fshimian" name"fshimian" ignore"ignore" datatype"*" value"${shizhePage.fshimian}" /> <t:choose hiddenName"fshimian" hiddenid"fname"…

alsa编程

alsa 编程 分类&#xff1a; linux 2012-08-18 20:13 124人阅读 评论(0) 收藏 举报 编程parametersbufferloopsaccessplayback转载自&#xff1a;http://blog.csdn.net/spygg/article/details/7824750 ALSA(Advanced Linux Sound Architecture)是由内核驱动,标准的API库和一系…

Fiddler4入门——手机抓包

一、下载工具包 百度搜索”fiddler 下载“ &#xff0c;安装最新版本 下载的软件安装包为“fiddler_4.6.20171.26113_setup.exe”格式&#xff0c;双击安装。安装成功&#xff0c;在“开始”-“所有程序”&#xff0c;就会看见这样的图标&#xff0c;若是常用的话&#xff0c;也…

Node.js Performance

https://blog.risingstack.com/node-js-performance-monitoring-with-prometheus/转载于:https://www.cnblogs.com/skating/p/7544838.html

(五)DOM4j进行XML文件的解析及生成

DOM4j本身还是需要使用SAX建立解析器&#xff0c;然后通过文档依次找到根节点&#xff0c;再通过根节点查找每一个节点的内容. 1.写操作 import java.io.File;import java.io.FileOutputStream;import java.util.Iterator; import org.dom4j.Document;import org.dom4j.Documen…

Linux系统基础.作业

要求以root用户登录系统&#xff0c;右击桌面打开终端&#xff0c;查看当前登陆Linux系统所使用的用户名 查看哪些用户在系统上工作 修改当前时间为2018年8月26号11:28 查看2015年10月份日历 使用两种方法查看ls命令的使用说明 清除屏幕 ctrlL使用“useradd tom”命令新建tom用…

Alsa中PCM参数设置

分类&#xff1a; LINUX 1) PCM设备的句柄.2) 指定同时可供回放或截获的PCM流的方向3) 提供一些关于我们想要使用的设置选项的信息,比如缓冲区大小,采样率,PCM数据格式等4) 检查硬件是否支持设置选项.4.1) 初始化PCM变量4.2) 分配hwparams结构4.3) 打开PCM设备4.4) 以声卡的全部…

java5

java基础&#xff08;五&#xff09;命名规则&#xff1a; 名字中只能包含->字母、_、数字、$&#xff0c;且开头不能为数字包名必须都小写文件名首字母和后面英文文件单词首字母都要大写变量和方法名 首字母小写&#xff0c;后面英文单词首字母大写java中的方法&#xff1a…

最新历史版本 :H.265

原来对264有深入的研究&#xff0c;现在想详细了解下265啦&#xff0c;愿265尽快广泛的使用起来&#xff0c;人们可以享受无处不在的视觉盛宴。 H.265是ITU-T VCEG 继H.264之后所制定的新的视频编码标准。H.265标准围绕着现有的视频编码标准H.264&#xff0c;保留原来的某些技术…

凯撒密码、GDP格式化输出、99乘法表

1.恺撒密码的编码 sinput(请输入明文:) print(密文为:) for i in s:print(chr(ord(i)3),end)运行结果为&#xff1a; 2.国家名称 GDP总量&#xff08;人民币亿元&#xff09; 中国 &#xffe5;765873.4375 澳大利亚 &#xffe5; 78312.4375 &#xff08;国家名称左对齐&am…

【BZOJ3453】XLkxc [拉格朗日插值法]

XLkxc Time Limit: 20 Sec Memory Limit: 128 MB[Submit][Status][Discuss]Description 给定 k,a,n,d,p  f(i)1^k2^k3^k......i^k  g(x)f(1)f(2)f(3)....f(x)  求(g(a)g(ad)g(a2d)......g(and))mod p Input 第一行数据组数&#xff0c;(保证小于6)  以下每行四个整数 …

hive安装

雷顿学院大数据雷顿学院大数据&#xff1a;http://www.leidun.site/hive安装下载hivehttp://mirror.bit.edu.cn/apache/hive/下载后解压配置命令将hive加入命令vim ~/.bash_profile添加如下命令export HIVE_HOME/usr/local/Cellar/hive/1.2.1/libexec保存文件mysql数据库驱动cu…

JavaFX常用汇总

1. 描述备注 1.1 参考教程 博客 易百教程 JavaFX中国 1.5 安装 a). 在线安装e(fx)clipse插件 b). 下载安装SceneBuilder c). eclipse重启以后,windows->preference->javaFx->SceneBuilder executable选择 上一步中安装后的exe文件 2. 快速入门示例-MVC a). *.fxml文件…

Alsa驱动分析(转)

1. Abstract 2. Introduction 3. 音频驱动框架介绍 3.1 音频设备的注册 3.2 音频驱动的注册 3.2.1 Probe函数的调用 3.2.2 Soc_probe函数 4. 通常的使用流程的分析 4.1.1 open过程介绍 4.1.2 snd_pcm_hw_params流程分析 4.1.3 …

bzoj2744[HEOI2012]朋友圈

题目链接&#xff1a;bzoj2744 题目大意&#xff1a; 两个国家看成是AB两国&#xff0c;现在是两个国家的描述&#xff1a; 1.A国&#xff1a;每个人都有一个友善值&#xff0c;当两个A国人的友善值a、b&#xff0c;如果a xor b mod 21&#xff0c;那么这两个人都是朋友&#x…

Linux之父为过去的言行道歉,宣布离开社区反思

9月17日&#xff0c;Linux 4.19-rc4发布&#xff0c;成为Linux 4.19最新的开发测试内核。这是现阶段一个相当常规的内核更新&#xff0c;但令人震惊的是&#xff0c;Linux之父Linus Torvalds宣布将暂时离开内核维护社区&#xff0c;Greg Kroah-Hartman将接管接下来的Linux 4.19…

[BZOJ] 1620: [Usaco2008 Nov]Time Management 时间管理

1620: [Usaco2008 Nov]Time Management 时间管理 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 850 Solved: 539[Submit][Status][Discuss]Description Ever the maturing businessman, Farmer John realizes that he must manage his time effectively. He has N jobs con…

面试-接口和纯虚类的区别

相关资料&#xff1a;1.https://zhidao.baidu.com/question/91157279.html 纯虚类:1.一个子类只能继承一个抽象类&#xff08;虚类&#xff09;。2.一个抽象类可以有构造方法。 3.一个抽象类中的方法不一定是抽象方法&#xff0c;即其中的方法可以有实现&#xff08;有方法体&a…

TCP研究

tcp协议本身是可靠的,并不等于应用程序用tcp发送数据就一定是可靠的.不管是否阻塞,send发送的大小,并不代表对端recv到多少的数据 在阻塞模式下, send函数的过程是将应用程序请求发送的数据拷贝到发送缓存中发送并得到确认后再返回.但由于发送缓存的存在,表现为:如果发送缓存大…

DDR工作原理

DDR SDRAM全称为Double Data Rate SDRAM&#xff0c;中文名为“双倍数据流SDRAM”。DDR SDRAM在原有的SDRAM的基础上改进而来。也正因为如此&#xff0c;DDR能够凭借着转产成本优势来打败昔日的对手RDRAM&#xff0c;成为当今的主流。本文只着重讲讲DDR的原理和DDR SDRAM相对于…