Python 的模块导入import? 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"

c.py

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

def say():
    print("这是c文件")
# 方法只用写属性名
__all__ = ['A', 'say', 'c']

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
不正确。在 Python 中,不推荐使用 "from <模块> import * "这种形式导入模块。这种方式会导致命空间污染和命冲突的问题,不利于代码的维护和可读性。 推荐的做法是使用 "import <模块>" 或 "import <模块> as <别>" 这种形式导入模块,并使用模块或别来访问模块中的函数和变量。例如: ```python import math print(math.pi) # 输出:3.141592653589793 ``` 在这个例子中,我们使用 "import math" 的形式导入Python 标准库中的 math 模块,然后使用模块 "math" 来访问模块中的常量 pi。 如果要导入模块中的某个函数或变量,也可以使用 "from <模块> import <函数或变量>" 的形式。例如: ```python from math import pi print(pi) # 输出:3.141592653589793 ``` 在这个例子中,我们使用 "from math import pi" 的形式导入了 math 模块中的常量 pi,然后直接使用变量 "pi" 来访问这个常量。这种形式可以减少代码中的冗余,提高代码的可读性和可维护性。 需要注意的是,当模块中的称与当前命空间中的称冲突时,可以使用 "import <模块> as <别>" 的形式给模块起一个别,避免命冲突。例如: ```python import math as m print(m.pi) # 输出:3.141592653589793 ``` 在这个例子中,我们使用 "import math as m" 的形式给 math 模块起了一个别 "m",然后使用别 "m" 来访问模块中的常量 pi。这样,即使当前命空间中存在与模块同的变量,也不会产生命冲突的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值