找回密码
 立即注册

推荐阅读

  • 便民服务
  • 关注我们
  • 社区新手

python中的模块及对应的内建函数

[复制链接]
模块 :
什么是模块?一个py文件就是一个模块(存在方法等等,变量等等)
模块是可以被其他模块进行引用的

模块中常用的引用方法:

# 第一种导入的方法,导入模块和对应的目录
# import wuhan_20_demo.test
# print(wuhan_20_demo.test.number)                    # 1000
# wuhan_20_demo.test.work()                           # hello word

# 第二种导入的方法,导入指定的模块  test
# from wuhan_20_demo import test
# print(test.number)                                  # 1000
# test.work()                                         # hello word

# 第三种 :导入指定的方法
# from wuhan_20_demo.test import work,number
# print(number)                                       # 1000
# work()                                              # hello word

# 第四种 :导入多个模块的方法
# from wuhan_20_demo import test, day_01, day_02
# print(test.number)                                  # 1000
# print(day_01.a)                                     # 武汉
# print(day_02.b)                                     # 多测师

# 第五种 :导入模块当中所有的方法
# from wuhan_20_demo.test import *
# print(number)                                       # 1000
# work()                                              # hello word


模块 : 1.python 内置的模块---->下载python就存在的
            re,json,time,os,random,string,copy
            2.python 自定义模块 成员自己编写的模块
            3.python 第三方模块,其他程序员编写的方法
            可以通过下载使用别人所写的模块方法

# import time
# print(time.time())                      # 打印1970年到现在所经历的秒数
# print(time.asctime())                   # 格式化输出时间

# 用于输出等待
# print("武汉")
# time.sleep(3)                           # 输出武汉之后过3秒再输出多测师
# print("多测师")

"""
    %Y  Year with century as a decimal number.
    %m  Month as a decimal number [01,12].
    %d  Day of the month as a decimal number [01,31].
    %H  Hour (24-hour clock) as a decimal number [00,23].
    %M  Minute as a decimal number [00,59].
    %S  Second as a decimal number [00,61].
"""

# print(time.strftime("%Y:%m:%d-%H:%M:%S"))               # 2022:11:15-09:48:11

copy 模块 :
copy 涉及到深拷贝:
           浅拷贝:

# 导入copy模块
import copy
# 浅拷贝赋值
# list1 = ["上海多测师", ["武汉多测师"], "杭州多测师"]
# list2 = copy.copy(list1)
# list1[0] = "深圳多测师"                  # 修改list第一层的数据
# list1[1][0] = "鼎泰关南大厦"
# id :查看内存地址,在python当中每创建一个数据内容,都会为
# 其分配内存地址
# print(list1)
# print(list2)
# print(id(list1))                        # 16193576
# print(id(list2))                        # 16191896
# print(id(list1[1]))                     # 16191776
# print(id(list2[1]))                     # 16191776

#打印出来的第一个list python重新分配了内存地址,修改数据不会影响当前子集的list数据,共用一个内存地址,
说明是一个东西,所有修改了子集的数据两个列表都会受影响

深拷贝 : deepcopy
# list1 = ["上海多测师", ["武汉多测师"], "杭州多测师"]
# list2 = copy.deepcopy(list1)
# list1[0] = "鼎泰关南大厦"
# list1[1][0] = "维也纳"
# print(id(list1), id(list2))                 # 9246800 9245200
# print(id(list1[1]), id(list2[1]))           # 9245080 9748648
# print(list1)
# print(list2)

总结:浅拷贝:
        使用浅拷贝copy内容,copy完成之后会重新分配内存地址,但是子集
        数据还是共用的关系,没有复制到子集数据,所以修改子集数据会
        存在影响
    深拷贝:
        使用深拷贝deepcopy内容,copy完成之后,第一层数据和子集数据都会
        重新为其分配内存地址,新数据和原数据之间没有影响

第三方的模块:
    1.需要进行下载,file--->setting--->project 项目名称
    2.pip 指令下载 : dos指令窗口 执行pip指令下载 : pip install xlrd == 1.2.0

    xlrd : 用来读取excel文件的模块,用来操作excel


import xlrd

# 通过open_workbook 打开excel文件
# book = xlrd.open_workbook("D:\PycharmProjects\wuhan20\wuhan_20_demo\data.xls")

# 1.sheet_by_name : 通过sheet 页面名称定位sheet页面
# sheet = book.sheet_by_name("Sheet1")
# print(sheet)                    # 拿到的是一个定位到的sheet对象
# 2.sheet_by_index : 通过sheet 页面的索引位置定位sheet操作页面
# sheet = book.sheet_by_index(0)
# print(sheet)                    # 拿到的是一个定位到的sheet对象
# 3.获取excel的所有sheet页面
# sheet = book.sheets()[0]
# print(sheet)                    # 拿到的是全部的sheet对象,可以通过索引选择对应的sheet页面
# nrows 获取页面内容的行数
# row = sheet.nrows
# print(row)
# 获取行的方法,row_values()
# 1.第一个参数代表行的索引
# 2.第二个参数代表起始列的索引
# 3.第三个参数代表结束列的索引,不会被取到
# value = sheet.row_values(2, 2, 3)
# print(value)

# 获取列的方法 : col_values()
# 1.第一个参数代表列的索引
# 2.第二个参数代表起始行的索引
# 3.第三个参数代表结束行的索引,不会被取到
# value = sheet.col_values(0, 0, 7)
# print(value)

# def excel_getrow(File_Path,SheetName,*index):
#     book = xlrd.open_workbook(File_Path)
#     sheet = book.sheet_by_name(SheetName)
#     new_value = sheet.row_values(*index)
#     print(new_value)
# excel_get("D:\PycharmProjects\wuhan20\wuhan_20_demo\data.xls","Sheet1",0,0,7)
# excel_get("data1.xls","Sheet1",2,5,7)


# def excel_getcol(File_Path, SheetName, *index):
#     book = xlrd.open_workbook(File_Path)
#     sheet = book.sheet_by_name(SheetName)
#     new_value = sheet.col_values(*index)
#     print(new_value)
#
# excel_getcol("data.xls", "Sheet1", 0, 0, 7)
# excel_getcol("data1.xls", "Sheet2", 0, 5, 7)

# def all_excel(File,Sheetindex):
#     
#     :param File: 文件的路径
#     :param Sheetindex: excel的sheet页面的索引
#     :return:返回的是一个存放所有数据的列表
#     
#     book = xlrd.open_workbook(File)
#     sheet = book.sheet_by_index(Sheetindex)
#     row = sheet.nrows
#     list1 = []
#     for i in range(row):
#         list1.append(sheet.row_values(i))
#     return list1
# print(all_excel("data.xls",0))

random : 也是属于随机函数模块 : 用来生成随机数
import random
# random 方法: 生成0-1之间的浮点数,可以随机为0,但不会为1
# print(random.random())

# randint 方法: 随机生成指定范围的整数,包含结束的值
# print(random.randint(1, 3))

# randrange 方法: 随机生成指定范围的整数,不包含结束的值,具有步长值
# print(random.randrange(1, 11, 2))

# sample 方法: 取序列中的值 : sample 可操作的对象是序列,不包含dict
# li = ["武汉", "上海", "成都", "北京"]
# print(random.sample(li, 2))

# choice : 在序列当中选取一个值
# li = ["武汉", "上海", "成都", "北京"]
# print(random.choice(li))

# shuffle : 打乱顺序
# li = [1, 2, 3, 4, 5]
# random.shuffle(li)
# print(li)

string:
import string
# 生成0-9的数值
# print(string.digits)                      # 0123456789
# 生成大小写的字母
# print(string.ascii_letters)               # abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
# 生成小写字母
# print(string.ascii_lowercase)             # abcdefghijklmnopqrstuvwxyz
# 生成大写字母
# print(string.ascii_uppercase)             # ABCDEFGHIJKLMNOPQRSTUVWXYZ

hashlib: md5 加密模块: 只能进行加密不能支持解密
返回一个16进制,且32位的加密文本信息

import hashlib

# md5 = hashlib.md5()

# 填写加密的文本,编码格式
# md5.update("123456".encode("utf-8"))

# 打印加密的密文
# print(md5.hexdigest())                  # e10adc3949ba59abbe56e057f20f883e

有一个专门破解md5的网址  一些简单的密文可以处理
# md5.update("武汉多测师".encode("utf-8"))
# print(md5.hexdigest())

os : os模块提供了多平台的功能接口,可以操作访问不同平台的路径
import os

# getcwd : 获取当前执行命令的py文件的所在目录
# print(os.getcwd())                      # D:\PycharmProjects\wuhan20\wuhan_20_demo

# isfile() : 判断当前的路径是一个文件,返回的结果是布尔值
# 是文件则为True,不是则为False
# print(os.path.isfile(r"D:\PycharmProjects\wuhan20\wuhan_20_demo\file.txt"))             # True

# isdir : 判断当前的路径是一个目录,返回的结果是布尔值
# print(os.path.isdir(r"D:\PycharmProjects\wuhan20\wuhan_20_demo"))             # True

# split : 分割: 默认分割尾部的文件目录
# print(os.path.split(r"D:\PycharmProjects\wuhan20\wuhan_20_demo"))
# ('D:\\PycharmProjects\\wuhan20', 'wuhan_20_demo')

# join : 拼接路径
# print(os.path.join("D:/wuhan", "file.txt"))             # D:/wuhan\file.txt

# listdir : 打印当前目录下的所有内容,包含隐藏文件和目录信息
# print(os.listdir("D:/"))                    # 打印d盘下的所有内容

# exists : 判断当前路径是不是存在的
# print(os.path.exists(r"D:\PycharmProjects\wuhan20\wuhan_20_demo"))          # True

# dirname : 获取当前路径的上级路径
# print(__file__)                      # D:\Python37\python.exe D:/PycharmProjects/wuhan20/wuhan_20_demo/day_06.py
# print(os.path.dirname(__file__))            # D:/PycharmProjects/wuhan20/wuhan_20_demo
# print(os.path.dirname(os.path.dirname(__file__)))           # D:/PycharmProjects/wuhan20

# mkdir() : 新建一个目录
# os.mkdir(r"D:\PycharmProjects\wuhan20\wuhan_20_demo/duoceshi")

# rename() :修改目录名称
# os.rename(r"D:\PycharmProjects\wuhan20\wuhan_20_demo/duoceshi",
#           r"D:\PycharmProjects\wuhan20\wuhan_20_demo/wuhanduoceshi")

# 修改文件名称
# os.rename(r"D:\PycharmProjects\wuhan20\wuhan_20_demo\file.txt",
#           r"D:\PycharmProjects\wuhan20\wuhan_20_demo\file1.txt")

异常处理:
什么是异常?
    程序运行过程中放出了错误的讯号

常见的异常类型:

# SyntaxError : 出现这个错误代表你编写的代码存在问题
# print("hello word")

# NameError: 当前引用的值没有被定义
# time.time()
# print(name)

# IndexError : 索引值有问题
# li = [1, 2, 3, 4, 5]
# print(li[9])

# IndentationError : 缩进的错误
# name = "张是"
#     print(name)

# ValueError : 数据的值有问题
# a = int("abc")

# TypeError : 数据类型存在问题
# a = "1" + 1
# print(a)

异常处理:
异常是指程序运行过程中放出了错误的讯号,一旦程序发生异常,就立即结束了
代码的运行
异常处理就是在程序出现异常的过程中,进行异常处理,让程序正常运行

try:
    执行的代码,捕获异常
except:
    发现异常执行的代码
else:
    没有异常程序执行的代码
finally:
    不管程序有没有出现异常,都会执行finally里面的内容

# li = [1, 2, 3, 4, 5]
#
# try:
#     print(li[10])
# except Exception as a:              # 通过 Exception 处理报错的信息,命名为a
#     print(f"error :{a}")            # error :list index out of range
#
# finally:
#     print("运行成功")

raise: 抛出异常
# x = 10
# if x == 10:
#     raise Exception(f"error:x 不能等于 10")


分享至 : QQ空间
收藏

0 个回复

您需要登录后才可以回帖 登录 | 立即注册