坑啊!为什么不建议用 from xxx import *!

a39cab317428f597662706234ed516b7.png

人生苦短,菜鸟学Python!

大家好,我是菜鸟哥,为啥我经常跟粉丝讲不要用from xx import * ,看起来很酷很省事,其实坑很多,今天我们就来说说。

b9382f5e59a93c32e455ef281046bbc4.png
▲图片作者:Andrew Zhu

其中导入模块有两种常用方法 :import 语句和 from … import 语句。


1、import语句

import语句会导入指定模块中所有的方法,当你需要大量使用该模块中的不同方法时,这种方式很适合你。

import 模块名

此时,当你使用该模块中的方法,则需要在方法名前面加上模块名的前缀。

import math
math.pow(2,4)

2、from…import语句

如果你只需要使用某个模块中的少数方法,推荐使用from…import语句导入相应的模块。

from 模块名 import 方法名

此时,当你调用模块中的方法时,就不需要在方法名前面添加模块名的前缀。

from math import pow, log
pow(2,4)
log(32,2)

有时候,当你导入的模块名太长,可为它指定一个别名。

1666ecde706a5c867a4596d8519e8f69.png

别名是模块的另一个名称,类似于外号,语法格式如下所示。

import pandas as pd

我们导入了pandas模块,并指定其别名为pd。


如果使用from 模块名 import *,则表示导入该模块中所有的方法。

from math import *
pow(2,4)

注:使用单下划线“_”开头的模块变量或者函数是受保护的,在使用 from xxx import * 语句从模块中导入时这些变量或者函数不能被导入。

但是,这种用法有两个坑。第一点,正常我们只需看一下文件开头的import语句,就能清楚地知道Python代码中使用了哪些类,干净整洁,如果使用 from xxx import * 语句则会丢失该优点。

第二个坑,便是能引发名称方面的困惑。假如现在Python代码中要用到两个模块kxpython1kxpython2,而这两个模块都有test()函数,如果正常import语句并不会出现什么问题。

import kxpython1
import kxpython2

kxpython1.test(123456)
kxpython2.test(123456)

但是如果使用from xxx import *语句,就芭比Q了。

在交互式环境中输入如下命令:

from kxpython1 import *
from kxpython2 import *

test(123456)

你猜这时候,test()函数用的是哪个模块???

所以,自然会报错了。

df745a5d3f520e28d64a5847ebe30d20.jpeg

这就是我们不建议用 from xxx import * 的原因。虽然我们认为,两个模块有同名导出本身也许是个小概率事件,但能避免还是尽量避免。省得我们最后写Python代码10分钟,找BUG花了一整天。

人生苦短,我学Python!后续我们会继续分享更多的Python基础知识点。

 
 
 
 
 
 
推荐阅读:
入门: 最全的零基础学Python的问题  | 零基础学了8个月的Python  | 实战项目 |学Python就是这条捷径
干货:爬取豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析 |   从万众期待到口碑扑街!唐探3令人失望  | 笑看新倚天屠龙记 | 灯谜答题王 |用Python做个海量小姐姐素描图 |碟中谍这么火,我用机器学习做个迷你推荐系统电影
趣味:弹球游戏  | 九宫格  | 漂亮的花 | 两百行Python《天天酷跑》游戏!
AI: 会做诗的机器人 | 给图片上色 | 预测收入 | 碟中谍这么火,我用机器学习做个迷你推荐系统电影
小工具: Pdf转Word,轻松搞定表格和水印! | 一键把html网页保存为pdf!|  再见PDF提取收费! | 用90行代码打造最强PDF转换器,word、PPT、excel、markdown、html一键转换 | 制作一款钉钉低价机票提示器! |60行代码做了一个语音壁纸切换器天天看小姐姐!|

年度爆款文案

点阅读原文,看B站我的视频!

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当使用"from xxx import xxx"语句时出现错误"No module named 'xxxx'",这意味着编译器无法找到该模块。这可能是由于以下几种原因导致的: 1. 模块没有正确安装:请确保您已经正确地安装了相关的模块。您可以通过在终端或命令提示符下使用适当的包管理器来安装模块。 2. 模块名称拼写错误:请检查您的代码,确保模块名称的拼写是正确的。Python对大小写敏感,因此模块的名称必须与导入语句中使用的名称完全匹配。 3. 模块路径问题:有时候,模块可能位于您的Python解释器无法找到的位置。您可以尝试将模块所在的文件夹路径添加到Python的sys.path变量中,以便解释器可以找到该模块。 4. 版本兼容性问题:某些模块可能只与特定版本的Python兼容。请确保您正在使用与该模块兼容的Python版本,并在使用模块之前查看其文档以了解任何版本要求。 总结来说,当出现"from xxx import xxx"报错时,您应该检查模块的安装情况,确认模块名称的拼写正确,检查模块路径是否正确,并确保您正在使用与模块兼容的Python版本。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [python读取robot文件内容-RobotFrameWork读取excel等文件数据.pdf](https://download.csdn.net/download/qq_43934844/87511020)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [通用方法解决PyCharm中from ... import .... 导入出错的问题](https://blog.csdn.net/a19745131558/article/details/124835474)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [ExcelLibrary库安装](https://download.csdn.net/download/mhm20088002/85691829)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值