请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

老师:为啥会输出d

老师:c7 是包 t的模块

c7

 __all__  = ['a','c'] 

a=2 

c=3 

d=4 

为啥 from t import * 

print (c7.d)

可以正常输出 4呢?

c7中不是只能输出a和c 么 ?

而 直接 from c7 import *  就无法 print(d)

这两者有什么区别

正在回答 回答被采纳积分+3

1回答

7七月 2017-12-02 08:22:22

你有加在__init__.py中吗 __all__这个

0 回复 有任何疑惑可以回复我~
  • 云霄9 #1
    老师,我也碰上了这个问题。具体设置是这样的:
    
    folder: Chapter8
        folder: t
            file: __init__.py: 
                code: __all__ = ['c1']
            file: c1.py:
                code:
                __all__ = ['a', 'c']
    
                a = "this is a in module t.c1"
                b = "this is b in module t.c1"
                c = "this is c in module t.c1"
            file: c2.py:
                code:
                f = "this is f in module t.c2"
        file: c3.py:
            code:
            from t import *
    
            print(c1.a)
            print(c1.b)
    
    final result:
    "this is a in module t.c1"
    "this is b in module t.c1"
    
    问题:
    使用 from t import * 时,c1.py中的__all__定义的['a', 'c']并没有起作用.
    所以b可以能被打印出来。
    如果换成from t.c1 import *时,c1.py中的__all__定义的['a', 'c']起作用
    所以b不能被打印出来。
    是不是__all__起作用的范围有什么规则?
    回复 有任何疑惑可以回复我~ 2018-05-31 16:25:19
  • 云霄9 #2
    咋加图片?T_T
    回复 有任何疑惑可以回复我~ 2018-05-31 16:26:11
  • 云霄9 #3
    我重新提交了一个问题:https://coding.imooc.com/learn/questiondetail/61183.html
    谢谢老师!
    回复 有任何疑惑可以回复我~ 2018-05-31 16:40:49
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信