一日一技:如何在Python项目中挖坑害人

简介: 一日一技:如何在Python项目中挖坑害人

有不少人在写Python的时候,喜欢这样导入模块:

from re import *
text = 'adfa123adfasd'
num = findall('(\d+)', text)
print(num)

我今天要告诉你,你这样写就是在给自己挖坑。

我们来看一下这个坑是怎么样的:

首先你创建一个 main.py文件,内容如下:

import datetime
print(datetime.datetime.now())

现在我们运行一下,发现一切正常。

接下来,创建一个 bug.py,内容如下:

from datetime import datetime
def anyfunc():
    print(123)

接下来,修改 main.py,内容如下:

import datetime
from bug import anyfunc
anyfunc()
print(datetime.datetime.now())

此时,你会发现一切正常。如下图所示。


好了,我们来挖个坑,再次修改 main.py,改成下面这样:

import datetime
from bug import *
anyfunc()
print(datetime.datetime.now())

现在,函数 anyfunc正常运行,但是你会发现, datetime.datetime.now()报错了,如下图所示。

这是因为,当你 frombugimport*的时候,原来在 bug.py第一行的 fromdatetimeimportdatetime导入的 datetime.datetime对象也会被导入到 main.py中,此时由于 datetime.datetime对象和 datetime模块的名字相同,就会使得 datetime.datetime对象覆盖了原来的 datetime模块。所以就报错了。

由于一个大项目很多人合作,可能有些人喜欢

import datetime
datetime.datetime.now()
datetime.date.today()

有些人喜欢

from datetime import datetime, date, timedelta
datetime.now()
date.today()

如果再遇上一个人喜欢 fromxxximport*

那么恭喜你——卒。

珍爱生命,请禁止使用 fromxxximport*这种写法。

目录
相关文章
|
1月前
|
Python
Python项目配置Dockerfile
该Dockerfile基于阿里云Alinux3的Python 3.11.1镜像构建,使用阿里云PyPI镜像加速依赖安装,部署一个运行于5000端口、时区为上海的Python应用。
140 2
|
11天前
|
API 语音技术 开发者
Python 项目打包,并上传到 PyPI,分享项目
本文介绍了如何使用 Poetry 打包并发布一个 Python 项目至 PyPI。内容包括:项目创建、配置 `pyproject.toml` 文件、构建软件包、上传至 PyPI、安装与使用。通过实例 iGTTS 展示了从开发到发布的完整流程,帮助开发者快速分享自己的 Python 工具。
|
3月前
|
监控 大数据 API
Python 技术员实践指南:从项目落地到技术优化
本内容涵盖Python开发的实战项目、技术攻关与工程化实践,包括自动化脚本(日志分析系统)和Web后端(轻量化API服务)两大项目类型。通过使用正则表达式、Flask框架等技术,解决日志分析效率低与API服务性能优化等问题。同时深入探讨内存泄漏排查、CPU瓶颈优化,并提供团队协作规范与代码审查流程。延伸至AI、大数据及DevOps领域,如商品推荐系统、PySpark数据处理和Airflow任务编排,助力开发者全面提升从编码到架构的能力,积累高并发与大数据场景下的实战经验。
Python 技术员实践指南:从项目落地到技术优化
|
5月前
|
程序员 测试技术 开发工具
怎么开发Python第三方库?手把手教你参与开源项目!
大家好,我是程序员晚枫。本文将分享如何开发Python第三方库,并以我维护的开源项目 **popdf** 为例,指导参与开源贡献。Popdf是一个PDF操作库,支持PDF转Word、转图片、合并与加密等功能。文章涵盖从fork项目、本地开发、单元测试到提交PR的全流程,适合想了解开源贡献的开发者。欢迎访问[popdf](https://gitcode.com/python4office/popdf),一起交流学习!
205 21
怎么开发Python第三方库?手把手教你参与开源项目!
|
11月前
|
机器学习/深度学习 数据采集 数据可视化
Python 数据分析:从零开始构建你的数据科学项目
【10月更文挑战第9天】Python 数据分析:从零开始构建你的数据科学项目
218 2
|
8月前
|
测试技术 Python
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
352 31
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
|
6月前
|
Docker Python 容器
Docker——阿里云服务器使用Docker部署python项目全程小记
本文记录了我在阿里云服务器上使用Docker部署python项目(flask为例)的全过程,在这里记录和分享一下,希望可以给大家提供一些参考。
687 1
|
9月前
|
Python
课程设计项目之基于Python实现围棋游戏代码
游戏进去默认为九路玩法,当然也可以选择十三路或是十九路玩法 使用pycharam打开项目,pip安装模块并引用,然后运行即可, 代码每行都有详细的注释,可以做课程设计或者毕业设计项目参考
190 33
|
10月前
|
监控 安全 测试技术
如何在实际项目中应用Python Web开发的安全测试知识?
如何在实际项目中应用Python Web开发的安全测试知识?
178 61
|
10月前
|
存储 数据可视化 数据挖掘
Python数据分析项目:抖音短视频达人粉丝增长趋势
Python数据分析项目:抖音短视频达人粉丝增长趋势

推荐镜像

更多