Python基础(模块和包)
一、什么叫模块
模块
- 模块英文为Modules
- 函数与模块的关系
- 在Python中一个扩展名为.py的文件就是一个模块
? 模块当中包含函数,类(类中包含属性和方法),语句
def fun():
pass
def run2():
pass
class Student:
native_place='吉林'
def eat(self,name,age):
self.name=name
self.age=age
@classmethod
def cm(cls):
pass
@staticmethod
def sm():
pass
a=10
b=20
print(a+b)
模块化编程的好处
- 方便其他程序和脚本的导入并使用
- 避免函数名和变量名冲突
- 提高代码的可维护性
- 提高代码的可重用性
二、自定义模块
创建模块
- 创建一个 .py 文件,名称尽量不要与Python自带的标准模块名称相同
- 新建个python文件就好
导入模块
import 模块名称 [as 别名]
import math
print(id(math))
print(type(math))
print(math)
print(math.pi)
print('-------------------')
print(dir(math))
print(math.pow(2,3),type(math.pow(2,3)))
print(math.ceil(9.001))
print(math.floor(9.001))
导入math模块示例,输出:
2339119545616
<class 'module'>
<module 'math' (built-in)>
3.141592653589793
-------------------
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'isqrt', 'lcm', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'nextafter', 'perm', 'pi', 'pow', 'prod', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc', 'ulp']
8.0 <class 'float'>
10
9
from 模块名称 import 函数/变量/类
只想导入math 中的 pi
from math import pi
print(pi)
输出:
3.141592653589793
查看模块内容: ctrl + 右键
可不可以导入自定义的模块?
1.先自定义个模块
-
import 模块名
- 发现报错
-
将那个模块所在的文件夹定义为资源文件夹(Source Root)
- 右键那个文件夹—>Mark Directory as —>Resource Root
-
发现不再报错 -
使用试试 定义的模块: calc def add(a,b):
return a+b
def div(a,b):
return a/b
使用:
import calc
print(calc.div(5,2))
输出:2.5
当然,也可以只导入一个函数
from calc import add
print(add(3,6))
三、以主程序形式运行
代码示例:
定义模块 cac2
def add(a,b):
return a+b
print(add(10,20))
定义模块:demomain
import cac2
print(cac2.add(100,200))
输出时:
30 300
发现cac2 里面的其他代码也执行了
但是,这样,别的模块引入cac2的add方法会有影响
如何消除影响?
def add(a,b):
return a+b
if __name__ == '__main__':
print(add(10,20))
输出:300
这里面的main是指,在哪个模块启动运行,哪个模块为main, 所以,这里的代码意思是,当__ main __ 模块运行时,才运行 print(add(10,20))
四、Python中常用的内置模块
模块名 | 描述 |
---|
sys | 与Python解析器及其环境操作相关的标准库 | time | 提供与时间相关的各种函数的标准库 | os | 提供了访问操作系统服务功能的标准库 | calendar | 提供与日期相关的各种函数的标准库 | urllib | 用于读取来自网上(服务器)的数据标准库 | json | 用于使用JSON序列化和反序列化对象 | re | 用于在字符串中执行正则表达式匹配和替换 | math | 提供标准算术运算函数的标准库 | decimal | 用于进行精确控制运算精度、有效数位和四舍五入操作的十进制运算 | logging | 提供了灵活的记录事件、错误、警告和调试信息等日志信息的功能 |
import sys
print(sys.getsizeof(24))
print(sys.getsizeof(45))
print(sys.getsizeof(True))
print(sys.getsizeof(False))
28
28
28
24
import time
print(time.time())
print(time.localtime(time.time()))
输出:
1646580373.0324876
time.struct_time(tm_year=2022, tm_mon=3, tm_mday=6, tm_hour=23, tm_min=26, tm_sec=13, tm_wday=6, tm_yday=65, tm_isdst=0)
import urllib.request
print(urllib.request.urlopen('http://www.baidu.com').read())
可以用来发送请求
五、第三方模块的安装及使用
第三方模块的安装
pip install 模块名
在线安装方式
打开cmd
输入:
pip install schedule
可以看到正在下载安装
Looking in indexes: https://mirrors.aliyun.com/pypi/simple/
Collecting schedule
Downloading https://mirrors.aliyun.com/pypi/packages/eb/3b/040bd180eaef427dd160562ee66adc9f4f67088185c272edcdb899c609c7/schedule-1.1.0-py2.py3-none-any.whl (10 kB)
Installing collected packages: schedule
Successfully installed schedule-1.1.0
第三方模块的使用
在python文件中使用:
import 模块名
from… import
import time
import schedule
def job():
print('哈哈------')
schedule.every(3).seconds.do(job)
while True:
schedule.run_pending()
time.sleep(1)
每3秒钟打印一次 ‘哈哈------’
|