pyrhon萌新# 发表于 2020-7-4 22:37:28

最近在学easygui,关于导入

上网搜easygui发现有人From eastgui import*
这和import easygui有区别吗?
麻烦大伙了*是什么模块?

Twilight6 发表于 2020-7-4 22:38:16

本帖最后由 Twilight6 于 2020-7-4 22:39 编辑



* 是导入模块内全部能导入的意思

from easygui import *

使用方法时候,不用带任何前缀

import easygui

使用方法时候,必须带上前缀 easygui

青出于蓝 发表于 2020-7-4 22:38:41

本帖最后由 青出于蓝 于 2020-7-5 08:06 编辑

from导入比直接import导入要全
*就是导入全部函数

pyrhon萌新# 发表于 2020-7-4 22:39:14

Twilight6 发表于 2020-7-4 22:38
* 是导入模块内全部能导入的意思

有区别吗

pyrhon萌新# 发表于 2020-7-4 22:39:45

青出于蓝 发表于 2020-7-4 22:38
from导入比直接import导入要全
*就是导入全部函数
甲鱼大力推荐from

仅仅又是from比import全吗

Twilight6 发表于 2020-7-4 22:39:52

pyrhon萌新# 发表于 2020-7-4 22:39
有区别吗

重新编辑了~ 你看看

Twilight6 发表于 2020-7-4 22:40:19

青出于蓝 发表于 2020-7-4 22:38
from导入比直接import导入要全
*就是导入全部函数
甲鱼大力推荐from

甲鱼哥并不大力推荐 这种导入!

他推荐的是 用 as 来替代前缀的那种导入

青出于蓝 发表于 2020-7-4 22:42:03

各有利弊吧,这from导入的全面啊,相对简洁。
但是from导入内部函数容易被当做函数覆盖。
而import有as,也相对好用。
我喜欢from,甲鱼在tkinter都用的from(我记得)

青出于蓝 发表于 2020-7-4 22:43:00

https://www.cnblogs.com/jcjc/p/11553703.html

Twilight6 发表于 2020-7-4 22:43:26

pyrhon萌新# 发表于 2020-7-4 22:39
仅仅又是from比import全吗


from 可以从某个 模块单独导入某种方法,如果是 * 那么导入可以导入的方法,但是很有可能有许多方法还是没有导入比如 tkinter 的许多组件

import 比 from 导入的更多,但是就是前缀都要带上模块名,或者 as 后的替代名

Twilight6 发表于 2020-7-4 22:44:29

青出于蓝 发表于 2020-7-4 22:43
https://www.cnblogs.com/jcjc/p/11553703.html



自己的都查出来为什么了:

为什么不建议使用 “from * import ”
  在实战中, “from module import * ” 不是良好的编程风格,如果使用 from 导入变量,且那些变量碰巧和作用域中现有的变量名同名,那么变量就会悄悄覆盖掉,使用 import 语句时后就不会发生着中问题,因为我们是通过模块名才获取的变量名,像 module attr 不会和现有的作用域的 attr 冲突。

青出于蓝 发表于 2020-7-4 22:45:20

Twilight6 发表于 2020-7-4 22:43
from 可以从某个 模块单独导入某种方法,如果是 * 那么导入可以导入的方法,但是很有可能有许多方法还 ...

tkinter第二课我记得非常清楚,甲鱼老湿说有些模块import导入不全,建议用from导入。
所以甲鱼老湿就用的from导入的tkinter

Twilight6 发表于 2020-7-4 22:45:24

青出于蓝 发表于 2020-7-4 22:42
各有利弊吧,这from导入的全面啊,相对简洁。
但是from导入内部函数容易被当做函数覆盖。
而import有as, ...

import 导入全面,from 导入并不全面

青出于蓝 发表于 2020-7-4 22:46:13

随个人喜好吧,这两个都行,利弊我也都说了。我建议推荐from导入

Twilight6 发表于 2020-7-4 22:46:38

青出于蓝 发表于 2020-7-4 22:45
tkinter第二课我记得非常清楚,甲鱼老湿说有些模块import导入不全,建议用from导入。
所以甲鱼老湿就用 ...



晕,{:10_262:} 不多说了,总而言之 from xxx import * 这种导入方式不是不推荐,就是有些地方需要注意

txxcat 发表于 2020-7-5 00:40:10

    老版书第13章147页小甲鱼对from xxx import *说得很清楚:强烈要求大家不要使用这种方法,因为这样做会使得命名空间得优势荡然无存,一不小心还会陷入名字混乱的局面。
    小甲鱼大陆推崇的是:import xxx as y 这种使用别名的方式,例如:
import easygui as g
g.msgbox()
    之所以tkinter为什么用from tkinter import *,主要是因为tkinter是内置模块,在命名方面已经充分考虑到了重名冲突问题,所以这样用没什么问题,但是对于广大的第三方包以及自己写的代码,为了不必要的麻烦,避免这样导入。

_荟桐_ 发表于 2020-7-5 12:26:09

用from easygui import *时,调用函数直接 msgbox()就行
用import easygui,调用函数用easygui.msgbox()
用import easygui as g,调用函数用g.msgbox()

_荟桐_ 发表于 2020-7-5 12:28:52

*不是模块,是一个通配符
表示匹配“所有”

from easygui import *
就是导入easygui的“所有”
同理,from easygui import msgbox就是导入easygui里的msgbox函数

pyrhon萌新# 发表于 2020-7-5 13:11:06

_荟桐_ 发表于 2020-7-5 12:28
*不是模块,是一个通配符
表示匹配“所有”



from就是指文件夹对吗

_荟桐_ 发表于 2020-7-5 13:35:55

pyrhon萌新# 发表于 2020-7-5 13:11
from就是指文件夹对吗

不是文件夹,就是一个命令
页: [1] 2
查看完整版本: 最近在学easygui,关于导入