os.path.join是纯函数吗

时间:2018-12-05 18:34:34

标签: python functional-programming

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

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

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

1 个答案:

答案 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 是纯净的。)