一、标识符与关键字
为对象引用赋值的名称成为标识符。标识符有以下两条命名规则:
1、由数字、字母(Unicode编码)与下划线组成,但是不能以数字开头;
2、不能与Python关键字同名,Python关键字如下表所列。
- | - | - | - | - | - | - |
---|---|---|---|---|---|---|
and | continue | except | global | lambda | pass | while |
as | def | False | if | None | raise | with |
assert | del | finally | import | nonlocal | return | yield |
break | elif | for | in | not | True | class |
else | from | is | or | try |
二、Integral类型
Python提供了两种内置的Integral类型,即int
与bool
。Python提供了增强的赋值操作符,在布尔表达式中,0
与False
表示False
,其他任意整数与True
都表示True
;在数字表达式中,True
表示1
,False
表示0
。
1、整数
整数的大小只受限于机器的内存大小,默认情况下,整数采用十进制进行表示,但也可以使用其他进制:
二进制数以
0b
引导,八进制数以0o
引导,十六进制数以0x
引导,也可使用大写字母表示。
所有常见的数学函数与操作符都可用于整数,如下表所列。
语法 | 描述 |
---|---|
x + y | 将数x与数y相加 |
x - y | 从x减去y |
x * y | 将x与y相乘 |
x / y | 用x除以y,总是产生一个浮点值(如果x或y是复数就产生一个复数) |
x // y | 用x除以y,舍弃小数部分,使得结果总是整数 |
x % y | 用x除以y,取模(余数) |
x ** y | 计算x的y次幂 |
-x | 对x取负数 |
+x | 不做任何操作,有时候用于澄清代码 |
abs(x) | 返回x的绝对值 |
divmod(x,y) | 以二元组的形式返回x除以y所得的商和余数(两个整数) |
pow(x,y) | 计算x的y次幂,与操作符**等同 |
pow(x,y,z) | (x ** y)% z的另一种写法 |
round(x,n) | 返回浮点数x四舍五入后得到的相应整数(或者,如果给定n,就将浮点数转换为小数点后有n位) |
所有二元数学运算符(+、-、/、//、%)都有相应的增强版赋值操作符(+=、-=、/=、//=、%=)
2、布尔型
有两个内置的布尔型对象:True和False。所有内置的数据类型与标准库提供的数据类型都可以转换为一个布尔型值。
三、浮点类型
Python提供了3中浮点值:内置的float与complex类型,以及来自标准库的decimal.Decimal类型,这3种数据类型都是固定的。
1、浮点数
float类型存放双精度的浮点数,具体取值范围依赖于构建Python的C(或C#或Java)编译器,输入sys.float_info
可以显示其所有属性,包括机器可以表示的浮点数的最大值与最小值。
2、复数
复数这种数据类型是固定的,其中存放的是一对浮点数,一个表示实数部分,另一个表示虚数部分。
>>> z = -89.5 + 2.125j
>>> z.real, z.imag
(-89.5, 2.125)
3、十进制数字
decimal可以提供固定的十进制数,其精度可以由自己指定。
>>> import decimal
>>> a = decimal.Decimal(9876)
>>> b = decimal.Decimal("54321.012345678987654321")
>>> a + b
Decimal('64197.012345678987654321')
四、字符串
字符串是使用固定不变的str
数据类型表示的,其中存放Unicode字符序列。字符串是使用引号创建的,可以使用单引号,也可以使用双引号,但是字符串两端必须相同。此外还可以使用三引号包含的字符串,如果需要在字符串中使用引号,需要使用的引号与包含字符串的引号不同,例如:
text = """ I "" am "" 'student'"""
若字符串前由字母r
引导,则字符串的内部所有字符都按其字面意义理解,不需要再进行转义。
phone = re.compile(r"^((?:[0\d+[]])?\s*\d+(?:-\d+)?)$")
如果需要写一个长字符串,跨越了2行或更多行,但是不使用三引号包含的字符串,那么有两种解决方法。
temp = "This is not the best way to join two long strings" +\
"together since it relies on ugly newline escaping"
temp = ("This is not the best way to join two long strings"
"together since it relies on ugly newline escaping")
字符串的索引位置从0开始,直至字符串长度值减去1。
分片的操作符有3中语法格式,seq
可以是任意序列,比如列表、字符串或元组。
seq[start]
seq[start:end] # 从start开始的数据项(包含)到end结束的数据项(不包含)
seq[start:end:step]
1、字符串操作符与方法
字符串是固定序列,所有可用于固定序列的功能都可用于字符串,包括使用in
进行成员关系测试,使用+=
进行追加操作,使用*
进行复制,使用*=
进行增强的赋值赋值等。
① len 函数
返回字符串中的字符数,如果字符串为空,就返回0。
② join 函数
连接字符串,以一个序列作为参数,并将其连接在一起存放在一个单独的字符串中,并将调用该方法的字符串作为分隔物添加在每两项之间,例如:
>>> treatises = ["java","python","c++"]
>>> " ".join(treatises)
'java python c++'
>>> "-<>-".join(treatises)
'java-<>-python-<>-c++'
该函数也可以与内置的reversed()
函数一起使用,以实现对字符串的反转,"".join(reversed(s))
,当然,也可以通过步距进行实现,比如s[::-1]
。
③ *
*
操作符提供了字符串的复制功能:
>>> s = "=" * 5
>>> print(s)
=====
④ 寻找字符位置
如果需要在某个字符串中找到另一个字符串所在的位置,有两种方法,一种是使用str.index()
方法,该方法返回子字符串的索引位置,或者在失败时产生一个ValueError
异常;另一种是使用str.find()
方法,该方法返回子字符串的索引位置,或者在失败时返回-1
。
2、使用format()方法进行字符串格式化
format()
方法提供了非常灵活而强大的创建字符串的途径。该方法会返回一个新字符串,在新字符串中,原字符串的替换字段被适当格式化后的参数所代替。
# 普通用法
>>> "My name is '{0}', {1} years old.".format("str818",21)
My name is 'str818', 21 years old.
# 字段名
>>> "{who} turned {age} this year".format(who="She",age=88)
'She turned 88 this year'
>>> "The {who} was {0} last week".format(12,who="boy")
'The boy was 12 last week'
# 字段名引用集合数据类型 0引用的是位置参数,因此,{0[1]}是列表stock参数的第二个数据项,{0[2]}是列表stock参数的第三个数据项。
>>> stock = ["paper","envelopes","notepads"]
>>> "We have {0[1]} and {0[2]} in stock".format(stock)
'We have envelopes and notepads in stock'