当前位置:   article > 正文

Python 的模块导入import? from 模块名 import *_python里from import无需指定模块名吗

python里from import无需指定模块名吗

知识点:

  1. import 模块名
    一次导入模块中所有的属性和方法

  2. from 模块名 import *
    导入模块中__all__列表里面的所有对象内容
    使用时不用加模块名。

  3. from 模块名 import 对象1,对象2…
    导入模块中的对象1,对象2…,不受__all__列表的限制,即使不在__all__列表,import 后面存在这个对象也可以输出

以下是测试文件(都在同一个包下):

目录结构

  • package
    a.py
    b.py
    c.py

源代码
b.py

BB = "这是b.py的属性BB"
CC = "这是b.py的属性CC"
  • 1
  • 2

c.py

A = 2
b = 4
hh = 'hhhh'
c = 5

def say():
    print("这是c文件")
# 方法只用写属性名
__all__ = ['A', 'say', 'c']
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

a.py

print("以下测试案例学习说明,每一个测试例子以空行分开")
print("每次可以选择整个例子,并将注释取消即可运行")
print("============分割线=================")

 # 例1
 # 导入b 使用b.py 的属性
 import b
 # 可以使用模块b中所有的内容
 print(b.BB) 
 print(b.CC)

# # 例2
# # 导入c 使用c.py 的属性
# import c
# print(c.A) # 输出2
# print(c.b) # 输出4
# print(c.c) # "这是c文件"
# print(c.say())

# # 例3
# # 导入c 使用c.py 的属性  使用方法: 不用写 模块名.
# from c import *
# print(A)
# print(b) # 在这里我没有把上面的例1 (import b) 注释 所以当c中存在与当前模块同名属性b 优先运行当前模块拥有的属性 输出了b 的模块的绝对路径 不存在同名时输出模块c中属性名为b的值
# # print(hh) # 没有__all__ 列表中 说明 from ... import ... 只能将存在__all__ 列表中的对象导入
# print(c)
# say()

# # 例4
# # 选择性导入
# from c import A, say, hh
# # 注意:这里的hh 是不在__all__列表里面的
# print(A)
# print(hh)  # __all__列表中没有该对象 但还是可以输出
# say()  # 方法  导入只写方法名
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/657907
推荐阅读
相关标签
  

闽ICP备14008679号