版权声明:本文为博主原创文章,欢迎转载,转载须注明出处:By 故三殇 https://blog.csdn.net/qq_39720249/article/details/88538195
目录
一、数字
1、Python 中的内置数字对象支持整数(普通整型和长整型)、浮点型 数字和复数。
2、在 Python 2.4 中,标准库还提供了十进制浮点型数字。
3、Python 中的所有数字都是不可变对象,这意味着在对一个数字对象执行任何操作时,总是会产生一个新的数字对象。
4、注意:数字字面常量不包含符号: +或-,如果包含这两个符号,则表示该符号是一个分隔运算符。
(1)整数(普通整型和长整型)
1、整数字面常量:可以是十进制、八进制或十六进制。
2、十进制字面常量:可以使用第一个数字为非零数字的数字序列表示。
3、八进制字面常量:可以使用 0 后面带一个八进制数字 (0~7) 序列表示。
4、十六进制字面常量:可以使用 0x 后面带一个十六进制数字序列 (0~9 和 A~F,可以使用大写或小写字母)表示。
# ******************** 示例 ******************** #
1,23,3493 # 十进制整数
01,027,06645 # 八进制整数
0x1 ,0x17,0xDA5 # 十六进制整数
1、实际上,在 Python 中,开发者不需要担心普通整型和长整型之间的区别,因为:
在需要的时候,对普通整型的操作将生成长整型结果(也就是,在运算结果超出普通整型的数值范围之内时)。
2、不过,开发者可以选择将字母 L (或 l) 放在任何类型的整数字面常量的后面,以明确地表示该整数是长整型。
# ******************** 示例 ******************** #
1L,23L,99999333493L # 长十进制整敛
01L,027L,01351033136165L # 长八进制整数
0x1L,0x17L,0x17486CBC75L # 长十六进制整数
(1)这里使用了大写字母 L ,而不是小写字母 l ,因为小写的 l 看起来像数字 1 。
(2)长整型和普通整型之间的区别是一个实现。
(3)长整型没有预定义的大小限制;只要内存允许,长整型可以无限大。
(4)普通整型只占用了几个字节的内存,并且其最小和最大值是由计算机的架构决定的。
(5)Sys.maxint 是可以使用的最大正整数,而 -sys.maxint-l 是最大的负整数。
(6)在 32 位计算机上,sys.maxint 是 2147483647 。
(2)浮点型数字
1、浮点型字面常量可以由包含小数点(.)、指数部分( e 或 E ,可以选择后面为 + 或 - ,
然后是一个或多个数字) ,或者包含这两个部分的十进制数字序列表示。
2、浮点型字面常量的第一个字符不能是 e 或 E ; 但可以是任何数字或小数点(.)。
# ******************** 示例 ******************** #
0. , 0.0 , .0 , 1. , 1.0 , 1e0 , 1.e0 , 1.0e0
3、Python 浮点型值对应于 C 语言的双精度型 (double) ,并与其具有相同的范围和精度限制,
在最新的平台上通常都是 53 位精度 (Python 并没有提供方法以得到开发者平台上的浮点型值的确切范围和精度)。
(3)复数
1、复数是由两个浮点值组成的:一个是实部,另一个是虚部。
2、开发者可以通过访问只读属性 z.real 和 Z.imag 访问复数对象 z 的两个部分。
3、开发者可以将一个虚数字面常量指定为一个浮点或十进制字面常量,后面跟一个 j 或 J :
j ,0.j ,0.0j ,.0j ,1j ,1.j ,1.0j ,1e0j ,1.e0j ,1.0e0j
(1)这些字面常量末尾的 j 表示 -1 的平方根.
(2)复数通常在电气工程中使用(在有些其他语言中使用 i 来表示,但是 Python 选择使用 j ) 。
(3)除此之外没有其他的复杂字面常量。
(4)为了表示任何复数常数,可以使用一个浮点(或整数)字面常量加上或减去一个虚数。
例如,要想表示数字 1 的复数,可以使用表达式 1+0j 或者 1.0+0.0j 。
二、字符串
(1)
1、内置字符串对象(普通或 Unicode) 是一个字符序列,用来保存和显示基于文本的信息
(普通字符串有时候也用来保存和显示由二进制字节组成的任意序列)。
2、Python 中的字符串都是不变的 (immutable) ,这意味着在对字符串执行操作时,
总是会产生一个新的字符串对象,而不是修改一个现有的字符串。
3、字符串字面常量可以是被引用的或者被三重引用的。
1、引用的字符串是一个由包含在单引号( ' )或双引号( " )中的零个或多个字符组成的序列。
# ********************** 示例 ********************** #
'This is a literal string'
"This is another string"
2、这两种不同类型的引用功能是相同的,提供这两种功能可以让开发者在使用一种类型引用的字符串中
包含另一种类型引用的字符串,这样就不需要使用反斜线字符( \ )来将引号转义为字符:
# ********************** 示例 ********************** #
'I\'m a Python fanatic' # 引号可以被转义为字符
"I'm a Python fanatic" # 这种方式可读性更好
3、除此之外,所有其他的使用都是相同的,使用单引号表示字符串字面常量是更常见的 Python 风格。
要想让字符串常量跨越多个物理行,可以使用反斜线( \ )作为一行文本的最后一个字符,
以表示下一行文本是这一行的后续文本 :
# ********************** 示例 ********************** #
"A not very long string\
that spans two lines" # 上一行不允许有注释
4、要想让输出的字符串跨越两行,可以在字符串中嵌入一个新行 :
# ********************** 示例 ********************** #
"A not very long string\n\
that prints on two lines" # 上一行不允许有注释
1、一种更好的方法是使用三重引用字符串,该字符串被包含在三个引号字符("或")中:
# ********************** 示例 ********************** #
""" An even bigger
string that spans
three lines """ # 前面几行不允许有注释
2、在三重引用字符串字面常量中,字面常量中的断行将被保留,并作为结果字符串对象中的新行的字符串。
3、尽管一般引用的字符串不能包含未加转义的反斜线,不能包含行的末尾,也不能包含引用字符本身,
但是,唯一不能在三重引用字符串中使用的字符就是未加转义的反斜线( \ )。
4、反斜线字符用来开始一个转义序列,这样可以在各种类型字符串中放入任何字符。
(2)字符串转义序列
扫描二维码关注公众号,回复:
6135043 查看本文章
序列 | 含义 | ASCII/ISO 码 |
---|---|---|
\<newline> | 忽略行尾 |
None |
\\ | 反斜线 |
0x5c |
\' | 单引号 |
0x27 |
\" | 双引号 |
0x22 |
\a | 响铃 (Bell) |
0x07 |
\b | 退格 (Backspace) |
0x08 |
\f | 换页 (Form feed) |
0x0c |
\n | 换行 (Newline) |
0x0a |
\r | 回车 (Carriage return) |
0x0d |
\t | 制表符 (Tab) |
0x09 |
\v | 垂直制表符 (Vertical tab) |
0x0b |
\DDD | 八进制值 DDD |
给定的值 |
\xXX | 十六进制值 XX | 给定的值 |
\other | 其他字符 |
0x5c + 给定的值 |
(3)
1、字符串字面常量的一个变体是原生字符串 (raw string) 。
2、其语法与引用或三重引用字符串字面常量相同,区别在于其左引号之前有一个 r 或 R 字符。
1、原生字符串中的转义序列将被直接从字面上复制到字符串中,包括反斜线和换行字符。
2、在原生字符串中,这些转义序列与 “(2)字符串转义序列” 表中的解释有所区别,
原生字符串语法便于处理包含许多反斜线的字符串,例如在正则表达式中。
3、原生字符串不能以奇数个反斜线结束,最后一个反斜线将被作为转义右引号使用。
1、Unicode 字符串字面常量与其他字符串字面常量具有相同的语法,在其左引号的前面带有字符 u 或 U。
2、Unicode 字符串字面常量可以使用 \u 加 4 个十六进制数字来表示 Unicode字符,
并且可以包含 “(2)字符串转义序列” 表中列出的转义序列。
3、Unicode 字面常量还可以包含转义序列 \N {name} ,其中 name 是一个标准 Unicode 名称,
http://www.unicode.org/charts/ 列出了所有的 Unicode 名称。
例如: \N{Copyright Sign} 表示一个 Unicode 版权符号字符(㉢)。
4、原始 Unicode 字符串以 ur ,而不是 ru 开始。
5、注意:原生字符串并不是一种不同于普通字符串的字符类型:
原生字符事只是两种常用的字符类型中可以替代字面常量的一种语法,这两种字符类型也就是普通字符串
(又称为字节字符串)和 Unicode 字符串。
1、任意类型(引用的、三重引用的、原始的、 Unicode) 的多个字符串字面常量可以通过一些可选的空格邻接在一起。
2、编译器将把这些邻接的字符串字面常量串联成单个字符串对象。
3、如果串联的单个字符串对象中的任何字面常量是 Unicode 类型的,则整个对象的结果是 Unicode 类型。
4、按这种方式定义一个长字符串字面常量可以让字符串可以跨越多个物理行进行显示,这样具有很好的可读性,
同时还可以在该字符串的一部分物理行后面插入注释。
例如:
marypop = (' supercalifragilistic ' # 打开括号 → 逻辑行继续
' expialictocious ') # 在后续行中忽略缩进
marypop 将被贼值为一个字符串,这个字符串是一个由 34 个字符组成的单词。
三、元组(tuple)
1、元组 (tuple) 是一个顺序不可变的项目序列。
2、元组中的项目都是断言对象,并且可以是不同的类型。
3、开发者可以使用一连串由逗号( , )分隔的表达式(元组中的项目)来指定一个元组。
在最后一个项目的后面,还可以有选择地多放置一个逗号。
4、开发者可以在圆括号中对元组中的项目进行分组,但是圆括号只有在逗号具有其他含义
(例如:在函数调用中) ,或者表示空白的或嵌套的元组时才是必需的。
5、包含两个项目的元组通常被称为"对" ( pair ) 。
6、要想创建一个由单个项目组成的元组(通常被称为"单例",singleton) ,可以在表达式的末尾添加一个逗号。
7、要想表示一个空白元组,可以使用一对空白的圆括号。
# **************** 下面列出了一些元组,所有元组都包含在可选的回括号中 **************** #
( 100 ,200 ,300 ) # 包含 3 个项目的元组
( 3.14,) # 包含 1 个项目的元组
() # 空白元组(圆括号不是可选的 ,而是必需的! )
8、开发者还可以调用内置的类型 tuple 来创建一个元组。
# ************************** 示例 ************************** #
tuple ('wow')
# **************** 这行代码将创建下面这个元组 **************** #
('w' ,'0' ,'w')
9、不带任何参数的 tuple() 将创建并返回一个空白元组。
10、当 x 可迭代时, tuple(x) 将返回一个元组,其中的项目与 x 中的项目相同。
四、列表
1、列表 (list) 是一个顺序可变的项目序列。
2、列表中的项目可以是不同类型的任意对象。
3、开发者可以使用包含在方括号 ( [] ) 中的一连串由逗号 ( ,) 分隔的表达式(列表中的项目)来指定一个列表。
4、在最后一个项目的后面,可以有选择地多放置一个逗号。
5、要想表示空白列表,可以使用一个空白的方括号对。
# ****************************** 示例 ****************************** #
[ 42 ,3.14 ,'he11o' ) # 包含 3 个项目的列表
[ 100 ] # 包含 1 个项目的列袋
[] # 空白列表
6、开发者还可以调用内置的类型 list 来创建一个列表。
# ****************************** 示例 ****************************** #
list ( 'wow' )
# ******************** 这行代码将创建下面这个列表 ******************** #
( 'w' ,'0' ,'w']
7、不带任何参数的 list 将创建并返回一个空白列表。
8、当 x 可迭代时, list(x) 将返回一个列表,其中的项目与 x 中的项目相同。
9、开发者还可以使用列表推导来构建列表 。
五、字典
1、映射 (mapping) 是一个按照近乎是任意值排序的对象组成的任意集合,这些任意值被称为键 ( key ) 。
2、与序列不一样,映射是可变的,并且不是排好序的。
3、Python 提供了单个内置映射类型,也就是字典类型。
4、库和扩展模块提供了其他一些映射类型,并且开发者可以编写一些自己的类型。
5、字典中的键可以是不同类型,但是这些键必须是可哈希(hashable)的。
6、字典中的值是任意对象,并有可能是不同类型。
7、字典中的项目是一个键/值对。
8、开发者可以将字典看作是联合的数组(在其他语言中常常被称为"映射" 、"哈希表"或"哈希")。
1、开发者可以使用在花括号( {} )中使用逗号分隔的一连串表达式对(这些对就是字典中的项目)来表示字典。
2、开发者还可以选择在最后一个项目的后面多放置一个逗号。
3、字典中的每个项目都可以写作 key:value 形式,其中 key 是一个给定项目的键的表达式,而 value 则是给定项目的值的表达式。
4、如果某个键在字典字面常量中出现了多次,则只能在结果字典对象中保留该键的一个项目,字典不允许包含重复的键。
5、要想表示空白字典,可以使用一个空白的花括号对。
# ************************* 下面列出了一些字典示例 ************************* #
{ 'x' : 42 , 'y' : 3.14 , 'z' : 7 } # 包含 3 个项目和字符串键的字典
{ 1 : 2 , 3 : 4 } # 包含 2 个项目和整数键的字典
{} # 空白字典
6、开发者还可以调用内置的类型 dict 来创建一个字典,这种方法尽管并不简练,但是有时更具可读性。
# ******************* 上面这几个示例中的字典也可以分别写成 ******************* #
dict( x=42 , y=3.14 , z=7 ) # 包含 3 个项目和字符串键的字典
dict([ [ 1 , 2 ] , [3 ,4] ]) # 包含 2 个项目和整数键的字典
dict() # 空白字典
7、不带任何参数的 dict() 可以创建并返回一个空白目录。
8、当 dict 的参数 x 是一个映射时,dict 将返回一个新的字典对象,具有与 x 相同的键和值。
9、当 x 是可迭代的值时,x 中的项目必须是一对值,并且 dict(x) 将返回一个字典,其中的项目(键/值对)与 x 中的项目相同。
10、如果某个键在 x 中出现了多次,则结果字典中只保留该键的最后一个项目。
11、在开发者调用 dict 时,除了定位参数 x ,可能还会传递一个命名参数 (named argument) ,
每个参数的语法都是 name==value ,其中 name 是一个标识符,用作项目的键,
而 value 是一个表达式,用作该项目的值。
12、当开发者调用 dict 并传递一个定位参数和一个或多个命名参数时,如果某个键同时出现在位置参数中,
并作为一个命名参数,则 Python 将把该命名参数(例如,命名参数 "wins" )的值关联到这个键上。
13、开发者还可以通过调用 dict.fromkeys 来创建一个字典。
(1)第一个参数是一个可迭代的值,其项目将成为该字典的键,第二个参数是对应到每个键上的值
(所有键最初都具有相同的对应值)。
(2)如果忽略第 二个参数,则对应于每个键的值为 None。例如:
# ************************* 示例 ************************* #
dict.fromkeys('hello' , 2 ) # 等同于 { 'h' : 2 , 'e':2 , '1':2 , '0': 2 )
dict.fromkeys([ 1 , 2 , 3 ]) # 等同于 ( 1 : None , 2 : None , 3 : None )