- 模块
- 包
- 内置模块
什么是模块
-
模块是包含一组函数的文件,希望在应用程序中引用。
-
创建模块
-
使用模块
-
模块中的变量
-
命名
-
内建模块
- platform
-
从模块导入
包
- 包是一个分层次的文件目录结构。
- 简单来说,包就是文件夹,但该文件夹下必须存在 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())
系统模块-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)
系统模块-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')
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)
datetime-日期和时间
- datetime是Python处理日期和时间的标准库。
- 获取当前日期和时间
- 获取指定日期和时间
- datetime<>timestamp
- datetime<>str
- 加减timedelt
代码例子
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)
计算今年过去了多少天
calendar-日历
- 打印某月的月历
import calendar
cal = calendar.month(2016, 1)
print "以下输出2016年1月份的日历:"
print cal
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
实例
将 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))