模块
- 模块
- 包
- 内置模块
1 什么是模块
-
模块是包含一组函数的文件,希望在应用程序中引用。
-
创建模块
-
使用模块
-
模块中的变量
-
命名
-
内建模块
- platform
-
从模块导入
2 包
- 包是一个分层次的文件目录结构。
- 简单来说,包就是文件夹,但该文件夹下必须存在
__init__.py文件, 该文件的内容可以为空。
代码例子
创建模块
# mymath.py
def say():
print("hello")
def is_leapyear(year):
return year%4==0 and year%100!=0 or year%400==0
pi=3.1415926
def circle_area(r):
return pi*r**2
创建包
# aowin/hellomodule.py
def rate(x,y):
return (y-x)/x
使用模块
import mymath
import aowin.hellomodule as hm
mymath.say()
print(mymath.is_leapyear(2020))
print(mymath.is_leapyear(2021))
print(mymath.pi)
print(mymath.circle_area(10.0))
print(hm.rate(4,8))
数学模块
#python内置模块的导入使用import
# import 模块名字
import math,random
# import random
# 访问模块中的变量
# print(math.pi,type(math.pi))
# print("%.100f" % math.pi)
# print(math.nan)
#内置函数 直接使用
# print(pow(2,10))
# 访问模块中的函数 通过模块名调用
# print(math.sqrt(100))
# print(math.pow(2,10))
# print(math.cos(0),math.cos(math.pi/2))
# print(math.isnan(float('nan'))) # isnan - is not a number
# random.random() - 产生[0,1)之间的随机数
for i in range(10):
print(random.random())
随机数模块
#给模块起别名,方便使用
# import 模块名 as 别名
# import random as rd
#导入模块中的函数名或者变量名
# from 模块名 import 函数名或者变量名
# from random import choice
# from random import choice as cho
#一次导入多个函数,函数名中间用逗号(,)分割
# from random import choice,random
from random import *
# random() - 随机小数
# print(rd.random())
# randint()
# randint(a,b) - 在[a,b]范围的随机整数
# print(rd.randint(1,6))
# randrange(a,b) - 在[a,b)范围的随机整数
# for i in range(20):
# print(rd.randrange(1,6))
# print(rd.choice([2,4,6,8,'apple']))
print(choice([1,3,5,7,9]),random(),randint(1,6))
# 直接导入模块小所有函数,使用时可能会产生歧义
# def random():
# return 10
print(random())
2.3 系统模块-sys
- sys.argv
- sys.path
- sys.platform
- sys.stdin
- sys.stdout
- sys.stderr
- sys.modules
代码例子
#系统有关的内置模块
import os,sys
fname = 'c:/code/hello.py' #文件
fname = __file__ # __file__ 表示当前文件的字符串
print(fname,type(fname))
# print(os.path.isdir(fname)) #False 是否是目录?
# print(os.path.isfile(fname)) # False 是否是文件?
#目录名
print(os.path.dirname(fname))
#从路径把目录和文件名分开,返回元组
print(os.path.split(fname))
#把目录和文件名连接组成路径
print(os.path.join('e:/code/模块和包/','test_sys.py'))
#获取系统命令携带的参数(列表)
print(sys.argv)
print(sys.platform)
print(sys.stdin) #标准输入(键盘)
print(sys.stdout) #标准输出(显示器)
print(sys.path)
print(sys.builtin_module_names)
2.4 系统模块-os
- os.path.isdir
- os.path.isfile
- os.path.getsize
- os.path.split
- os.path.join
- os.path.dirname
- os.path.basename
- os.path.abspath
- os.system
代码例子
import os
fname='模块和包\data.txt'
print(os.path.isfile(fname))
#绝对路径
print(os.path.abspath(fname))
#文件大小 单位字节
print(os.path.getsize(fname))
#调用执行操作系统的指令
os.system('dir')
2.5 time-时间
- 时间戳
- 时间元组
- 获取当前时间
- asctime
- strftime
- strptime
代码例子
import time
#time() - 返回当前时间
#时间戳 - 以秒为单位的浮点小数
print(time.time())
#localtime() - 返回本地时间
# struct_time - 年月日时分秒构成的数据结构
print(time.localtime())
lt = time.localtime()
print(lt.tm_year,lt.tm_mon,lt.tm_mday,lt.tm_hour,lt.tm_min,lt.tm_sec)
# strftime() - 格式化时间成字符串 f-format
ts = time.strftime('%Y-%m-%d %H:%M:%S',lt)
print("当前时间:",ts)
# strptime() - 把字符串转换成时间 p - parse
t = time.strptime('1921-10-01 12:20:01','%Y-%m-%d %H:%M:%S')
print(t)
2.6 datetime-日期和时间
- datetime是Python处理日期和时间的标准库。
- 获取当前日期和时间
- 获取指定日期和时间
- datetime<>timestamp
- datetime<>str
- 加减timedelta
代码例子
from datetime import datetime
# now() - 返回当前的日期和时间
print(datetime.now())
# datetime() 创建日期时间datetime
dt = datetime(1949,10,1)
print(dt)
print(type(dt))
# strptime() - 字符串转换成日期事件datetime
dt2 = datetime.strptime('2021-6-23','%Y-%m-%d')
print(dt2)
print(dt2-dt)
# 计算今年过去了多少天
2.7 calendar-日历
- 打印某月的月历
import calendar
cal = calendar.month(2016, 1)
print "以下输出2016年1月份的日历:"
print cal
2.8 JSON
-
JSON 是用于存储和交换数据的语法。
-
JSON 是用 JavaScript 对象表示法(JavaScript object notation)编写的文本。
-
把JSON转为python
- loads
import json
# 一些 JSON:
x = '{ "name":"Bill", "age":63, "city":"Seatle"}'
# 解析 x:
y = json.loads(x)
# 结果是 Python 字典:
print(y["age"])
-
把python转为JSON
- dumps
实例1
将 Python 对象转换为 JSON 字符串,并打印值:
import json
print(json.dumps({"name": "Bill", "age": 63}))
print(json.dumps(["apple", "bananas"]))
print(json.dumps(("apple", "bananas")))
print(json.dumps("hello"))
print(json.dumps(42))
print(json.dumps(31.76))
print(json.dumps(True))
print(json.dumps(False))
print(json.dumps(None))
实例2
转换包含所有合法数据类型的 Python 对象:
import json
x = {
"name": "Bill",
"age": 63,
"married": True,
"divorced": False,
"children": ("Jennifer","Rory","Phoebe"),
"pets": None,
"cars": [
{"model": "Porsche", "mpg": 38.2},
{"model": "BMW M5", "mpg": 26.9}
]
}
print(json.dumps(x))