顾名思义,“字符串”就是由一个或多个字符“串”起来—— Python 3.x 中的才是真正字符串,Python 2.x 中的严格称呼应为“字节串”。不过,现在读者暂不用关注历史。
其实,前面已经出现了的 'Hello,World'
,就是一个字符串( String )。在 Python 中创建字符串的方法非常简单。
>>> s = 'python' # (3)
>>> book = "learn python" # (4)
>>> poem = """我住长江头,
... 君住长江尾。""" # (5)
>>> type(s)
<class 'str'>
>>> type(book)
<class 'str'>
>>> type(poem)
<class 'str'>
注释(3)(4)(5)分别演示了三种用于定义字符串的引号:
图4-2-1 定义字符串的形式
图4-2-2 输入多行字符串
注意,作为字符串的标志,包裹字符串的“单引号”、“双引号”和“三引号”,在键盘输入的时候必须是英文状态,并且要成对出现,否则无法定义字符串对象。
>>> "I am learning Python'
File "<stdin>", line 1
"I am learning Python'
^
SyntaxError: EOL while scanning string literal
在注释(5)之后使用内置函数 type()
查看三个对象的类型,返回值 str
即表示 Python 中字符串类型,与之前所学对象类型同理,存在同名的内置函数 str()
,通过它也能创建字符串——但有局限。
>>> sint = str(250)
>>> type(sint)
<class 'str'>
>>> sint
'250'
以整数为 str()
的参数,返回值是一个字符串 '250'
——也可以理解为将整数 250
用函数 str()
转化为了字符串 '250'
。
像 '250'
这样的完全由数字组成的字符串,可以用 int()
函数将其转化为整数。
>>> result = int('250')
>>> result
250
>>> type(result)
<class 'int'>
类似地,float()
则可以将数字构成的字符串转化为浮点数。
>>> float('3.14')
3.14
>>> float('250')
250.0
>>> float('1e2')
100.0
>>> int('1e2')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '1e2'
注意上面的报错信息,对于 int()
函数而言,其参数必须是 0 到 9 的数字构成的字符串。
>>> int('a45')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: 'a45'
>>> int('hello')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: 'hello'
下面还要提醒读者注意两个貌似“差不多”的字符串:
>>> empty_str = str() # (6)
>>> empty_str
''
>>> spacing = " " # (7)
>>> spacing
' '
>>> bool(empty_str)
False
>>> bool(spacing)
True
注释(6)定义了一个“空字符串”,其结果与直接输入 ''
(注意输入方法,连续输入两个单引号,在两个单引号之间,没有任何符号)效果一致;注释(7)则是在两个引号之间,输入了一个空格。虽然 empty_str
和 spacing
有点类似,但它们是完全不同的对象。空字符串的布尔值是 False
,而“空格”是通过键盘输入的一个字符——所有通过键盘输入的都是字符,包括不可见的和可见,所以 spacing
的布尔值是 True
。