首页 新闻 会员 周边

from dir1.dir2. import b2 会导入dir1和dir2吗

0
[已关闭问题] 关闭于 2026-07-14 09:49

您好!您问题中的“回到如”应该是拼音输入法导致的笔误,您想问的应该是:**“会导入 dir1 和 dir2 吗?”**

答案是:**底层机制上会导入(加载)它们,但在你当前的代码命名空间中,不能直接使用它们的名字。**

我们可以从以下两个层面来详细理解:

### 1. 从“底层加载”的角度:**会导入**
当你执行 `from dir1.dir2 import b2` 时,Python 解释器在底层必须经过 `dir1` 和 `dir2`,因此会做以下工作:
* 找到 `dir1` 包,如果里面有 `__init__.py` 文件,Python **会执行它**。
* 找到 `dir2` 包,如果里面有 `__init__.py` 文件,Python **也会执行它**。
* `dir1` 和 `dir1.dir2` 都会被加载到 Python 的内存中(记录在 `sys.modules` 字典里)。

### 2. 从“代码使用”的角度:**不能直接用名字**
虽然底层加载了这两个目录(包),但 `from ... import ...` 语法的规则是:**只把 `import` 后面跟着的名字(即 `b2`)绑定到你当前的代码环境中**。
* ✅ **你可以**直接使用 `b2`(例如调用 `b2.my_function()`)。
* ❌ **你不可以**直接写 `dir1` 或 `dir2`。如果你在当前代码里写 `dir1.xxx`,Python 会报错 `NameError: name 'dir1' is not defined`。

---

### 代码示例对比

**情况 A:使用你当前的写法**
```python
from dir1.dir2 import b2

b2.do_something() # ✅ 正常执行
dir1.dir2.b2.do_something() # ❌ 报错:找不到 dir1
```

**情况 B:如果你希望在代码中能写出 dir1 和 dir2**
你需要使用常规的 `import` 语句:
```python
import dir1.dir2

dir1.dir2.b2.do_something() # ✅ 正常执行
```
*注:即使使用 `import dir1.dir2`,你也必须写全路径 `dir1.dir2.b2`,不能只写 `dir2.b2`。*

### 总结
* **内存与初始化**:`dir1` 和 `dir2` **会被导入**(它们的 `__init__.py` 会被执行)。
* **变量名访问**:只有 `b2` 这个名字**会被暴露**给你直接使用。

*Tesla*的主页 *Tesla* | 老鸟四级 | 园豆:2040
提问于:2026-07-13 17:59
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册