好的,按照我们平常的惯例,我先来讲一下今天这节课的内容,以及Java和Python在某些方面的相似之处。Python使用import语句来导入包,而Java也是如此。然而,两者之间的区别在于Python没有类路径的概念,它直接使用.py文件的文件名作为导入路径,并将其余的工作交给Python解释器来扫描和处理。另外,你可能经常看到有人使用from..import语句,这种语法是为了从.py文件中只导入部分函数或变量而设计的。也可能是导致不同包目录的情况

自定义模块

我来举一个在Java开发中常用的开发方式作为例子。在我们进行项目开发时,通常会在项目的结构中创建一个util包,用于存放一些工具类。同样,Python也可以采用类似的方式来组织代码结构,让大家更容易理解。

在同目录下

如果你想在在同目录下创建一个nameUtil.py文件,并不想另外创建一个util包的话,也可以,我们可以演示一下。以下是nameUtil.py的简单内容:

name = "xiaoyu"

def getName(name):
print(f"我的名字是{name}")

在执行的Python文件(main.py)中,可以直接使用import语句来引入其他模块。例如:

import nameUtil

name = "xiaoyu"
nameUtil.getName(nameUtil.name) # 可将nameUtil.name替换成name

可以使用from..import语句优化一下上面的内容:

from nameUtil import getName

getName("xiaoyu")

这种情况是最简单的。当你想要导入某个包的时候,你可能会想,为什么我可以直接导入,而不需要在同目录下引入各种第三方包呢?实际上,这和Java是一样的。Python也有固定的包扫描路径。比如,当我们导入第三方包时,Python会搜索第三方库的安装路径。这些路径通常是通过包管理工具(如pip)安装的。

不在同一目录下

如果我们将一些Python工具类单独放在一个名为"util"的目录中,这样可以更好地组织代码。这种做法符合规范,并且让我们的代码更易读、易维护。下面我将演示一下如何使用这种目录结构,唯一的区别是,你需要使用"from"语句来导入工具类,而不能简单地使用"import"语句。

目录结构如下:

main.py内容如下:

from utils import nameUtil

name = "xiaoyu"
nameUtil.getName(nameUtil.name) # 可将nameUtil.name替换成name

这就很像我们正常开发的模式了,因为在开发过程中,我们通常需要将模块按照不同的功能进行分级,并创建相应的包目录结构。这样,我们就可以像上面那样编写代码。如果有多层包目录,我们可以继续按照相同的方式导入模块,例如:from java.utils import nameUtil。感觉就像是回到了熟悉的开发环境,我们可以开始进行正常的开发工作了。

常用模块

我们将举一些在开发Java工作中常用的工具类,这些工具类同样适用于Python编程语言。

time

time模块:提供了与时间相关的函数和类,可以用来获取当前时间、格式化时间、计时等操作。在加密接口中,经常需要使用时间戳场景来确保数据的安全性。

获取当前时间戳:current_time = time.time()

将时间戳转换为可读时间:readable_time = time.ctime(current_time)

格式化时间:formatted_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(current_time))

程序休眠一定时间:time.sleep(2) # 程序暂停2秒

datetime

datetime模块是Python中提供的一个功能强大的模块,它包含了许多与日期和时间相关的函数和类,可以方便地进行日期和时间的计算、格式化等操作。在很多场景下,比如列表查询等,我们经常会用到日期模块的功能。

获取当前日期时间:current_datetime = datetime.datetime.now()

格式化日期时间:formatted_datetime = current_datetime.strftime("%Y-%m-%d %H:%M:%S")

计算两个日期之间的差值:time_difference = datetime.datetime(2022, 1, 1) - datetime.datetime(2021, 1, 1)

json

json模块在Python中提供了处理JSON数据的函数和类,它可以被广泛地应用于解析和生成JSON数据。在工作中,我们经常会遇到需要处理JSON数据的情况,所以我想详细解释一下它的用法。然而,需要注意的是,在某些特定的情况下,比如与微信开放者平台进行接口对接时,数据的传输形式可能会是XML格式。在我之前的工作经历中,就遇到过这样的情况,在与微信开放者平台对接时我也踩过一些坑,需要特别注意。

解析JSON字符串:

json_data = '{"name": "xiaoyu", "age": 30}'
parsed_data = json.loads(json_data) # 获取key的value值
name = parsed_data["name"]
age = parsed_data["age"]
print(name) # 输出:xiaoyu
print(age) # 输出:30 # 添加新的键值对
parsed_data["city"] = "China" print(parsed_data)

生成JSON字符串:data = {"name": "John", "age": 30} json_data = json.dumps(data)这里的data是对象,变量json_data就是一个包含了"name"和"age"键值对的JSON格式字符串。

os

os模块:提供了与操作系统相关的函数和类,可以用来进行文件和目录操作、进程管理等操作。如果你经常需要进行文件操作,不管是在学习还是工作中,了解和掌握os模块都是非常重要的。

获取当前工作目录:current_directory = os.getcwd()

创建目录:os.mkdir("new_directory")

判断文件或目录是否存在:exists = os.path.exists("file.txt")

sys

sys模块:提供了与Python解释器和系统相关的函数和变量,可以用来获取命令行参数、退出程序等操作。这在开发中非常有用,尤其是当我们需要与系统进行交互时。

获取命令行参数:arguments = sys.argv

退出程序:sys.exit()

总结

在导入包方面,两者都使用import语句,但是Python没有类路径的概念,直接使用文件名来导入模块。我们还讨论了自定义模块的创建和使用,以及在不同目录下如何组织代码结构。此外,我们介绍了一些常用的Python模块,包括time、datetime、json、os和sys,它们在开发中非常实用。希望今天的课程对大家有所帮助!

🔥🔥Java开发者的Python快速进修指南:自定义模块及常用模块的更多相关文章

  1. 进击的Python【第五章】:Python的高级应用(二)常用模块

    Python的高级应用(二)常用模块学习 本章学习要点: Python模块的定义 time &datetime模块 random模块 os模块 sys模块 shutil模块 ConfigPar ...

  2. Python模块之常用模块,反射以及正则表达式

    常用模块  1. OS模块 用于提供系统级别的操作,系统目录,文件,路径,环境变量等 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("di ...

  3. 《Python》内置方法进阶和常用模块

    一:__new__ 在__init__之前,实例化对象的第一步是__new__创建了一个空间 class Foo: def __init__(self): # 初始化方法 print('执行了init ...

  4. JAVA开发者的Golang快速指南

    Golang作为Docker.Kubernetes和OpenShift等一些酷辣新技术的首选编程语言,越来越受欢迎.尤其它们都是开源的,很多情况下,开源是非常有价值的.深入学习阅Golang等源代码库 ...

  5. MessagePack Java 0.6.X 快速开始指南 - 安装

    0.6.x 版本的 MessagePack 已经过期被淘汰了.如果你现在开始使用 MessagePack 话,请不要使用这个版本. 我们再这里保留 0.6.x 版本的内容主要用于参考用途. 最新的 M ...

  6. 针对Quant的Python快速入门指南

    作者:用Python的交易员 (原创文章,转载请注明出处) 最近有越来越多的朋友在知乎或者QQ上问我如何学习入门Python,就目前需求来看,我需要写这么一篇指南. 针对整个vn.py框架的学习,整体 ...

  7. 老男孩python学习自修第十六天【常用模块之sys和os】

    例子: sys.argv 命令行参数List,第一个元素是程序本身路径 sys.exit(n) 退出程序,正常退出时exit(0) sys.version 获取Python解释程序的版本信息 sys. ...

  8. 第六篇:python基础_6 内置函数与常用模块(一)

    本篇内容 内置函数 匿名函数 re模块 time模块 random模块 os模块 sys模块 json与pickle模块 shelve模块 一. 内置函数 1.定义 内置函数又被称为工厂函数. 2.常 ...

  9. Python模块(一)(常用模块)

    1. 简单了解模块 写的每一个py文件都是一个模块. 还有一些我们一直在使用的模块 buildins 内置模块. print, input random 主要是和随机相关的内容 random()    ...

  10. python的进修之路

    PYTHON目录篇 本篇主要在个人学习python中的一些总结性的总线,包括python的基础,python的基础进阶,除了帮助和我一样学习python的同学,也是对自己的一种要求! python基础 ...

随机推荐

  1. 知识图谱(Knowledge Graph)- Neo4j 5.10.0 使用 - CQL - 太极拳传承谱系表

    删除数据库中以往的图 MATCH (n) DETACH DELETE n 创建节点 CREATE命令语法 Neo4j CQL"CREATE"命令用于创建没有属性的节点. 它只是创建 ...

  2. 震惊!CSS 也能实现碰撞检测?

    本文,我们将一起学习,使用纯 CSS,实现如下所示的动画效果: 上面的动画效果,非常有意思,核心有两点: 小球随机做 X.Y 方向的直线运动,并且能够实现碰撞到边界的时候,实现反弹效果 小球在碰撞边界 ...

  3. Python自定义终端命令

    在python中自定义一个终端命令 这里我们想要将一个csv文件中的数据导入到数据库中,就可以定义一个终端命令,直接一行命令就可以将我们文件中的数据导入到数据库中,特别的简单 首先,我们先创建一个py ...

  4. SQL注入——搜索型

    SQL注入-搜索型 搜索型注入-原理介绍 一些网站为了方便用户查找网站的资源,都对用户提供了搜索的功能,因为是搜索功能,往往是程序员在编写代码时都忽略了对其变量(参数)的过滤,而且这样的漏洞在国内的系 ...

  5. NAT模式LVS负载均衡集群

    NAT模式LVS负载均衡集群 负载调度器:内网 网关 ens33:192.168.1.200,外网 网关 ens36:12.0.0.10 Web节点服务器1:192.168.1.100 Web节点服务 ...

  6. 支持JDK19虚拟线程的web框架,之三:观察运行中的虚拟线程

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 本篇是<支持JDK19虚拟线程的web ...

  7. 【Qt6】列表模型——便捷类型

    前一篇水文中,老周演示了 QAbstractItemModel 抽象类的继承方法.其实,在 Qt 的库里面,QAbstractItemModel 类也派生了两个基类,能让开发者继承起来[稍稍]轻松一些 ...

  8. Solution -「营业」「ABC 170D」Not Divisible

    Description Link. 给出一个长度为 \(n\) 的序列 \(a\),求 \(\sum_{i=1}^{n}[\forall j\in[1,i)\cup(i,n],a_{j}\nmid a ...

  9. 常用设计模式(Java)

    目录 设计模式引入 1. 什么是设计模式 2. 学习设计模式的意义 3. 设计模式的基本要素 4. OOP七大原则 1.单例模式 1. 饿汉式单例 2. 懒汉式单例 3. 内部类实现单例 4. 反射会 ...

  10. 造轮子之ORM集成

    Dotnet的ORM千千万,还是喜欢用EF CORE 前面一些基础完成的差不多了,接下来可以集成数据库了,官方出品的ORM还是比较香.所以接下来就是来集成EF CORE. 安装包 首先我们需要安装一下 ...