模块的概念介绍
什么是模块:
模块是一个包含有一系列数据、函数、类等组成的程序组
模块是一个文件,模块文件名通常以.py
结尾.
作用:
让一些相关的数据,函数,类等有逻辑的组织在一起,使逻辑结构更加清晰
模块中的数据,函数,类等可提供给其它模块或程序使用
模块的分类:
-
1、内建模块(builtins) 在解析器的内可以直接使用:map()
-
2、标准库模块, 安装Python时已安装且可以直接使用os,time
-
3、第三方模块(通常开源),需要自己安装
-
4、用户自己编写的模块(可以作为其它人的第三方模块)
模块的导入语句
import 语句
语法:
import 模块名1 [as 模块新名1], 模块名2 [as 模块新名2], ....
示例:
#导入数学模块
import math
#导入时间模块
import time
>>> import math
>>> import time,random
注意:没有反应,则说明导入成功了,我们通过import可以导入该模块的所有属性
如何查看该模块的信息呢?注意:前提是模块已导入的前提下
- dir(obj) 函数返回模块所有属性的字符串列表
- help(obj) 可以查看模块相关的文档字符串
作用:
将某模块整体导入到当前模块内
用法 :
模块.属性名(函数名可以是函数 也是可是变量)
例如 :
help(math)
DESCRIPTION说明
This module is always available. It provides access to the
mathematical functions defined by the C standard.
这个函数总是可用的,它提供了一些数学函数的定义 通过C语言
import math
>>> math.factorial(5)
120
>>> math.factorial(4)
24
DATA
e = 2.718281828459045 自然对数的底,我们要知道世界只有两个常数是无限不循环的,一个是自然对数的底,e,另外一个就是pi
nan = nan
pi = 3.141592653589793
tau = 6.283185307179586
认识 e和pi的扣下1,不认识扣2
练习:
1.输入一个正方形的周长,输出正方形的面积
2.输入 一个圆的半径,输出圆的面积
3.输入 一个正方形的面积,打印这个正方形的周长
要求:
用math模块内的函数实现 ,提示:pow:返回x的y次方,即x**y
,
math.sqrt
面积的平方根 ,math.pi
圆周率
import math
# 1.输入一个正方形的周长,输出正方形的面积
length = float(input('请输入正方形的周长:'))
area = math.pow(length/4,2)
print('正方形的面积是:',area)
# 2.输入 一个圆的半径,输出圆的面积
r = float(input('请输入一个圆的半径:'))
area = math.pow(r,2)*math.pi
print('圆的面积是:',area)
# 3.输入 一个正方形的面积,打印这个正方形的周长
area = float(input("请输入一个正方形的面积:"))
# 面积的平方根
length = math.sqrt(area)*4
print('正方形的周长是:',length)
8.3 import导入的几种方式
8.3.1 import导入几种方式介绍
导入关键字 | 导入对象 | 导入后的使用 |
---|---|---|
import | 模块 | 模块.功能import sys, sys.path |
from模块import功能 | 功能 | 功能from sys import path |
from模块import * | 功能 | 功能这里同样是导入了所有功能 |
from模块import功能,功能 | 功能 | 功能可以导入多个功能 |
as | 给导入的模块或者功能起别名 |
from os import path
from datetime import *
from time import time ,localtime
from os import path as pas
注意:
在Python2版本中目录不可以直接被导入,但是3可以。
Python2目录下有__init__.py
文件才可以被导入,并且__init__
.py导入后自动执行
8.4关于if __name__== '__main__'
主要是用来判断当前文件是否被直接执行。
一个py文件中的代码除了被直接执行,还可能被Import到其他文件中去执行,如果有些代码不方便在被import时执行,就可以把这些代码放在if__name__=='__main__'
下来了。这样只有当文件被直接执行时,这些代码才会被读取。
8.4.1 本脚本
__name__
属性
此属性用来记录模块的自身名字
作用:
1.记录模块名
2.用来判断是否为主模块(最先运行的模块)
说明 :
当此模块不是主模块时,此属性绑定模块名
每个python模块都包含内置的变量__name__
,当运行模块被执行的时候,__name__
等于文件名(包含了后缀.py);如果import
到其他模块中,则__name__
等于模块名称(不包含后缀.py)。而“__main__
”等于当前执行文件的名称(包含了后缀.py)。进而当模块被直接执行时,__name__ == 'main'
结果为真。
注意我们说__name__
属性就是用来判断自己是不是主模块,是不是主先运行的,就是这么一个作用
在我们脚本创建之初,Python会默认加载一些内建的变量,__name__
就是其中一个
当我们脚本自己执行,也就是直接执行这个脚本的时候__name__
的值是__main__
print(__name__)
运行结果:
__main__
8.4.2 Python中有趣的导入
1、
>>> import __hello__
Hello World...
2、经典的 Python 之禅
3、“反重力”漫画
>>>import antigravity
antigravity [ˌæntiˈgrævɪti]:反重力
1.三合一
- 将学生管理系统分为四个模块
M --> model.py 数据模块
V --> ui.py 界面模块
C --> bll.py 业务逻辑模块
将调用View的代码--> main.py 入口模块 - 阅读代码 shopping_oo.py
体会:面向过程与面向对象的区别
4 写程序: 输入出生日期(年月日)
1.算出你已经出生多少天?
2.算出 你出生那天是星期几?