python基础十:模块

2023-11-18

1、模块简介

模块化指将一个完整的程序分解成一个个的小模块
通过将模块组合,来搭建出一个完整的程序
模块化的优点
①方便开发
②方便维护
③模块可以复用

2、模块的创建

在Python当中一个py文件就是一个模块
在一个模块中引入外部模块 import 模块名(模块名就是py文件)
可以引入同一个模块多次,但是模块的实例只会创建一次
import 模块名 as 模块别名
在一个模块内部都有一个__name__。通过它我们可以获取模块的名字
如果py文件直接运行时,那么__name__默认等于字符串’main’。__name__属性值为__main__的模块是主模块。一个程序中只有一个主模块

if __name__ == '__main__':#在当前模块下调用,其他模块可以引用但是不执行
    pass

3、模块的使用

访问模块中的变量 语法是 模块名.变量名
访问模块中的函数 语法是 模块名.函数名
访问模块中的对象 语法是 模块名.对象名
我们也可以引入模块中部分内容 语法 from 模块名 import 变量,变量…
还有一种引入方式 语法 from 模块名 import 变量 as 别名

4、常见内置模块的使用

4.1 sys模块

import sys
print(sys.version)#3.7.8 (tags/v3.7.8:4b47a5b6ba, Jun 28 2020, 08:53:46) [MSC v.1916 64 bit (AMD64)]
print(sys.argv) # list 第一个元素 当前文件绝对路径
print(sys.argv[0])
print(sys.path)

4.2 os模块

import os

# print(os.getcwd())# 返回当前工作的目录
# print(os.chdir('c:'))# 改变当前路径到一个指定的目录下
# print(os.getcwd())
# os.mkdir('discount')#在当前目录下创建一个想要创建的文件夹,当文件已存在时,则无法创建该文件
# os.makedirs("moon\\sun") # 递归创建多个文件夹
# os.removedirs("moon\\sun") # 递归删除多个文件夹 注意 空
# os.mkdir("moon\\sun")    # 只能创建单个文件夹
# os.rmdir("sun")             # 只能删除单个文件夹
# print(os.path.exists('discount'))#判断文件是否村子啊,返回一个布尔值

# if not os.path.exists('discount//hh'):# 常用作文件夹的创建
#     os.mkdir('discount//hh')
# j_path = os.path.join('ss','op')
# print(j_path)#拼接路径
# print(type(os.getcwd()))#<class 'str'>

4.3 time模块

import time


# print('1'*20)
# time.sleep(2.2)# 可以为浮点数,延迟执行时间
# print('1'*20)
# print(time.time()) #1596500816.191587 秒时间戳,1970年至今总共的秒数,常用做taken加密毫秒时间戳
# print(time.localtime(time.time()))# 将秒转化为元组
# print(time.localtime())# 不传默认为本地当前时间
'''2020-8-4
time.strftime()--->时间格式化:将tuple转化为str,不能拼接中文
'''
# print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime()))
import datetime #基于time模块的封装
# print(datetime.datetime.now())#直接获取当前时间
'''计算七天前的时间日期'''
print(datetime.datetime.now()-datetime.timedelta(days=7)) # 2020-07-28 08:41:04.664192
print(datetime.datetime.now().date()) # 2020-07-28 
print(datetime.datetime.now().strftime('%b-%d-%Y %H:%M:%S'))# Jan-15-2021 11:09:38

4.4 random随机模块

import random

# print(random.random())  # 生成0-1的随机数[0,1)
# print(random.random()*10) # 生成[0,10)
# print(random.randint(1,10)) # 生成随机的整数 左右闭合[1,10]
# li = list('12345')
# print(random.choice(li)) #随机生成字符串(在序列中取元素)
# li = [1,2,3,4,5,6]
# li = (1,2,3,4,5,6) #元组不可以,不可变
# li = {1,2,3,4,5,6} #集合不可以,没有索引
# random.shuffle(li) # 直接打印就为None,只能洗list洗牌的意思
# print(li) #[4, 3, 6, 5, 1, 2]
# print(random.randrange(1,10,2))# 随机数左闭右开,和range相同
'''
1.使用随机数实现简单的验证码 6位数 全都为数字
'''
# def v_code():
#     code = ''
#     # li = [res for i in range(6)]
#     for i in range(6):
#         add_num = random.randint(0,9)
#         code += str(add_num)
#     print(code)
# v_code()
'''
2.使用随机数字与字母实现简单的验证码
'''
# def v_code():
#     code = ''
#     for i in range(3):
#         li_range = [1,2,3,4,5,6,7,8,9,'A','B','C','D','E']
#         add_num = random.sample(li_range,2)#随机取指定个数的元素-->返回的是一个列表
#         add_num = list(map(str,add_num))
#         code += ''.join(add_num)
#     print(code)
# v_code()
'''
字母能否用数字来表示?--->ascill 表
ord ('A')---> 65  字符转ascii
chr (65) --> 'A'   ascii转字符
'''
def v_code():
    code = ''
    for i in range(6):
        num = random.randrange(10)#[0,9)
        chara = chr(random.randrange(65,91)) #[A,Z]
        li = [num,chara]
        add_num = random.choice(li)
        code += str(add_num)
    print(code)
v_code()

4.5 json模块

JSON 是一种使用广泛的轻量级数据格式,python标准库中的json模块提供了Json数据的处理功能
由于json与python当中的字典格式非常像,所以python’中的json模块与相当于是用来使json与字典做转换,要注意json中的数据必须使用双引号包裹,严格要求
json模块常用的方法
json.dumps以及json.loads

'''
将字典转化为字符串
1.str强转
'''
# data = {"age":18}
# print(data)#{'age': 18}
# print(type(str))
# res = str(data)
# print(res)#{'age': 18}
# print(type(res))#<class 'str'>

import json
# data = {"age":18}
# print(type(data))#<class 'dict'>
# res = json.dumps(data)#dums  (s-->str)将字典转为字符串
# print(type(res),res)#<class 'str'> {"age": 18}
'''要获得18'''
j_data = '{"age":18}'
res = json.loads(j_data)# 将字符串转化为字典通过key值就可以得到自己想要的数据
print(res['age'])

4.6csv的读写操作

csv是一种文件的格式,在该类型的文件中一般会保存多个数据信息的内容,但是每一个数据信息一定都有各自组成的部分(开发者定义),用这样的文件进行数据采集内容的记录
在i般的数据采集系统之中,往往会有两个不痛的系统架构:数据采集系统、数据分析系统,数据分析完成之后才会交给其他程序进行使用。或者公开一些数据的访问接口供他用户使用
流式离线

4.6.1列表操作对象,写入读取操作

import csv
import os

FILE_PATH = 'D:'+ os.sep +'order.csv'
HEADERS = ['用户','省份','城市','总额','数据']
def main():
    with open(FILE_PATH,'w',newline='',encoding='utf-8')as file:
        csv_file = csv.writer(file)
        csv_file.writerow(HEADERS)
        for num in range(20):
            csv_file.writerow(['%d'%num,'陕西','安康','%d'%(num*99),'%d'%(num*1)])
if __name__ == '__main__':
    main()
'''一行一行的创建读取对象'''
FILE_PATH = 'D:'+ os.sep +'order.csv'
HEADERS = ['用户','省份','城市','总额','数据']
def main():
    with open(FILE_PATH,mode='r',newline='',encoding='utf-8')as file:
        csv_file = csv.reader(file)
        header_row = next(csv_file)
        print(header_row)
        rows = [row for row in csv_file]
        print(rows) # 全部读取,如果文件过大可能会导致内存溢出
        # for row in csv_file:#所以采取一行一行的读取,读一行,处理一行
        #    print(row)
if __name__ == '__main__':
    main()

4.6.2字典操作对象,写入读取操作

import csv
import os

FILE_PATH = 'D:'+ os.sep +'order.csv'
HEADERS = ['用户','省份','城市','总额','数据']
def main():# 字典的key就是标题的名称
    orders_rows = [{'用户':'a','省份':'shanxi','城市':'ankang','总额':'522','数据':'252'}
                   ,{'用户':'b','省份':'shanxi','城市':'ankang','总额':'522','数据':'252'},
                   {'用户':'c','省份':'shanxi','城市':'ankang','总额':'522','数据':'252'}]
    with open(FILE_PATH,'w',newline='',encoding='utf-8')as file:
        csv_file = csv.DictWriter(file,HEADERS)#设置标题未写入
        csv_file.writeheader()#写入标题
        csv_file.writerows(orders_rows)
if __name__ == '__main__':
    main()
'''字典的读取'''
FILE_PATH = 'D:'+ os.sep +'order.csv'
HEADERS = ['用户','省份','城市','总额','数据']
def main():# 字典的key就是标题的名称
    with open(FILE_PATH,'r',newline='',encoding='utf-8')as file:
        csv_file = csv.DictReader(file)
        for row in csv_file:
            print(row.get('用户'),row.get('省份'))
if __name__ == '__main__':
    main()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python基础十:模块 的相关文章

  • python ADF检验

    前言 本文对ADF检验进行研究 python示例代码 不对概念进行分析介绍 Code import numpy as np import matplotlib pyplot as plt from statsmodels tsa statt
  • python基础十一:异常处理以及文件操作

    1 异常 1 1异常简介 程序在运行过程中可能会出现一些错误 比如 使用了不存在的索引 两个不同类型的数据相加 这些错误我们称之为异常 处理异常 程序运行时出现异常 目的并不是让我们的程序直接终止 Python是希望在出现异常时 我们可以编
  • python进阶:线程、进程和协程

    前言 线程 进程和协程都是实现多任务 同一时间可以做多个事情就叫做多任务 的方法 并发 一段时间内做不同的事情 比如一个人吃饭喝水 吃的时候不能喝 喝的时候不能吃 只有在一段时间 吃了再喝或者喝了在吃 并行 同一时间做不同的事情 比如边听音
  • Python——模拟退火在背包问题上的运用(详细代码)

    一 模拟退火简介 二 详细代码 import math import random import matplotlib pyplot as plt def init population n 生成一个种群 个体为全排列的随机排列 popul
  • Numpy 向量化操作加速计算,解决向量外积求和慢的问题

    在计算函数二阶导的时候 我们通常需要计算Hessian 矩阵 此时会遇到向量外积求和的问题 i 1 n u i v i u i R n 1 v i R 1 n sum i 1 n u i v i u i in mathbb R n time
  • Python学习基础系列----了解python

    了解python 1 了解Python Python是一种解释型 这意味着开发过程中没有了编译这个环节 面向对象 支持面向对象的风格或代码封装在对象的编程技术 动态数据类型的交互式 可在命令行中通过Python提示符及直接代码执行程序 高级
  • 多台电脑环境下Python统一相同的库及对应版本

    工作时很容易遇到这种情况 就是公司电脑和个人电脑Python中对应的库的版本甚至种类不同 这样就可能导致用个人电脑编写的代码在公司电脑上跑不了 或者别的什么原因需要统一版本库 可以通过以下方式解决 当然有别的方式 例如Docker 首先 在
  • python进阶:python高级编程技巧(中)

    1 通过实例方法名字的字符串调用方法 getattr object name default None 得到一个对象中的name方法 如果没有则返回默认值 map func iterables 第一个传递函数名称 第二个传递一个可迭代的对象
  • python基础七:元组、字典、以及集合的使用

    1 元组简介 1 1元组的基本概念 元组表现形式tuple 元组是一个不可变序列 一般当我们希望数据不改变时 我们使用元组 其他情况下基本都用列表 使用 创建元素 元组不支持通过序列来修改元素 可以查找 元组不是空元组至少有一个 逗号 当元
  • [初学Python] IndentationError:unexpected indent

    在用Python实现求100以内的质数的编译程序或者说解释程序时出现了以下错误 根据编译后 解释后 的错误提示 说是num的 n 是一个IndentationError unexpected indent 什么意思呢 indentation
  • Python——beautiful,requests,歌单(多线程)

    目录 一 定义三个函数方便之后调用 1 由url获取soup函数 2 传入soup 进具体信息进行解析 3 由图片链接保存到本地 二 生产 消费主模块 精华部分 1 获取一个分类下的所有歌单的id 相当于生产者 2 对每个id 获取歌单的详
  • python基础一:计算机要点学习

    一 计算机的基本概念 1 计算机是什么 计算机是一种用于高速运算的电子机器 手机 电脑 计算器等 特点 数值计算 逻辑计算 对事物进行逻辑分析并进行判断得到的计算结果 存储记忆功能 计算机是能够按照程序运行 自动 高速处理数据的现代化电子设
  • Python——遗传算法简介及其在二次分配中的运用(含详细源代码)

    一 遗传算法简介 二 二次分配问题描述 三 Python代码实现 import math import random import matplotlib pyplot as plt def getPermutation n x n为全排列的
  • Numpy 通过矩阵操作避免for循环 之 [None, :, :]运用

    我们知道python中 for 循环的效率是不高的 相比之下 直接运用矩阵向量操作 如点乘 可以让代码运行更快 因为在复现paper时候遇到了这样的问题 在这里总结一下我的解决方法 None 介绍 通过None indexing 可以将一个
  • Python基础教程:第一门编程语言 第6章习题3 写一个猜数字小游戏,要能提示大了还是小了,并且有轮数限制。

    import random number random choice range 101 随机抽出0 100中一个数 guess 102 n 10 while guess number if n 0 限制次数 print 游戏失败 brea
  • python基础十:模块

    1 模块简介 模块化指将一个完整的程序分解成一个个的小模块 通过将模块组合 来搭建出一个完整的程序 模块化的优点 方便开发 方便维护 模块可以复用 2 模块的创建 在Python当中一个py文件就是一个模块 在一个模块中引入外部模块 imp
  • if 与elif

    if condition1 代码段1 if condition2 代码段2 else 代码段3 执行顺序 gt 进入if condition1 condition1 为true gt 执行 代码段1 gt 进入 if condition2
  • Python——协程(Coroutine),异步IO

    目录 生成器 Generator yield表达式的使用 生产者和消费者模型 编辑 yield from表达式 协程 Coroutine asyncio coroutine async await 总结 由于GIL的存在 导致Python多
  • python中for循环的用法_谈谈对Python爬虫的理解

    不知从何时起 Python这门语言和爬虫就像一对恋人 二者如胶似漆 形影不离 你中有我 我中有你 一提起爬虫 就会想到Python 一说起Python 就会想到人工智能 和爬虫 所以 一般说爬虫的时候 大部分程序员潜意识里都会联想为Pyth
  • python基础六:列表

    1 序列 1 1基本概念 序列就是python中最基本的一种数据结构 用于保存一组有序的数据 所有的数据在序列当中都会有唯一的一个位置 索引 与之对应 并且序列会按照数据添加的顺序来分配索引 1 2序列的分类 可变序列 序列中的元素可以改变

随机推荐

  • 【话题】感觉和身边其他人有差距怎么办?也许自我调整很重要

    每个人能力有限 水平高低不同 我们身在大环境里 虽然在同一个起跑线上 但是时间久了 你会发现 并越来越感觉到和身边其他人有了差距 慢慢的会有一定的落差感 怎么办呢 通过此篇文章我们来简单聊聊 目录 一 焦虑怎么办 1 接受自己的不完美 2
  • P1182 数列分段 Section II

    题目描述 对于给定的一个长度为N的正整数数列 A 现要将其分成 M M N 段 并要求每段连续 且每段和的最大值最小 关于最大值最小 例如一数列 4 2 4 5 1 要分成 3 段 将其如下分段 4 2 4 5 1 第 1 段和为 6 第
  • java jsonarray 追加_我们如何在Java中将JSONArray添加到JSONObject?

    该JSON是用于交换数据的基于文本的格式 它是轻量级的组件 与语言无关 我们还可以将JSONArray添加到JSONObject 我们需要首先将一些项目添加到ArrayList中 并将此列表传递给JSONArray类的put 方法 最后使用
  • go dll 传char*

    go调用dll中方法参数为 char类型 tiger1103 2017 12 25 10 58发布 1224浏览 问与答 我有一个dll库 里面有一个C实现的方法 int GetPeopleName char strTmp int strL
  • stateflow基础知识之(时序逻辑)

    stateflow状态转移和动作过程中 可以使用两种类型的时序逻辑 基于事件和绝对时间 基于事件的时序逻辑可跟踪重复发生的事件 绝对时间时序逻辑则基于 Stateflow 图的仿真时间定义时间段 要对这些重复事件或仿真时间进行操作 可以使用
  • 总结:对Java内存模型JMM的理解

    JMM规定了线程的工作内存和主内存的交互关系 以及线程之间的可见性和程序的执行顺序 一方面 要为程序员提供足够强的内存可见性保证 另一方面 对编译器和处理器的限制要尽可能地放松 JMM对程序员屏蔽了CPU以及OS内存的使用问题 能够使程序在
  • MySql的常见的语句总结

    目录 MySql的高级查询语句 数据准备 查询中常用的DISTINCT IN BETWEEN OR DESC ASC COUNT MAX LIMIT等关键字 SQL中关于日期的函数 SQL的分组查询和多表查询 sql的子查询以及UNION和
  • 【报错】 openai.error.RateLimitError: Rate limit reached for default-text-davinci-003 in organization

    使用open AI的API调用模型的时候 会出现以下报错 openai error RateLimitError Rate limit reached for default text davinci 003 in organization
  • mysql可扩展用户属性_MySQL扩展--可伸缩性最佳实践:来自eBay的经验

    在eBay 可伸缩性是我们每天奋力抵抗的一大架构压力 我们所做的每一项架构及设计决策 身前身后都能看到它的踪影 当我们面对的是全世界数以亿计的用户 每天的页面浏览量超过10亿 系统中的数据量要用皮字节 1015或250 来计算 可伸缩性是生
  • 解释器和编译器的区别

    解释器与编译器的区别 两者都是将高级语言转换成机器码 解释器在程序运行时将代码转换成机器码 编译器在程序运行之前将代码转换成机器码 编译器相当于做好一桌子菜再开吃 解释器就是吃火锅边煮边吃 吃火锅效率要低一点
  • CStatusBar技巧

    一 状态条控制的主要功能 状态条控制 Status Bar Control 比较容易理解 使用起来也比较简单 状态条是位于父窗口底部的一个水平子窗口 它可以被分成多个显示信息的小区域 其MFC中封装的CstatusBarCtrl控制类提供了
  • 加更一个小项目中的几个神奇的函数,tiff文件在matlab的读取和显示,以及如何在底图上画图和透明度设置

    项目需求 在地图tiff文件上画出轨迹和轨迹周围一定距离的范围 难点 tiff文件格式的读取 图片与经纬度之间的转换 图片具有透明度 在图片上作图 boston R geotiffread boston tif figure mapshow
  • ORB-SLAM2:基于可识别特征的自主导航与地图构建

    ORB SLAM2 基于可识别特征的自主导航与地图构建 ORB SLAM Tracking and Mapping Recognizable Features 转自 http blog csdn net cicibabe article d
  • Linux环境configure编译常用外部参数选项笔记

    Linux环境下的软件安装 并不是一件容易的事情 如果通过源代码编译后在安装 当然事情就更为复杂一些 现在安装各种软件的教程都非常普遍 但万变不离其中 对基础知识的扎实掌握 安装各种软件的问题就迎刃而解了 Configure脚本配置工具就是
  • 如何制作一份更具洞察力的商业BI报告?

    随着市场环境的复杂化 在数据分析中 能否提供更具商业洞察力的数据信息正在成为考核业务员能力的重要参考指标 加强以下两大块能力至关重要 1 业务相关专业能力以及相关知识 2 对工具的驾驭能力 大部分人在数据分析时使用的是Excel 而要把Ex
  • 【编译原理】实验二:NFA到DFA

    目录 实验二 NFA 到 DFA 一 实验目的 二 预备知识 三 实验内容 NFA向DFA的转换的思路 lt
  • 方板围棋吃子换001

    1 描述 130给定一个二维的矩阵 包含 X 和 O 字母 O 找到所有被 X 围绕的区域 并将这些区域里所有的 O 用 X 填充 示例 X X X X X O O X X X O X X O X X 运行你的函数后 矩阵变为 X X X
  • 速装jax

    jax可以理解为一个函数库 具有求导数的函数 1 建立一个环境 2 安装jax pip install upgrade jax jaxlib 0 1 74 f https storage googleapis com jax release
  • Unity3d中使用OnGUI()函数判断“键盘按下抬起”功能的新方法。

    private bool flagJudgeDownAllow true 开始值为true void OnGUI key Event current FunctionKeyCodeV1 key private void FunctionKe
  • python基础十:模块

    1 模块简介 模块化指将一个完整的程序分解成一个个的小模块 通过将模块组合 来搭建出一个完整的程序 模块化的优点 方便开发 方便维护 模块可以复用 2 模块的创建 在Python当中一个py文件就是一个模块 在一个模块中引入外部模块 imp