热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在python中空语句的作用是让程序层次更加清晰_Python之模块

模块什么是模块模块是一个包含有一系列数据,函数,类等组成的程序组模块是一个文件,模块文件名通常以.py结尾模块的作用让一些相关的数据&#x

模块

什么是模块

模块是一个包含有一系列数据,函数,类等组成的程序组

模块是一个文件,模块文件名通常以 .py 结尾

模块的作用

让一些相关的数据,函数,类等有逻辑的组织在一起,使逻辑结构更加清晰

模块中的数据,函数和类等可提供给其它模块或程序使用

模块的分类

内置模块(builtins),在解析器的内部可以直接使用

标准库模块,安装Python时已安装且可直接使用

第三方模块(通常为开源),需要自己安装

用户自己完的模块(可以作为其它人的第三方模块)

模块的导入

import 语句

import 模块名1[as 模块新名1][,模块名2 [as 模块新名2]], ...

# 作用:将某模块整体导入到当前模块

# 用法:模块.属性名

# 导入数学模块

import math

# 导入系统模块 sys 和 os 模块

import sys, os

dir(obj) 函数返回模块所有属性的字符串列表

help(obj) 可以查看模块相关的文档字符串

from import 语句

from 模块名 import 模块属性名1 [as 属性新名1][,模块属性名2[as 属性新名2], ...]

# 作用:将某模块内的一个或多个属性导入到当前模块的作用域

from math import pi

from math import pow, sqrt

from math import factorial as fac

from import * 语句

from 模块名 import *

# 作用:将某模块的所有属性都导入到当前模块

from math import *

dir 函数

dir([对象]) 返回一个字符串列表

如果没有参数调用,则返回当前作用域内的所有变量的列表

如果给定一个对象作为参数,则返回这个对象的所有变量的列表

对于一个模块,返回这个模块的全部属性

对于一个类对象,返回类对象的所有变量,亲递归基类对象的所有变量

对于其它对象,返回所有的变量,类变量,基类变量

数学模块

变量

math.e 自然对数的底 e

math.pi 圆周率 pi

函数

math.ceil(x) 对x向上取整,比如x=1.2,返回2

math.floor(x) 对x向下取整,比如x=1.2,返回1

math.sqrt(x) 返回x的平方根

math.factorial(x) 求x的阶乘

math.log(x[, base]) 返回以base为底x的对数, 默认以自然对数e为底

math.log10(x) 求以10为底``x的对数

math.pow(x, y) 返回 x**y (x的y次方)

math.fabs(x) 返回浮点数x的绝对值

math.degree(x) 将弧度x转换为角度

math.radians(x) 将角度x转换为弧度

math.sin(x) 返回x的正弦(x为弧度)

math.cos(x) 返回x的余弦(x为弧度)

math.tan(x) 返回x的正切(x为弧度)

math.asin(x) 返回x的反正弦(返回值为为弧度)

math.acos(x) 返回x的反余弦(返回值为为弧度)

math.atan(x) 返回x的反正切(返回值为为弧度)

时间模块

时间简介

公元纪年是从公元 0000年1月1日0时开始的

计算机元年是从1970年1月1日0时开始的,此时时间为0,之后每过一秒时间+1

UTC 时间 (Coordinated Universal Time) 是从Greenwich时间开始计算的.

UTC 时间不会因时区问题而产生错误

DST 阳光节约时间(Daylight Saving Time),又称夏令时, 是一个经过日照时间修正后的时间

时间元组

时间元组是一个9个整型元素组成的,这九个元素自前至后依次为:

四位的年(如: 1993)

月 (1-12)

日 (1-31)

时 (0-23)

分 (0-59)

秒 (0-59)

星期几 (0-6, 周一是 0)

元旦开始日 (1-366)

夏令时修正时间 (-1, 0 or 1)

如果年份值小于100,则会自动转换为加上1900后的值

变量

time.altzone 夏令时时间与UTC时间差(秒为单位)

time.daylight 夏令时校正时间

time.timezone 本地区时间与UTC时间差(秒为单位)

time.tzname 时区名字的元组, 第一个名字为未经夏令时修正的时区名,第一个名字为经夏令时修正后的时区名

函数

time.time() 返回从计算机元年至当前时间的秒数的浮点数(UTC时间为准)

time.sleep(secs) 让程序按给定秒数的浮点数睡眠一段时间

time.gmtime([secs]) 用给定秒数转换为用UTC表达的时间元组(缺省返回当前时间元组)

time.asctime([tuple]) 将时间元组转换为日期时间字符串

time.mktime(tuple) 将本地日期时间元组转换为新纪元秒数时间(UTC为准)

time.localtime([secs]) 将UTC秒数时间转换为日期元组(以本地时间为准)

系统模块

系统模块全部是运行时系统相关的信息

变量

sys.path 模块搜索路径 path[0] 是当前脚本程序的路径名,否则为 ''

sys.modules 已加载模块的字典

sys.version 版本信息字符串

sys.version_info 版本信息的命名元组

sys.platform 操作系统平台名称信息

sys.argv 命令行参数 argv[0] 代表当前脚本程序路径名

sys.copyright 获得Python版权相关的信息

sys.builtin_module_names 获得Python内建模块的名称(字符串元组)标准输入输出时会用到

sys.stdin 标准输入文件对象,多用于input()

sys.stdout 标准输出文件对象,多用于print()

sys.stderr 标准错误输出文件对象, 用于输出错误信息

函数

sys.exit([arg]) 退出程序,正常退出时 sys.exit(0)

sys.getrecursionlimit()

sys.getrecursionlimit() 得到递归嵌套层次限制(栈的深度)

sys.setrecursionlimit(n) 得到和修改递归嵌套层次限制(栈的深度)

自定义模块

开发人员自定义的模块

自定义的模块的模块名必须符合"标识符"的命名规则(同变量名)

模块有各自独立的作用域,模块内的变量不会冲突

# mymod1.py

def myfun():

print('我是mymod1中myfun')

name= 'audi'

# mymod2.py

def myfun():

print('我是mymod2种的myfun')

name= 'tesla'

# test1.py

import mymod1

# from mymod1 import *

mymod1.myfun() # 我是mymod1中myfun

print(mymod1.name) # audi

# 以下演示模块内的变量不会冲突

# test2.py

import mymod1

import mymod2

mymod1.myfun() # 我是mymod1中myfun

mymod2.myfun() # 我是mymod2中myfun

print(mymod1.name) # audi

print(mymod2.name) # tesla

# 以下演示模块内的变量会冲突

# 后倒入的会覆盖前导入的

# test3.py

from mymod1 import *

from mymod2 import *

myfun() # 我是mymod2中myfun

print(name) # tesla

模块化编程的优点

有利于多人合作开发

使代码更易于维护

提高代码的复用率

有利于解决变量名冲突问题

模块的加载与导入

import 语句搜索模块的路径顺序

搜索程序运行时的路径(当前路径)

sys.path 提供的路径

搜索内置模块

sys.path 是一个存储模块搜索路径的列表

可以把自定义的模块放在相应的路径下可以导入

可以把自己模块的路径添加在 sys.path 列表中

模块的加载过程

在模块导入时,模块的所有语句会执行

如果一个模块已经以导入,则再次导入时不会重新执行模块内的语句

模块的重新加载

import mymod3

import imp

imp.reload(mymod3) # 重新加载 mymod3模块

模块导入和执行的过程

先搜索相关的路径找模块 .py

判断是否有此模块对应的 .pyc 文件,如果存在 pyc 文件且比 .py 文件新,则直接加载 .pyc 文件

否则用 .py 文件生成 .pyc 后再进行加载

模块的属性

属性的实质是变量(是模块内的全局变量)

模块内预置的属性

__doc__ 用来绑定模块的文档字符串

__file__ 绑定模块对应的文档路径名

对于内建模块,不绑定路径(没有 __file__ 属性)

对于其它模块,绑定路径名的字符串

__name__ 用来记录模块的自身名字

记录模块名

用来判断是否为主模块(最先运行的模块)

当此模块为主模块时,__name__ 绑定 __main__

当此模块不是主模块时,此属性绑定模块名

__all__ 用来存放可导出属性的 字符串列表

当用 from import * 语句导入时,只导入 __all__ 列表内的属性

模块的隐藏属性

模块中以 _ 开头的属性,在 from import * 语句导入时,将不被导入,通常称这些属性为隐藏属性

随机模块

R.random() 返回一个[0, 1) 之间的随机实数

R.uniform(a,b) 返回[a,b) 区间内的随机实数

R.randrange([start,] stop[, step]) 返回range(start,stop,step)中的随机数

R.choice(seq) 从序列中返回随意元素

R.shuffle(seq[, random]) 随机指定序列的顺序(乱序序列)

R.sample(seq,n) 从序列中选择n个随机且不重复的元素

R.getrandbits(nbit) 以长整型的形式返回用nbit位来表示的随机数

R.seed(a=None) 用给定的数a设置随机种子,不给参数a则用当前时间设置随机种子

包(模块包)

包是将模块以文件夹的组织形式进行分组管理的方法

包的作用

将一系列模块进行分类管理,有利于防止命名冲突

可以在需要时加载一个或部分模块而不是全部模块

一个包内可以有多个子包和模块

包可以当做模块来使用

包的示例

__init__.py 文件

常规包内必须存在的文件,__init__.py 会在包加载时被自动调用

编写此包的内容

在内部填写文档字符串

在 __init__.py 内可以加载此包所依懒的一些其它模块

只有当存在 __init__.py 时,文件夹才能被当做一个包

__init__.py 内的 __all__ 列表

用来记录此包中有哪儿些子包或模块在用from 包 import *

语句导入时是否被调导入

__all__列表只对 from import *语句起作用

可以选择性得加载一些子包和模块

包的导入

用三条import语句可以导入包(同模块的导入规则)

import 包名 [as 包别名]

import 包名.模块名 [as 模块新名]

import 包名.子包名.模块名

from 包名 import 模块名 [as 模块新名]

from 包名.子包名 import 模块名 [as 模块新名]

from 包名.子包名.模块名 import 属性名 [as 属性新名]

from 包名 import *

from 包名.模块名 import *

# 示例

import mypack # 导入mypack包

import mypack.menu # 导入mypack下的menu模块

import mypack.games.tanks # 导入mypack下的games包下的tanks模块

from mypack import menu # 导入mypack下的menu模块

from mypack.office import excel # 导入mypack下的offie包下的excel模块

包的相对导入

包的相对导入是指包内模块的相互导入

from 相对路径包或模块 import 属性或模块名

from 相对路径包或模块 import *

相对路径

. 代表当前目录

.. 代表上一级目录

... 代表上二级目录

.... 以此类推

相对导入时不能超出包的外部

包的加载路径

当前文件夹

sys.path 给出的路径



推荐阅读
  • 本文介绍了使用kotlin实现动画效果的方法,包括上下移动、放大缩小、旋转等功能。通过代码示例演示了如何使用ObjectAnimator和AnimatorSet来实现动画效果,并提供了实现抖动效果的代码。同时还介绍了如何使用translationY和translationX来实现上下和左右移动的效果。最后还提供了一个anim_small.xml文件的代码示例,可以用来实现放大缩小的效果。 ... [详细]
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
  • 开发笔记:实验7的文件读写操作
    本文介绍了使用C++的ofstream和ifstream类进行文件读写操作的方法,包括创建文件、写入文件和读取文件的过程。同时还介绍了如何判断文件是否成功打开和关闭文件的方法。通过本文的学习,读者可以了解如何在C++中进行文件读写操作。 ... [详细]
  • 本文介绍了如何清除Eclipse中SVN用户的设置。首先需要查看使用的SVN接口,然后根据接口类型找到相应的目录并删除相关文件。最后使用SVN更新或提交来应用更改。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • Android工程师面试准备及设计模式使用场景
    本文介绍了Android工程师面试准备的经验,包括面试流程和重点准备内容。同时,还介绍了建造者模式的使用场景,以及在Android开发中的具体应用。 ... [详细]
  • 本文介绍了使用哈夫曼树实现文件压缩和解压的方法。首先对数据结构课程设计中的代码进行了分析,包括使用时间调用、常量定义和统计文件中各个字符时相关的结构体。然后讨论了哈夫曼树的实现原理和算法。最后介绍了文件压缩和解压的具体步骤,包括字符统计、构建哈夫曼树、生成编码表、编码和解码过程。通过实例演示了文件压缩和解压的效果。本文的内容对于理解哈夫曼树的实现原理和应用具有一定的参考价值。 ... [详细]
  • 在2022年,随着信息化时代的发展,手机市场上出现了越来越多的机型选择。如何挑选一部适合自己的手机成为了许多人的困扰。本文提供了一些配置及性价比较高的手机推荐,并总结了选择手机时需要考虑的因素,如性能、屏幕素质、拍照水平、充电续航、颜值质感等。不同人的需求不同,因此在预算范围内找到适合自己的手机才是最重要的。通过本文的指南和技巧,希望能够帮助读者节省选购手机的时间。 ... [详细]
  • macOS Big Sur全新设计大版本更新,10+个值得关注的新功能
    本文介绍了Apple发布的新一代操作系统macOS Big Sur,该系统采用全新的界面设计,包括图标、应用界面、程序坞和菜单栏等方面的变化。新系统还增加了通知中心、桌面小组件、强化的Safari浏览器以及隐私保护等多项功能。文章指出,macOS Big Sur的设计与iPadOS越来越接近,结合了去年iPadOS对鼠标的完善等功能。 ... [详细]
  • 本文整理了315道Python基础题目及答案,帮助读者检验学习成果。文章介绍了学习Python的途径、Python与其他编程语言的对比、解释型和编译型编程语言的简述、Python解释器的种类和特点、位和字节的关系、以及至少5个PEP8规范。对于想要检验自己学习成果的读者,这些题目将是一个不错的选择。请注意,答案在视频中,本文不提供答案。 ... [详细]
  • 本文介绍了Python对Excel文件的读取方法,包括模块的安装和使用。通过安装xlrd、xlwt、xlutils、pyExcelerator等模块,可以实现对Excel文件的读取和处理。具体的读取方法包括打开excel文件、抓取所有sheet的名称、定位到指定的表单等。本文提供了两种定位表单的方式,并给出了相应的代码示例。 ... [详细]
  • r2dbc配置多数据源
    R2dbc配置多数据源问题根据官网配置r2dbc连接mysql多数据源所遇到的问题pom配置可以参考官网,不过我这样配置会报错我并没有这样配置将以下内容添加到pom.xml文件d ... [详细]
  • Go语言实现堆排序的详细教程
    本文主要介绍了Go语言实现堆排序的详细教程,包括大根堆的定义和完全二叉树的概念。通过图解和算法描述,详细介绍了堆排序的实现过程。堆排序是一种效率很高的排序算法,时间复杂度为O(nlgn)。阅读本文大约需要15分钟。 ... [详细]
  • IjustinheritedsomewebpageswhichusesMooTools.IneverusedMooTools.NowIneedtoaddsomef ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
author-avatar
玫瑰编辑1轶事
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有