带你了解Python中的模块

307 阅读4分钟
  • 模块
  • 内置模块

什么是模块

  • 模块是包含一组函数的文件,希望在应用程序中引用。

  • 创建模块

  • 使用模块

  • 模块中的变量

  • 命名

  • 内建模块

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