os.path.join是一个纯函数

Elm*_*80s 1 python functional-programming

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

>>> import os 
>>> os.path.join('Project', 'Docs', 'data.csv')
'Project/Docs/data.csv'
Run Code Online (Sandbox Code Playgroud)

在其他操作系统上,输出可能看起来不同.所以函数的输出取决于OS.现在我想知道我们是否还可以将这个函数称为纯函数?我想在另一个函数中使用它,我希望其他函数是一个纯函数,所以我想知道是否使用了os.path.joinbreak纯度.

che*_*ner 6

os.path实际上是OS特定模块的别名,所以实际上有多个os.path.join 可能引用的纯函数.

例如,

$ import os.path
$ os.path.__name__
'posixpath'
Run Code Online (Sandbox Code Playgroud)

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

(ntpath.join可能不是纯粹的,这取决于你的纯洁的概念.它采用的是全球ntpath.sep其中,在理论上,可以调用之间进行修改.这是"纯粹的",不过,如果你认为这是一个只读不变,但在一般情况下,join有没有理由纯洁.)