Должен ли я использовать необработанную строку по умолчанию? - PullRequest
2 голосов
/ 12 февраля 2020

Я знаю, что необработанная строка, такая как r'hello world', предотвращает экранирование.

Полезно ли всегда всегда добавлять символ r, даже если в строке нет экранирующих последовательностей?

* 1005 Скажем, мое исключение нуждается в пояснительном строковом литерале, мне нужно подключиться к веб-сайту, URL которого является строковым литералом. У них нет бэкслы sh. Есть ли различия в производительности между необработанной строкой и обычной строкой?

Ответы [ 2 ]

3 голосов
/ 12 февраля 2020

Символ r означает «обратные слеши в этой строке являются буквальными обратными слешами». Помещение этого знака в строку, которая не содержит обратной косой черты, безвредно, но иногда слегка сбивает с толку читателя. Возможно, лучше использовать этот символ только тогда, когда он вам действительно нужен.

Ситуации, когда строка может не содержать обратные слэши в данный момент, но где вы можете добавить их в будущем, например, в обычном режиме. выражения и Windows пути к файлам, вероятно, будут рассматриваться как полезные исключения.

re.findall(r'hello', string)       # what if we switch to r'hello\.'?
with open(r'file.txt') as handle:  # what if we switch to r'sub\file.txt'?

Было бы легко забыть добавить r, когда вы добавляете обратную косую черту sh, поэтому предоставьте ее заранее здесь есть свои достоинства.

0 голосов
/ 12 февраля 2020

Вы можете сделать это в Python. Но я не рекомендую этого, потому что если вы добавите что-то вроде '\ n', это не будет работать хорошо. Вы можете использовать это в Regex и путях на Windows.

...