关于 Python 里 import *的问题

2015-05-12 15:28:04 +08:00
 tanteng

from adsl import *
比如这个,为什么要这样写?直接import adsl不就行了

3713 次点击
所在节点    Python
18 条回复
ladrift
2015-05-12 15:38:38 +08:00
import adsl
模块中的名字全部是adsl这个名字下的
比如调用adsl中的foo函数(举个栗子):
adsl.foo()
而from adsl import *
可以用
foo()
直接调用foo函数
tanteng
2015-05-12 15:45:34 +08:00
monsabre1
2015-05-12 15:48:29 +08:00
from adsl import *


这种不好
ladrift
2015-05-12 15:49:19 +08:00
@tanteng 推荐一个Python学习资源
http://www.fullstackpython.com/
共勉
tanteng
2015-05-12 15:57:38 +08:00
@monsabre1 理由?
mulog
2015-05-12 16:23:08 +08:00
@tanteng 污染 namespace, 而且你自己不知道 import 了些什么乱七八糟的进来
washinriver
2015-05-12 17:02:07 +08:00
一般写成 from adsl import func1,func2
方便,清楚.
binux
2015-05-12 17:03:15 +08:00
我知道我为什么写不出博客了。。
twor2
2015-05-12 17:30:27 +08:00
@binux 大神,对自己的要求太高
MrEggNoodle
2015-05-12 17:42:05 +08:00
@binux 哈哈哈。总觉得你这句话很幽默。
no13bus
2015-05-12 20:55:46 +08:00
@binux 哈哈。其实我觉得他是没有把这个页面右上方那些基础书籍看一遍,有些基础的知识在书里面是找的到的。
lcqtdwj
2015-05-12 21:50:21 +08:00
产品一般不会 from XXX import *,因为会污染命名空间,locals()看一下,如果有相同名字可能就冲突了。一般在ipyhton里图省事这样写。
laike9m
2015-05-12 22:01:04 +08:00
@binux 可以写非技术的啊( ゚∀゚)o彡゚
fatpa
2015-05-12 22:36:38 +08:00
可怕!
mingyun
2015-05-12 22:37:46 +08:00
污染命名空间
beibeijia
2015-05-12 22:47:18 +08:00
一般这么用也就是图个方便 特别是学习和测试的时候 比如pyqt from PyQt4.QtGui import * 这样调用的时候 直接QWidget() QPushButton() 否则 PyQt4.QtGui.QWidget() PyQt4.QtGui.QPushbutton() 每次这么写太麻烦了 不过正式写程序搞项目的时候这种写法还是应该少用 就像楼上说的会污染命名空间 像这样导入三个以上的模块 如果其中有命名发生重叠 你调用的方法或者变量就有可能不是你想要的 最终有可能导致程序崩溃或者不按照你想要的方式执行 关于这方面卤煮可以去看看《python学习手册》这里对核心知识的一些细节讲的还是比较到位的。
tanteng
2015-05-12 23:43:50 +08:00
@fatpa import *这样用不好是吧
enotx
2015-05-13 00:10:53 +08:00
@tanteng 是的,简单来说就是不要用from xxx import *,宁愿import xxx

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/190456

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX