Skip to main content
 首页 » 编程设计

python之os.path.join 是纯函数吗

2025年05月04日15飞鱼

Python 中的函数 os.path.join 根据其运行的操作系统的规则将文件和文件夹名称连接成一个长的单一路径字符串。例如在 OS X 上它看起来像

>>> import os  
>>> os.path.join('Project', 'Docs', 'data.csv') 
'Project/Docs/data.csv' 

在其他操作系统上,输出可能看起来不同。所以函数的输出取决于操作系统。现在我想知道我们是否仍然可以称这个函数为纯函数?我想在另一个函数中使用它,并且我希望另一个函数是一个纯函数,所以我想知道使用 os.path.join 是否会破坏纯度。

请您参考如下方法:

os.path 实际上是特定于操作系统的模块的别名,因此实际上有多个 os.path.join 可能引用的纯函数。

例如,

$ import os.path 
$ os.path.__name__ 
'posixpath' 

在 POSIX 操作系统上,os.path.join 实际上是 posixpath.join;在 Windows 上是 ntpath.join 等。您可以在 https://hg.python.org/cpython/file/tip/Lib 查看各种 *path.py 模块。 ;每个都包含自己的 join 定义。

(ntpath.join 可能不是纯粹的,这取决于您对纯度的概念。它使用全局 ntpath.sep,理论上可以在调用之间进行修改.不过,如果您认为它是一个只读常量,它就是“纯粹的”。但一般来说,join 没有理由不是纯粹的。)