os.path
на самом деле является псевдонимом для модуля, специфичного для ОС, поэтому на самом деле есть несколько чистых функций, к которым может обращаться os.path.join
.
Например,
$ import os.path
$ os.path.__name__
'posixpath'
В операционной системе POSIX os.path.join
действительно posixpath.join
;в Windows это ntpath.join
и т. д. Вы можете увидеть различные *path.py
модули в https://hg.python.org/cpython/file/tip/Lib;, каждый из которых содержит свое собственное определение join
.
(ntpath.join
может быть не чистым,в зависимости от вашего представления о чистоте. Он использует глобальный ntpath.sep
, который, теоретически, может быть изменен между вызовами. Это «чисто», хотя, если учесть, что постоянная только для чтения. Но в целом, join
имеетнет причины не быть чистым.)