字面量

字面值是内置数据类型常量值的表示法,也就是硬编码在 Python 脚本中的数据,包括数字和字符串等的表示形式。

数值字面量

主要包括如下的数值字面量

  • 整数,例如100
  • 浮点数,例如3.1210..0013.14e-10
  • 复数,例如1+2j(注意不是 i 而是 j,并且 j 前面不能有空格)

注意:

  • 对于整数,默认十进制,可以使用 0b 开头表示二进制,使用 0x 开头表示十六进制等。
  • 对于长整数,可以加下划线增加可读性,没有实际效果。例如 123_456_789
  • 根据参考文档,严格来说数值字面量不含正负号-+,并且有纯虚数而没有复数,复数是实数和纯虚数的组合。

布尔字面量

布尔字面量包括两个:TrueFalse

在某些情况下,相当于数字中的 1 和 0:

1
2
1 == True # True
0 == False # True

字符串字面量

Python 不区分字符和字符串,字符视作长度为 1 的字符串。 字符串需要用单引号或者双引号包裹,\ 被用作转义特殊字符,例如 \" 表示双引号。

1
2
print('hello,\"li,hua\"')
# hello,"li,hua"

如果不希望字符串使用转义,可以在前面加 r,代表 raw 原始字符串。

1
2
print(r'hello,"li,hua"')
# hello,"li,hua"

在 Python2 的时代,为了避免中文编码等问题,还会在字符串前面加 u,确保使用 unicode 编码

1
s = u"你好"

如果使用多行的字符串,可以使用 ''' 或者 """ 包裹(和多行注释一样),此时还会包括换行,可以在行尾加上 \ 来避免第一个换行。

1
2
3
4
5
6
7
8
9
10
11
12
13
print("""\
hi,
1,
2,
3,
""")

'''
hi,
1,
2,
3,
'''

空字面量

空字面量为 NoneNone 不等于空字符串 ""、空列表 []、0,也不等同于 False,它具有唯一的明确的特殊含义!

例如一个无返回的函数,它实质上相当于有一句 return None,如果特意使用变量去接收函数的返回值,变量得到的就是 None

字面量集

包括如下几种:

  • 列表字面量
  • 元组字面量
  • 字典字面量
  • 集合字面量

直接使用例子即可

1
2
3
4
5
6
7
8
fruits = ["apple", "mango", "orange"] # 列表
numbers = (1, 2, 3) # 元组
alphabets = {'a':'apple', 'b':'ball', 'c':'cat'} #字典
vowels = {'a', 'e', 'i' , 'o', 'u'} #集合

[] # 空列表
() # 空元组
{} # 空字典

注意:

  • 为了与其它使用括号的情景区分,表示只含有一个元素的元组时,需要使用(1,),使用(1)则括号被忽略,视作1
  • 字典和集合都使用大括号,但是字典用途更广,更重要,因此{}留给了空字典,如果需要空集合,只能使用set()

运算符

各种语言的运算符都差不多,只是有些小区别,并且不同的运算符之间存在优先级差别,不做讨论。

算术运算符

  • 最基本的 + - * / 四则运算
  • 使用 ** 表示乘方,乘方运算具有最高优先级
  • 使用 / 表示普通除法,使用 // 表示取整除法,使用 % 表示取余数
  • 使用 != 表示不等关系,其它的也都和 C 语言一样: == > >= < <=
  • 支持 += *= 等赋值运算,但不支持 ++ 之类的自增自减运算

逻辑运算符

注意不支持 C/C++/Java 风格的 &&||!,只能使用英语单词

  • and 逻辑与
  • or 逻辑或
  • not 逻辑非

位运算符

常见的位运算都有

  • & 按位与
  • | 按位或
  • ~ 按位非
  • ^ 按位异或
  • << 按位左移
  • >> 按位右移

特殊运算符

  • 第一类,is / is not:表示两个变量(或字面量)是否指向同一个内存中的对象;
  • 第二类,in / not in:表示是否属于列表/字典/集合等的成员,对于字典这里测试的是键的存在性。

例如

1
2
3
4
5
6
7
8
9
10
11
12
a = 1;b = 1
a is b # True

a = [1,2]
b = [1,2]
a is b # False

'a' in ['a','b','c'] # True
'f' not in ['a','b','c'] # True

'b' in {'a':1,'b':2} # True
's' in {'a':1,'b':2} # False