我们来了解一下🎉python中模块得小知识点🧀

171 阅读4分钟

模块

  • 模块
  • 内置模块

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))