python基础-字面量

python基础-字面量本文内容侧重于基础概念的补充,阅读起来相当轻松

本文内容侧重于基础概念的补充,阅读起来相当轻松。目标:了解什么是字面量(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>
  1. stringprefix 和 (shortstring|longstring)之间不能有空格
str1 = r '123'#invalid syntax
str2 = r'123'
  1. 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)
# 当一个长度比较长的字符串(如,表示绝对路的字符串)中,有多处需要进行转义时,字符串书写起来就会比较麻烦
# 更好的表达方式就是使用 原始字符串
  1. 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. 字符串字面量的最后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

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注