2.2 标量类型

此外还有日期/时间类型的数据,后面会单独讨论,它们是由标准库中的datetime模块提供的。
2.2.1 数值类型
主要是int和float,浮点数也可以用科学记数法表示。在Python3中,整数除法除不尽时就会产生一个浮点数。
2.2.2 字符串
既可以用单引号也可以用双引号。Python字符串是不可变的,要修改就只能创建一个新的,或者string.replace ( a, b )。对比以下两个示例:
a = 'this is a string'
a[10] = 'f'
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)<ipython-input-2-85038afe6a01>in<module> 1a='this is a string' ----> 2 a[10]='f' 3b=a.replace('string','longer string') 4b
TypeError: 'str' object does not support item assignment
b = a.replace('string', 'longer string')
b
Ouput:'this is a long string'
许多Python对象都可以用str函数转换为字符串。
a = 5.6
s = str(a)
s
Ouput:'5.6'
字符串格式化:以一个%开头且后面跟着一个或多个格式字符的字符串是需要插入值的目标。
template = '%.2f %s are worth $%d'
#%.2f表示一个带有2位小数的数字,%d表示一个整数
#用实参替换格式化形参,用到二元运算符%以及由值组成的元组。
template % (4.5560, 'Argentine Pesos', 1)
Ouput:'4.56 Argentine Pesos are worth $1'
2.2.3 布尔值
两个布尔值:True和False。几乎所有Python类型以及任何定义了_nonzero_魔术方法的类都能在if语句中被解释为True或False。
a = [1, 2, 3]
if a:
print('I found something!')
Output:I found something!
b = []
if not b:
print('Empty!')
Output:Empty!
可以用bool函数判断某个对象被强制转换合成哪个布尔值。
bool([]), bool([1, 2, 3]), bool('Hello world!'), bool(''), bool(0), bool(1)
Output:(False, True, True, False, False, True)
2.2.4 类型转换
str、bool、int以及float等类型也可以用作将值转换成该类型的函数。
s = '3.14159'
fval = float(s)
type(fval) #Output:float
int(fval) #Output:3
bool(fval) #Output:True
bool(0) #Output:False
2.2.5 None
不是一个保留关键字,知识NoneType的一个实例而已。
2.2.6 日期和时间
Python内置的datetime模块提供了datetime、date以及time等类型。datetime用的最多,它合并保存了在date和time中的信息。
from datetime import datetime, date, time
dt = datetime(2011, 10, 29, 20, 30, 21)
dt.day #Output:29
dt.minute #Output:30
给定一个datetime实例,可以通过调用其date和time方法提取相应的对象。
dt.date() #Output: datetime.time(2011, 10, 29)
dt.time() #Output:datetime.time(20, 30, 21)
strftime方法用于将datetime格式化为字符串。
dt.strftime('%m/%d/%Y %H:%M') #Output:'10/29/2011 20:30'
字符串可通过striptime函数转换(解析)为datetime对象。
datetime.strptime('20091031', '%Y%m%d')
#Output:datetime.datetime(2009, 10, 31, 0, 0)
替换datetime中一些字段。
dt.replace(minute=0, second=0) #Output:datetime.datetime(2011, 10, 29, 20, 0)
两个datetime对象的差对产生一个datetime.timedelta类型,将一个timedelta加到一个datetime上会产生一个新的datetime。
dt2 = datetime(2011, 11, 15, 22, 30)
delta = dt2 - dt
print(delta) #Output:17 days, 1:59:39
type(delta) #Output:datetime.timedelta
dt + delta #Output:datetime.datetime(2011, 11, 15, 22, 30)
网友评论