Является ли os.path.join чистой функцией - PullRequest
0 голосов
/ 05 декабря 2018

Функция os.path.join в Python объединяет имена файлов и папок в длинную строку с одним путем в соответствии с правилами операционной системы, в которой она работает.Например, в OS X это выглядит так:

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

В других ОС вывод может выглядеть иначе.Таким образом, вывод функции зависит от ОС.Теперь интересно, можно ли еще назвать эту функцию чистой?Я хочу использовать его в другой функции, и я хочу, чтобы эта другая функция была чистой, поэтому мне интересно, если использование os.path.join нарушает чистоту.

1 Ответ

0 голосов
/ 05 декабря 2018

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 имеетнет причины не быть чистым.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...