1. 值与类型

程序的数据是以值的形式体现的 , 而值有相应的数据类型。例如 , 2 是一个整数 , 3.14 是一个 浮点实数 , hello, world 是一个字符串。用 Python 的内置函数 type()可以查询一个值的数据类型。例如 :

>>> type(2)
<class 'int'>
>>> type('hello,world')
<class 'str'>
>>> type(3.14)
<class 'float'>

可以看出 , 和其他编程语言一样 , 每个值都有确定的数据类型 , 以用于说明这种数据类型的值 的内容是什么样的 , 占用多大的内存空间 , 取值范围是多少 , 能进行哪些运算(操作)。例如 , int 类型的值可以是任意大的整数 , 只要计算机内存足够大 , 而其他编程语言 , 如 C 语言规定的 int 类 型的值总是占用固定大小的内存(如 4 字节)。再如 , Pythonfloat 类型表示的浮点实数最多可以精 确到 15 位小数。对于 int 或 float 类型的值可以用+-*/%// 等运算符进行加、减、乘、除、 求余数、整数除运算 , 但是整数除运算对于 float 类型的值则是转为整数类型进行的。例如 :

>>> print(5+2)                     #加
7
>>> print(2-5)                     #减
-3
>>> print(2*5)                     #乘
10
>>> print(5/2)                     #除
2.5
>>> print(5//2)                    #运算符//表示整数除
2
>>> print(5 ** 3)                  #指数运算, 计算5的三次方
125
>>> print(3.14//2.5)               #整数除
1.0
>>> print(3.14%2)                  #求余数
1.1400000000000001
>>> print((50 - 5*6) / 4)          
5.0

对字符串对象可以用+(加法运算) , 但其含义是“拼接”的意思。例如:

>>> print("hello," + "world")
hello,world

但对字符串对象不能进行减法、除法等运算。也就是说 , 不同类型的数据能够进行的运算不同。

产生 TypeError(类型错误):

>>> print("hello," - "world")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for -: 'str' and 'str'
>>> print("hello," / "world")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for /: 'str' and 'str'
>>> print("hello," * "world")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can't multiply sequence by non-int of type 'str'

编译器提示 : 不能对两个字符串(str)类型的值进行/*运算 , 但 1 个字符串可以和 1 个整数 相乘 , 其结果是 1 个重复复制这个字符串的新字符串。例如 :

>>> print(3*"world")
worldworldworld
>>> print("world"*3)
worldworldworld

2. 对象

  1. 对象

    每个值都有具体内容和类型 , 要在计算机中表示这个值 , 就要给这个值分配一块单独的存储空 间。因此 , 在 Python 中要用对象来刻画有独立内存空间和数据类型的值。也就是说 , 在 Python 中 , 程序中的数据都是以对象的形式存在的。 一个对象包含一个具体数据的三个特征 , 值、数据类型和 id。每个对象都有唯一的 id(相当于 一个人的身份证号码)作为该对象的内存地址。可以用 Python 的内置函数 id()来查询一个对象的 id。 例如 :

    >>> print(id(2))
    2296458510608
    >>> print(id(3.14))
    2296459534864
    >>> print(id('hello,world'))
    2296463952816

    可以看出 , 这三个对象都有自己唯一的 id(各自独立的存储空间)。

  2. 空值(NULL)

    Python 有一个特殊的值 None , 称为“空值”(None) , 用于表示一个没有值的对象。 除这些表示数据的值对象外 , 后续介绍的函数、类等在 Python 中都是对象 , 即 Python 的一切都是对象。

总结

  • 每个值都有对应的数据类型,如 3 是一个 int(整型)类型的值,3.14 是一个 float(浮点型)类型的值,hello world 是一个 str 类型(字符串类型)的值。

  • 数据类型规定了这种类型的值的内容是什么、能进行什么样的操作(运算)、占用多大的内存空间,取值范围是多少。

  • 值都是以对象的形式存在的,一个对象包含值、数据类型和 idid 实际上就是对象的内存地址。可以用内置函数 type()id()查询一个对象的数据类型和 id

  • None 是一个没有值的空值对象。


熊熊