python 关于import

千纪
  • 4
新手上路,请多包涵

突然想到个问题,当我一个工具文件module_name中有很多方法,在另一个py文件中需要用到,那么我有三个方法

from module_name import *
import module_name
from module_name import fun

但是在这个py文件中我一定不会都用到,并且有些方法只需要修改一些小地方,但有些工具方法之间嵌套,那么是不是第一种*最优雅?直接覆盖重写就好?
比如这样嵌套

def f1(x):
    print(x)
    
def f2(x):
    f1(x)

如果我不想在py文件种打印,那么我直接在重写py文件中重写f1就行,但如果不用*,就要或多或少的多修改很多东西。
那么,是不是还是import * 最舒服?

回复
阅读 294
1 个回答
✓ 已被采纳

from * import func,*

这种方式导入的任何函数,你“重写”的时候,只是重新定义了一个函数,并在当前命名空间内把func这个名字指向新函数对象罢了,看起来是把原来的函数“覆盖”了,其实对你导入的那些对象没影响。就比如这样一个对象A:

A.x=1
A.y=2

i=A.x
i=3 #一般情况下,A.x的值并不会变。

i=A
i.y=3 #这样A.y就变了

python中一切皆对象,module也是。如果你想自己的修改对原模块内部起作用,就要把模块整体导入,修改它内部对象module_name.x。

你知道吗?

宣传栏