python入门之后须掌握的知识点(模块化编程、时间模块)【一】
相关文章:
全网最详细超长python学习笔记、14章节知识点很全面十分详细,快速入门,只用看这一篇你就学会了!
python入门合集:
python快速入门【三】-----For 循环、While 循环
python入门之后须掌握的知识点(excel文件处理+邮件发送+实战:批量化发工资条)【2】
1 模块化
好处:
●提高了代码的可维护性
●避免函数名和变量名冲突
分类:
●内置标准模块(又 称标准库)
●第三方开源模块
●自定义模块
1.1 自定义模块
新建:
def test():
print("调用")
print("调用了")
import python1
python1.test()
调用了
调用
不同目录下调用:会报错 No module xxx
import sys
print(sys.path)
'e:\\360MoveData\\Users\\小丁\\Desktop\\test\\temp',
'H:\\Anaconda3-2020.02\\envs\\parl2\\python38.zip',
'H:\\Anaconda3-2020.02\\envs\\parl2\\DLLs',
'H:\\Anaconda3-2020.02\\envs\\parl2\\lib',
'H:\\Anaconda3-2020.02\\envs\\parl2',
'H:\\Anaconda3-2020.02\\envs\\parl2\\lib\\site-packages'
可以看到首先是我在解释器parl2,其次是当前文件所在的目录
添加路径:给列表添加指定路径即可【但路径是绝对路径】
import sys
addpath='e:\\360MoveData\\Users\\小丁\\Desktop\\test'
sys.path.append(addpath)
print(sys.path)
'e:\\360MoveData\\Users\\小丁\\Desktop\\test\\temp',
'H:\\Anaconda3-2020.02\\envs\\parl2\\python38.zip',
'H:\\Anaconda3-2020.02\\envs\\parl2\\DLLs',
'H:\\Anaconda3-2020.02\\envs\\parl2\\lib',
'H:\\Anaconda3-2020.02\\envs\\parl2',
'H:\\Anaconda3-2020.02\\envs\\parl2\\lib\\site-packages',
'e:\\360MoveData\\Users\\小丁\\Desktop\\test'
但绝对路径可移植很差,可以写成动态的
import sys
import os
addpath='e:\\360MoveData\\Users\\小丁\\Desktop\\test'
print(__file__) #打印当前脚本文件路径
print(os.path.dirname(__file__)) #只保留目录名
print(os.path.dirname(os.path.dirname(__file__)))
sys.path.append(addpath)
e:\360MoveData\Users\小丁\Desktop\test\temp\模块导入2.py
e:\360MoveData\Users\小丁\Desktop\test\temp
e:\360MoveData\Users\小丁\Desktop\test
最终改成动态的为:
import sys
import os
# addpath='e:\\360MoveData\\Users\\小丁\\Desktop\\test'
print(__file__) #打印当前脚本文件路径
print(os.path.dirname(__file__))
base_path=os.path.dirname(os.path.dirname(__file__))
sys.path.append(base_path)
import python1
调用了
1.2 包的使用
一个包就是一个文件夹,根据业务线分类不同创建不同目录文件。
在文件夹下创建一个名字为:__init__.py python文件即可
创建包:并在子目录下创建py文件demo
跨包导入【demo1中导入demo2】
在pycharm中直接这样就可以,路径会自动添加
import sys
from test.b.b2 import demo2
调用了
在vscode执行需要添加路径,再调用包
import sys
import os
# base_path=os.path.dirname(os.path.dirname(__file__))
base_path='e:\\360MoveData\\Users\\小丁\\Desktop\\test'
# print(__file__)
sys.path.append(base_path)
from b.b2 import demo2
动态写法:就是dirname三次:
其中只要调用了b2文件就会执行其目录下的init文件,以及b __init__都会执行
1.3 os&sys模块
常用模块列举:
sys主要用:
import sys
sys.path #获取系统变量
sys.argv #脚本参数
2 时间处理模块
2.1 time
●time.localtime([secs1]):将一个时间戳转换为当前时区的struct_ time。若secs参 数未提供,
则以当前时间为准。
import time
print(time.localtime())
time.struct_time(tm_year=2022, tm_mon=4, tm_mday=10, tm_hour=13, tm_min=29, tm_sec=21, tm_wday=6, tm_yday=100, tm_isdst=0)
●time.gmtime( [secs]) :和localtime(方法类似,gmtime()方 法是将一个时间戳转换为UTC时区
(0时区)的struct _time。
●time. time():返回当前时间的时间戳。
●time .mktime(t):将一个struct_ time转化为时间戳。
●time. sleep(secs) :线程推迟指定的时间运行,单位为秒。
import time
s_time = time. time()
time. sleep(3)
print(f"cost { time. time() - s_time}")
时间花费3秒
●time.strftime(format[,t]):把一个代表时间的元组或者struct_time (如由
time.localtime()和time.gmtime(返回)转化为格式化的时间字符串。如果t未指定,将传入
time.localtime()。
print(time.strftime("%Y %m/%d %H:%M:%S") ) 2022 04/10 13:36:46
●time.strptime(string[, format]): 把一个格式化时间字符串转化为struct_ time。 实际上它
和strftime()是逆操作。
- 举例: time.strptime( '2017-10-3 17:54' , "8Y-8m-8d 8H:8M") #输出time.struct_ time(tm_ year=2017, tm_ mon=10, tm_ mday=3, tm_ hour=17, tm_ min=54,tm_ sec=0, tm_ wday=1, tm_ yday=276, tm_ isdst=-1)
- 字符串转时间格式对应表
2.2 datetime模块
d =datetime. datetime. now( )
print(d + datetime. timedelta(5))
print(d + datetime. timedelta(hours=5))
2022-04-15 13:53:42.117113
2022-04-10 18:53:42.117113
3.随机模块
3.1 random
3.2 json模块
- JSON⽀支持的数据类型
Python中的字符串串、数字、列列表、字典、集合、布尔 类型,都可以被序列列化成JSON字符串串,被其它任
何编程语⾔言解析
- 什么是序列列化?
序列列化是指把内存⾥里里的数据类型转变成字符串串,以使其能存储到硬盘或通过⽹网络传输到远程,因为硬盘
或⽹网络传输时只能接受bytes
- 为什么要序列列化?
你打游戏过程中,打累了了,停下来,关掉游戏、想过2天再玩, 2天之后,游戏⼜又从你上次停⽌止的地⽅方继续运⾏行行,你上次游戏的进度肯定保存在硬盘上了了,是以何种形式呢?游戏过程中产⽣生的很多临时数据是不不规律律的,可能在你关掉游戏时正好有10个列列表, 3个嵌套字典的数据集合在内存⾥里里,需要存下来?你如何存?把列列表变成⽂文件⾥里里的多⾏行行多列列形式?那嵌套字典呢?根本没法存。所以,若是有种办法可以直接把内存数据存到硬盘上,下次程序再启动,再从硬盘上读回来,还是原来的格式的话,那是极好的。
- 用于序列列化的两个模块
- json,⽤用于字符串串 和 python数据类型间进⾏行行转换
- pickle,⽤用于python特有的类型 和 python的数据类型间进⾏行行转换
json vs pickle:
JSON:
优点:跨语⾔言(不不同语⾔言间的数据传递可⽤用json交接)、体积⼩小
缺点:只能⽀支持int\str\list\tuple\dict
Pickle:
优点:专为python设计,⽀支持python所有的数据类型
缺点:只能在python中使⽤用,存储数据占空间⼤大
python入门之后须掌握的知识点(模块化编程、时间模块)【一】的更多相关文章
- Python 入门之数据类型之间的相互转换 以及 在编程中会遇到的数据类型的坑
Python 入门之数据类型之间的相互转换 以及 在编程中会遇到的数据类型的坑 1.数据类型总结: 可变,不可变,有序,无序 (1)可变的数据类型:list dict set (2)不可变的数据类型: ...
- Javascript模块化编程:模块的写法
声明:本文转载自:阮一峰的网络日志,原文地址http://www.ruanyifeng.com/blog/2012/10/javascript_module.html,http://www.ruany ...
- python 全栈开发,Day27(复习, defaultdict,Counter,时间模块,random模块,sys模块)
一.复习 看下面一段代码,假如运行结果有问题,那么就需要在每一步计算时,打印一下结果 b = 1 c = 2 d = 3 a = b+c print(a) e = a + d print(e) 执行输 ...
- Javascript模块化编程(一)模块的写法最佳实践六、输入全局变量 独立性是模块的重要特点,模块内部最好不与程序的其他部分直接交互。 为了在模块内部调用全局变量,必须显式地将其他变量输入模块。
Javascript模块化编程,已经成为一个迫切的需求.理想情况下,开发者只需要实现核心的业务逻辑,其他都可以加载别人已经写好的模块但是,Javascript不是一种模块化编程语言,它不支持类clas ...
- Javascript模块化编程(一)模块的写法最佳实践
Javascript模块化编程,已经成为一个迫切的需求.理想情况下,开发者只需要实现核心的业务逻辑,其他都可以加载别人已经写好的模块但是,Javascript不是一种模块化编程语言,它不支持类clas ...
- python入门教程之二十二网络编程
Python 提供了两个级别访问的网络服务.: 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口的全部方法. 高级别的网络 ...
- Python 入门基础15 --shutil、shelve、log常用模块2、项目结构
今日内容: 一.常用模块 2019.04.10 更新 1.time:时间 2.calendar:日历 3.datatime:可以运算的时间 4.sys:系统 5.os:操作系统 6.os.path:系 ...
- 老鸟的Python入门教程
转自老鸟的Python入门教程 重要说明 这不是给编程新手准备的教程,如果您入行编程不久,或者还没有使用过1到2门编程语言,请移步!这是有一定编程经验的人准备的.最好是熟知Java或C,懂得命令行,S ...
- 核心知识点:python入门
目录 一.python入门day1-day24 day01-03 编程语言 day04 变量 day05 垃圾回收机制(GC机制) 1 引用计数 2 标记清除 3 分代回收 day05 程序交互与基本 ...
- Python基本语法[二],python入门到精通[四]
在上一篇博客Python基本语法,python入门到精通[二]已经为大家简单介绍了一下python的基本语法,上一篇博客的基本语法只是一个预览版的,目的是让大家对python的基本语法有个大概的了解. ...
随机推荐
- Go--append()
作用:在原切片的末尾添加元素 实例: package main import "fmt" func main() { s1 := []int{} fmt.Printf(" ...
- MIR7创建预制发票BAPI
1.事务代码MIR7 前台输入采购订单等相关字段进行开票 2.代码实现 调用BAPI:BAPI_INCOMINGINVOICE_PARK创建发票 "--------------------@ ...
- 4、SpringBoot连接数据库引入druid
系列导航 springBoot项目打jar包 1.springboot工程新建(单模块) 2.springboot创建多模块工程 3.springboot连接数据库 4.SpringBoot连接数据库 ...
- linux ntp时间服务器搭建
工作中经验遇到搭建时间服务器的任务,如何搭建网上找的例子总是有些许问题,如下自己动手操作一遍总结一下,方便自己和后来人直接上手使用. 准备工作:192.168.0.1 服务端: ntp服务器192 ...
- P1854-DP【绿】
首先通过这道题我收获了一个知识,那就是deque可以直接赋值,作用和vector类似就是复制一个一摸一样的deque,很好用,越来越发现deque眉清目秀了起来.以后deque可能是我最常用的STL结 ...
- STM32CubeMX教程19 I2C - MPU6050驱动
1.准备材料 正点原子stm32f407探索者开发板V2.4 STM32CubeMX软件(Version 6.10.0) 野火DAP仿真器 keil µVision5 IDE(MDK-Arm) ST- ...
- VSCODE中GIT配置
1.问题:无法正常提交 问题描述 *使用vscode提交就会一直卡住**. 参考方案链接:VS CODE GIT 500 问题处理-pudn.com 根据这位博主的描述,应当是设置的这里选择的默认选项 ...
- MySQL复习——20211027
MYSQL MySQL创建数据库 我们可以在登录MySQL服务后,使用create命令创建数据库,语法如下: CREATE DATABASE 数据库名; 使用root用户登录,root用户拥有最高权限 ...
- [转帖]【split】Linux上用 split实现大文件的拆分和合并
https://www.jianshu.com/p/87748b8563a9 有没有遇到某些网站上传复件时,单个文件有大小限制,导致上传失败呢?当然你可以采用更高的压缩率重新生成压缩包来解决,但如果还 ...
- [转帖]NUMA导致的Oracle性能问题
https://www.cnblogs.com/realcp1018/p/6903721.html 背景简介: Oracle版本:11.2.0.4 OS 版本:OEL5.8 在一次Oracle的Dat ...