2016-10-04 13 views
0

Я знаю, что мы можем использовать фреймы r (raw string) и u (unicode) перед строкой, чтобы получить то, что нам действительно нужно. Тем не менее, мне интересно, как они работают со строками. Я попробовал это в IDLE:Как префикс u и r работает со строками в python?

a = r"This is raw string and \n will come as is" 
print a 
# "This is raw string and \n will come as is" 
help(r) 
# ..... Will get NameError 
help(r"") 
# Prints empty 

Как Python знает, что он должен относиться к r или u в передней части строки в качестве флага? Или как строковые литералы, чтобы быть конкретными? Если я хочу узнать больше о том, что такое строковые литералы и их ограничения, как я могу их изучить?

ответ

0

Префиксы u и r являются частью строкового литерала, как определено в грамматике python. Когда интерпретатор python анализирует текстовую команду, чтобы понять, что делает команда, она читает r"foo" как однострочный литерал со значением "foo". С другой стороны, он читает b"foo" как литерал с одним байтом с эквивалентным значением.

Для получения дополнительной информации вы можете обратиться к literals section в документации python. Кроме того, у python есть модуль ast, который позволяет вам изучить, как команды python анализируют.