Python中的函数os.path.join
根据正在运行的OS的规则将文件名和文件夹名连接为一个较长的单个路径字符串。例如,在OS X上,它看起来像
>>> import os
>>> os.path.join('Project', 'Docs', 'data.csv')
'Project/Docs/data.csv'
在其他操作系统上,输出可能看起来不同。因此,该功能的输出取决于操作系统。现在,我想知道我们是否仍然可以将此函数称为纯函数?我想在另一个函数中使用它,并且希望另一个函数成为纯函数,所以我想知道使用os.path.join
是否会破坏纯度。
答案 0 :(得分:6)
os.path
实际上是特定于OS的模块的别名,因此实际上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
没有理由 not 是纯净的。)