文章目录
- 基本数据类型
- 1. 数值类型
- 1.1 整数
- 1.2 浮点数(只能用10进制)
- 1.3 复数
- 布尔类型(Bool Type)
- NoneType类型(对于Java的null和JS的undefined)
- 数据类型转换
- 对象和引用
- 对象
- 引用
- 字符串类型
- 拆包式赋值
基本数据类型
在Python中,数值类型主要包括3种数据类型:整数(int),浮点数(float),复数(complex)。
使用内置函数type(object)可以返回object的数据类型。内置函数instanceof(obj,class)
可以用来测试对象obj是否为class的实例。
示例:
num = 10
print("type(num) : ", type(num))
print("isinstance(num,int) : ", isinstance(num, int))
运行结果:
1. 数值类型
1.1 整数
- 整数即为没有小数部分的数值。
- 在Python中,有小整数对象池和大整数对象池(对象池即缓存的机制)
- 小整数对象池:小整数的定义是【-5,256】,这些整数是提前建立好的,不会被垃圾回收,这是为了保证Python的性能而设计的(因为小整数是频繁使用的,如果每次都向内存生其空间,请求释放,会严重影响Python的性能。),这个范围内的整数对象是被共享的,即一次创建,多次共享引用。
- 在Pycharm中才有大整数对象池(因为在Pycharm中,每次运行都是所有代码加载到内存中,属于一个整体):一个代码块的大整数是同一个对象
示例:
运行结果:
1.2 浮点数(只能用10进制)
即带有小数点的数值
浮点数产生误差的原因:
- 因为存储有限,计算机不能精确显示无限小数,会产生误差。
- 计算机内部采用二进制表示,但是,不是所有的10进制实数都可以用二进制精确表示。
1.3 复数
- Python中的实数与数学中的复数形式完全一致,都是用实部和虚部构成,并且用 j 或者 J 表示虚部。
- 当表示一个复数时,可以将其实部与虚部相加,例如假如一个复数:实部为3.14,虚部为12j;则这个复数表示为:3.14 + 12j
- 复数是Python内置的数据类型,使用 1j 表示 -1 的平方根。
- 复数有2个属性–real和imag,用于查看实部和虚部。
示例:
plural = 3.14 + 12j
print("plural.real : ", plural.real)
print("plural.imag : ", plural.imag)
print("plural : ", plural)
运行结果:
布尔类型(Bool Type)
- 布尔类型用于表示真和假
- 标识符:True 和 False 被解释为布尔型
- 在Python中,布尔型还可以转换为数值:True:1 和 False:0
- 在Python中,只要下面几种情况得到的值为假:
- False 和 None。
- 数值中的0,0.0,虚数0。
- 空序列,空列表,空元组,空字典。
- 自定义对象的实例,该对象的__bool__方法返回False或者__len__方法返回0。
NoneType类型(对于Java的null和JS的undefined)
表示没有值,即空值。
示例:
num = None
print("type(num) : ",type(num))
运行结果:
数据类型转换
示例:模拟超市抹零结账行为:
money_total = 23.2 + 7.9 + 8.7 + 32.65
print("商品总额为: ", money_total)
money_real = int(money_total)
print("实收金额为: ", money_real)
运行结果:
对象和引用
对象
引用
字符串类型
字符串类型
拆包式赋值
示例:输入两个年份,输出这两个年份(含)之间的闰年
def is_leap_year(year):
return year % 400 == 0 or (year % 100 != 0 and year % 4 == 0)
print("请输入2个年份")
year_01 = int(input("第一个年份: "))
year_02 = int(input("第二个年份: "))
# 拆包式赋值,如果year_01 > year_02就交换2个数
if year_01 > year_02:
year_01, year_02 = year_02, year_01
for item in range(year_01, year_02 + 1):
if is_leap_year(item):
print(item, " ", end=' ')
运行结果: