python 导入示例:from router.light import light,目录为什么用点,而不是像node那样使用斜杠,例如:const { light } = require(‘./router/light’)

这个问题涉及到Python 和 Node.js(JavaScript)各自的模块导入机制和语法规定。

1. Python 的包和模块导入

在 Python 中:

from router.light import light

这里的 router.light 并不是一个目录路径,而是模块路径。点(.)在 Python 的导入语句中表示包(package)与模块(module)之间的层级关系

  • 假设你的目录结构如下:
    project/
        router/
            __init__.py
            light.py
    
  • router 是包(因为里面有 __init__.py 文件)。
  • light.py 是模块。
  • from router.light import light 的意思是从 router 包下的 light.py 模块中导入 light 这个函数或类或者变量。

点(.

  • 表示包与模块的层级。
  • 不是文件目录的分隔符。

2. Node.js 的 require

在 Node.js(ES5 及 CommonJS 模块)中:

const { light } = require('./router/light')
  • 这里的 './router/light'文件路径,和文件系统目录结构一致,用斜杠(/)分割。
  • 这引入的是 router 目录下的 light.js 文件。
  • 不支持用点(.)表示模块关系。

3. 为什么 Python 用点,Node 用斜杠

  • Python 的模块系统是基于“包”与“模块”的概念,点用于描述包(目录)和模块(文件)的从属关系。
  • Node.js 的模块系统主要以文件和目录为单位,路径采用操作系统的文件路径规则,所以用斜杠。

4. 一个简单的对比表

语言导入语法路径分隔符示例
Pythonfrom package.module import obj.from router.light import x
Node.jsrequire(‘./path/to/module’)/require(‘./router/light’)

5. 结论

  • Python 中的“点”表示包结构的层级,不是文件路径的分隔。
  • Node.js 中的斜杠是文件系统路径的分隔符

如有其它相关疑问,欢迎继续追问!

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐