资料来源

(1) Python基础教程第三版

1.模块的工作原理

1.1 简单的模块及使用

1.1.1 模块的本质

(1) 模块就是程序,任何python程序都可以作为模块导入;

1.1.2 简单的模块示例

#hello.py
print("Hello, world!")

1.1.3 模块的使用

import sys
sys.path.append(‘C:/python’) #C:/python是模块hello.py的文件存储位置

注1:上述代码告诉解释器,除了通常查找的位置外,还应到C:\python中去查找;这样做后,就可以通过import hello导入这个模块;

注2:当导入模块时,其所在目录除源代码文件外,还新建一个名为__pycache__的子目录;这个目录包含处理后的文件,python能够更高效地处理它们;以后再倒入这个模块时,如果.py文件没有发生变化,python将导入处理后的文件,否则将重新生成处理后的文件;

注3:模块并不是用来执行操作的,而是用来定义变量、函数、类等;

1.2 模块是用来下定义的

1.2.1 创建模块的原因

(1) 它们可以像类一样,有自己的作用域;

(2) 使用模块实现了代码重用,将代码放在模块中,可以在多个程序中使用它们;

1.2.2 在模块中定义函数

#hello2.py
def hello():
print("Hello, world!")
import hello2
hello2.hello()

1.2.3 在模块中添加测试代码

#带测试代码的模块
#hello3.py
def hello():
print("Hello, world!") #测试代码:
hello()

注1:但是这样操作存在问题: 如果将该模块作为普通程序运行,发现运行正常; 但如果在另一个程序中将其作为模块导入,也将执行测试代码; 为了避免这种行为,需要检查模块是作为程序运行还是被导入另一个程序;这种情况下,需要使用__name__;

注2: 在主程序中,__name__的值是‘__main__’;而在使用模块的程序中,被导入模块的__name__被设置为模块的名称;

#更加完美的带测试代码的模块
#hello4.py
def hello():
print("Hello, world!") def test():
hello() if __name__=='__main__': test()

1.2.4 让模块可用

1.2.4.1 将模块放在正确的位置

(1) 找出python解释器到哪里查找模块,再将模块文件放在该处即可;

import sys
import pprint
pprint.pprint(sys.path) #可以将模块放到pprint打印出的任何一个路径下

1.2.4.2 告诉解释器去哪里寻找

(1) 1.2.4.1将模块放在正确的位置有其局限性,比如python解释器的目录中充斥着编写的模块,或者没有写权限,无法将文件保存在python解释器的目录中;

(2) 如果将模块放到其他地方,就需要告诉解释器去哪里寻找;一种方法是修改sys.path,如1.1.3所示; 另一种比较标准的方法是将模块所在目录包含在环境变量PYTHONPATH中;

1.2.5 包(package)

(1) 为组织模块,可将其编组为包; 包是另一种模块,可以包含其他模块;

(2) 包是一个目录,该目录中必须包含文件__init__.py;

(3) 如果像导入普通模块那样导入包,文件__init__.py的内容就是包的内容;

(4) 要将模块加入包中,只需把模块文件放在包目录中即可;

(5) 可以在包中嵌套其他包;

文件目录
~/python/
~/python/drawing/ 包目录
~/python/drawing/__init__.py 包代码
~/python/drawing/colors.py 模块colors
~/python/drawing/shapes.py 模块shapes
import drawing              #导入包
import drawing.colors #导入drawing包中的colors模块
from drawing import shapes #导入模块shapes

注1: import drawing只能使用__init__.py的内容;

注2: import drawing.colors可以使用模块colors,但是只能通过全限定名drawing.colors使用;

注3:from drawing import shapes可以使用简化名即shapes来使用模块shapes;

2.获悉模块的功能

2.1 使用python解释器研究模块

注1:需要采用import语句导入模块;

2.1.1 使用dir

(1) 函数dir会列出对象的所有属性; 对于模块,它列出所有的函数、类、变量等,如dir(模块名);

(2) 函数dir(模块名)的结果是一个较长的名称列表,其中下划线_开头的名称对应的变量并非供外部使用;

2.1.2 变量_all_

(1) 使用方法:模块名._all_;

(2) dir(模块名)返回的结果中就包含_all_; _all_变量包含一个列表;

2.2 使用源代码

注1:需要采用import语句导入模块;

(1) print(模块名.__file__)可以找到模块所在文件的路径;

3.常用模块

3.1 sys

(1) 作用:可以访问与python解释器相关的函数,比如argv,path等变量或函数;

3.2 os

(1) 作用:为访问多个操作系统服务,如通过system(command)在子shell中执行操作系统命令;

【python基础教程】-10.开箱即用(模块的工作原理,获悉模块的功能以及常用模块)的更多相关文章

  1. (Python基础教程之十二)Python读写CSV文件

    Python基础教程 在SublimeEditor中配置Python环境 Python代码中添加注释 Python中的变量的使用 Python中的数据类型 Python中的关键字 Python字符串操 ...

  2. Python基础教程(第3版)PDF高清完整版免费下载|百度云盘

    百度云盘:Python基础教程(第3版)PDF高清完整版免费下载 提取码:gkiy 内容简介 本书包括Python程序设计的方方面面:首先从Python的安装开始,随后介绍了Python的基础知识和基 ...

  3. Python基础教程 (第2+3 版)打包pdf|内附网盘链接提取码

                <Python基础教程 第3版>包括Python程序设计的方方面面:首先,从Python的安装开始,随后介绍了Python的基础知识和基本概念,包括列表.元组.字符 ...

  4. python基础教程(一)

    之所以选择py交易有以下几点:1.python是胶水语言(跨平台),2.python无所不能(除了底层),3.python编写方便(notepad++等文本编辑器就能搞事情),4.渗透方面很多脚本都是 ...

  5. Python基础教程学习笔记:第一章 基础知识

    Python基础教程 第二版 学习笔记 1.python的每一个语句的后面可以添加分号也可以不添加分号:在一行有多条语句的时候,必须使用分号加以区分 2.查看Python版本号,在Dos窗口中输入“p ...

  6. Python基础教程总结(一)

    引言: 一直都听说Python很强大,以前只是浏览了一些博客,发现有点像数学建模时使用的Matlab,就没有深入去了解了.如今Python使用的地方越来越多,最近又在学习机器学习方面的知识,因此想系统 ...

  7. Python 基础教程之包和类的用法

    Python 基础教程之包和类的用法 建立一个文件夹filePackage 在filePackage 文件夹内创建 __init__.py 有了 __init__.py ,filePackage才算是 ...

  8. 学习参考《Python基础教程(第3版)》中文PDF+英文PDF+源代码

    python基础教程ed3: 基础知识 列表和元组 字符串 字典 流程控制 抽象(参数 作用域 递归) 异常 魔术方法/特性/迭代器 模块/标准库 文件 GUI DB 网络编程 测试 扩展python ...

  9. Python基础教程(第2版 修订版) pdf

    Python基础教程(第2版 修订版) 目录 D11章快速改造:基础知识11.1安装Python11.1.1Windows11.1.2Linux和UNIX31.1.3苹果机(Macintosh)41. ...

  10. (Python基础教程之十三)Python中使用httplib2 – HTTP GET和POST示例

    Python基础教程 在SublimeEditor中配置Python环境 Python代码中添加注释 Python中的变量的使用 Python中的数据类型 Python中的关键字 Python字符串操 ...

随机推荐

  1. knock:端口敲门服务

    knock:端口敲门服务 端口敲门服务,即:knockd服务.该服务通过动态的添加iptables规则来隐藏系统开启的服务,使用自定义的一系列序列号来"敲门",使系统开启需要访问的 ...

  2. Binary &Op是什么

    前言 在并行开发时我们经常会用到Pstream::gather()函数或是全局函数reduce()或者其他,需要输入参数Binary &Op,本篇主要讨论Binary &Op是什么 t ...

  3. 一步步入门Jenkins+Net Core3.1+Gitlab,实现 CICD

    架构说明: 由浅入深,我们暂时不考虑分布式,安装Jenkins到用户服务器进行CICD 需要两台服务器 Gitlab:192.168.232.128:12080 源代码仓库,可以参考<安装git ...

  4. PULPINO仿真建立

    PULPINO仿真建立 PULPINO主要特点: systemverilog实现 有常规外设,GPIO.SPI.I2C.UART等 有调试接口 总线有AXI,外设总线为APB,扩展性好 脚本为cmak ...

  5. yak远程服务端搭

    前言 yak有本地模式和远端模式,本地模式是yakit客户端和核心引擎服务都在一台机器上,比如你自己的电脑 远端模式是将yak核心引擎部署到远端服务器,比如阿里云.腾讯云等 yakit只作为客户端,所 ...

  6. Python elasticsearch 使用心得

    一.配置 python == 3.6/3.8 # 更高版本的elasticsearch会出现doc_type被统一成_doc导致旧版语句报错的情况 pip install elasticsearch= ...

  7. linux移植问题记录

    问题一 ~/linux/linux-5.2.8$ make s3c2410_defconfig  HOSTCC  scripts/basic/fixdep/bin/sh: 1: scripts/bas ...

  8. 四大组件之内容提容者ContentProvider

    参考:Android开发基础之内容提容者ContentProvider Android四大组件 内容提供者是四大组件之一,还记得Android的四大组件吗? 前面我们学习了三大组件了,对吧! 其中有: ...

  9. Java——File类

    File类 File:代表一个文件或者文件夹 方法 createNewFile() exists() getAbsolutePath() getName() getParent() isDirecto ...

  10. apk文件查看指纹证书方法

    1. 先将apk文件重命名为zip文件 2. 解压zip到指定一个文件夹下,其中的META-INF/CERT.RSA文件即MD5签名文件 3. cmd下打开窗口,输入如下命令: keytool -pr ...