一日一技:如何在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*这种写法。

目录
相关文章
|
16天前
|
Linux 数据库管理 Python
CentOS7编译安装Python3.10(含OpenSSL1.1.1安装),创建虚拟环境,运行Django项目(含sqlite版本报错)
CentOS7编译安装Python3.10(含OpenSSL1.1.1安装),创建虚拟环境,运行Django项目(含sqlite版本报错)
97 4
|
11天前
|
前端开发 JavaScript 数据安全/隐私保护
计算机Python项目|django学生成绩管理系统
计算机Python项目|django学生成绩管理系统
|
14天前
|
Java Serverless 应用服务中间件
Serverless 应用引擎操作报错合集之部署python项目时,构建过程报错,怎么解决
Serverless 应用引擎(SAE)是阿里云提供的Serverless PaaS平台,支持Spring Cloud、Dubbo、HSF等主流微服务框架,简化应用的部署、运维和弹性伸缩。在使用SAE过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
10天前
|
监控 数据可视化 数据库
【python项目推荐】键盘监控--统计打字频率
【python项目推荐】键盘监控--统计打字频率
43 13
|
22小时前
|
Python
Pycharm为Python项目配置环境不生效,解决办法
在PyCharm中,项目依赖配置更改后未生效。解决步骤包括:1) 查找`C:\Users\username\AppData\Roaming\JetBrains\PyCharm2022.2\options\jdk.table.xml`,2) 删除`<jdk></jdk>`标签内的旧配置内容,然后重启PyCharm以应用新目录。
7 0
Pycharm为Python项目配置环境不生效,解决办法
|
8天前
|
分布式计算 DataWorks 调度
阿里云DataWorks-部署自定义python项目问题
阿里云DataWorks-多种方式部署自定义python项目并进行调度
|
9天前
|
存储 Linux Docker
python项目 以docker形式打包部署全流程
在很久很久以前,我已经听过Docker的大名,当时服务着急上线虽然考虑过用Docker来部署我的服务,但是因为赶期的原因放弃了。 这两天因为华为云服务器到期,而且阿里云服务器优惠力度特别大的原因,我要把华为云服务器里的工程迁移到阿里云。 迁移的过程中,大量的时间精力浪费在了重装python,加载依赖,迁移项目,配置端口等环境配置的工作上。 我在想,如果当时用了Docker部署,我至于受这气?
|
10天前
|
小程序 前端开发 JavaScript
计算机Python项目|django傣族节日及民间故事推广小程序
计算机Python项目|django傣族节日及民间故事推广小程序
|
11天前
|
机器学习/深度学习 传感器 算法
基于Mediapipe深度学习算法的手势识别系统【含python源码+PyqtUI界面+原理详解】-python手势识别 深度学习实战项目
基于Mediapipe深度学习算法的手势识别系统【含python源码+PyqtUI界面+原理详解】-python手势识别 深度学习实战项目
|
16天前
|
机器学习/深度学习 数据可视化 API
Python适合做哪些类型的项目?
【6月更文挑战第9天】Python适合做哪些类型的项目?
12 2