本文内容侧重于基础概念的补充,阅读起来相当轻松。目标:了解什么是字面量(literal),字面量有哪些。以后再看到单词literal不会感到陌生。
文章目录
字面量(string literals)
Literals are notations for constant values of some built-in types.
字面量 是一些内置类型的常量值的记法。
python中literals 有6种,字符串字面量,字节字面量,数字字面量,整型字面量,浮点字面量,虚部字面量
字符串字面量(string literals)
var = 'I am string literal.'
# 如果两个string literal相邻的书写在一个表达式中,或 两者之间仅由空格分隔,python会将其隐式地转换为一个string literal。
if ('I am ' 'string literal') == 'I am string literal':
print(True)
else:
print(False)
# 相邻的string literals 可以是不同的引号
if ('I am ' "string literal") == 'I am string literal':
print(True)
else:
print(False)
# 字符串字面量 的语法
stringliteral ::= [stringprefix](shortstring | longstring)
stringprefix ::= "r" | "u" | "R" | "U" | "f" | "F"
| "fr" | "Fr" | "fR" | "FR" | "rf" | "rF" | "Rf" | "RF"
shortstring ::= "'" shortstringitem* "'" | '"' shortstringitem* '"'
longstring ::= "'''" longstringitem* "'''" | '"""' longstringitem* '"""'
shortstringitem ::= shortstringchar | stringescapeseq
longstringitem ::= longstringchar | stringescapeseq
shortstringchar ::= <any source character except "\" or newline or the quote>
longstringchar ::= <any source character except "\">
stringescapeseq ::= "\" <any source character>
- stringprefix 和 (shortstring|longstring)之间不能有空格
str1 = r '123'#invalid syntax
str2 = r'123'
- shortstring中 反斜杠(backslash,’\’) 有转义(escape character)的作用
Escape Sequence | Meaning |
---|---|
\\ |
Backslash (\ ) |
\' |
Single quote (' ) |
\" |
Double quote (" ) |
\a |
ASCII Bell (BEL) |
\b |
ASCII Backspace (BS) |
\f |
ASCII Formfeed (FF) |
\n |
ASCII Linefeed (LF) |
\r |
ASCII Carriage Return (CR) |
\t |
ASCII Horizontal Tab (TAB) |
\v |
ASCII Vertical Tab (VT) |
\ooo |
Character with octal value ooo |
\xhh |
Character with hex value hh |
str_newline = '张三:你吃了吗?\n李四:我吃了'
print(str_newline)
str_no_newline = '张三:你吃了吗?\\n李四:我吃了'
print(str_no_newline)
str_path1 = 'H:\python\project\python\pb_basic\str\str.md'
str_path2 = 'H:\python\project\python\pb_basic\tr\str.md'
str_path3 = 'H:\python\project\python\pb_basic\\tr\str.md'
print(str_path1)
print(str_path2)
print(str_path3)
# 当一个长度比较长的字符串(如,表示绝对路的字符串)中,有多处需要进行转义时,字符串书写起来就会比较麻烦
# 更好的表达方式就是使用 原始字符串
- raw strings
raw string 语法:r(shortstring|longstring)
作用:使 反斜杠(backslash)失去 转义 的作用
str_raw1 = r'张三:你吃了吗?\n李四:我吃了'
print(str_raw1)
str_raw2 = r'H:\python\project\python\pb_basic\tr\str.md'
print(str_raw2)
- 字符串字面量的最后1个字符,不能是单个’\’
虽说raw string能使 反斜杠 失去 转义的作用,但是,引号仍然能被转义,同时 反斜杠 仍然保留在字符串中
str1 = r"\"" # 正确
print(str1)
str2 = r"\" # 错误
#str_single_quotes = 'H:\python\project\python\pb_basic\\tr\' # SyntaxError: EOL while scanning string literal
str_single_quotes = 'H:\python\project\python\pb_basic\\tr\\'
print(str_single_quotes)
str_raw = r'H:\python\project\python\pb_basic\\tr\' # SyntaxError: EOL while scanning string literal
print(str_raw)
字节字面量(bytes literals)
# 字节字面量的词法定义(lexical definitions)
bytesliteral ::= bytesprefix(shortbytes | longbytes)
bytesprefix ::= "b" | "B" | "br" | "Br" | "bR" | "BR" | "rb" | "rB" | "Rb" | "RB"
shortbytes ::= "'" shortbytesitem* "'" | '"' shortbytesitem* '"'
longbytes ::= "'''" longbytesitem* "'''" | '"""' longbytesitem* '"""'
shortbytesitem ::= shortbyteschar | bytesescapeseq
longbytesitem ::= longbyteschar | bytesescapeseq
shortbyteschar ::= <any ASCII character except "\" or newline or the quote>
longbyteschar ::= <any ASCII character except "\">
bytesescapeseq ::= "\" <any ASCII character>
字节字面量和字符串字面量非常类似,只不过是以字母’b’或’B’开头。
数字字面量(numeric literals)
数字字面量有三种:整数,浮点数,虚数。
整型字面量(integer literals)
# 整数字面量的词法定义
integer ::= decinteger | bininteger | octinteger | hexinteger
decinteger ::= nonzerodigit (["_"] digit)* | "0"+ (["_"] "0")*
bininteger ::= "0" ("b" | "B") (["_"] bindigit)+
octinteger ::= "0" ("o" | "O") (["_"] octdigit)+
hexinteger ::= "0" ("x" | "X") (["_"] hexdigit)+
nonzerodigit ::= "1"..."9"
digit ::= "0"..."9"
bindigit ::= "0" | "1"
octdigit ::= "0"..."7"
hexdigit ::= digit | "a"..."f" | "A"..."F"
从上面的定义可以看出,整数字面量可以是 10进制数,2进制数,8进制数,16进制数.
下划线_
的作用类似于千位分隔符,方便人读书。
# 10进制整数字面量
1
100
4343
100_000_000
# 2进制整数字面量
0b_1001_0100
# 8进制整数字面量
0o166
# 16进制整数字面量
0xabc123
浮点字面量(float point literals)
# 浮点字面量的词法定义
floatnumber ::= pointfloat | exponentfloat
pointfloat ::= [digitpart] fraction | digitpart "."
exponentfloat ::= (digitpart | pointfloat) exponent
digitpart ::= digit (["_"] digit)*
fraction ::= "." digitpart
exponent ::= ("e" | "E") ["+" | "-"] digitpart
浮点数通常有两种表示:小数点浮点数和指数浮点数。
3.1415926
3.14e-5
虚部字面量(imaginary literals)
# 虚部字面量的词法定义
imagnumber ::= (floatnumber | digitpart) ("j" | "J")
3.14j
0.002j
今天的文章python基础-字面量分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/68672.html