二、数据类型

(1) 什么是数据类型?

数据类型就是变量值的类型

(2) Python常见的数据类型:

数值、字符串、布尔值、列表、元组、字典、集合、文件

2.1 数值

在python中数值分成三种:整数,浮点数(小数),复数

在python中所有的整数都是int类型

在python中的整数大小没有限制,可以是一个无限大的整数

如果数字长度过长,可以使用下划线作为分隔符分割,下划线会自动忽略

>>> a = 123_456_789
>>> print(a)
123456789

2.2 进制

  • 二进制

    • 0b开头 0b010101
    >>> a = 0b010101
    >>> print(a)
    21
    
  • 八进制

    • 八进制 0o开头
    >>> a = 0o1010
    >>> print(a)
    520
    
  • 十进制

  • 十进制数字不能以0开头

  • 十六进制

    • 十六进制0x开头
    >>> a = 0x111
    >>> print(a)
    273
    

    注意:所有的进制输出都是十进制

2.3 浮点数

  • 在Python中所有的小数都是float类型
>>> a = 1.23
>>> b = 12.3
>>> print(type(a))
>>> print(type(b))
<class 'float'>
<class 'float'>
  • 对浮点数进行运算时,可能会得到一个不精确的结果
>>> c = 0.1 + 0.2
>>> print(c)
0.30000000000000004

2.4 字符串

  • 用来表示一段文本信息,是程序中使用最多的数据类型
  • 在python中字符串需要使用引号引起来(单引号,双引号都可以)
>>> a = 'abc'
>>> print(type(a))
>>> print(a)
<class 'str'>
abc
  • 相同的引号之间不能嵌套,可以使用单双分别嵌套
  • 单引号和双引号不能跨行使用
  • 使用三重引号来表示一个长字符串,可以实现换行,还可以保留字符串中的格式
a = '''111,
2222,
3333,
4444'''
print(a)

2.5 转义符

\'' : ‘
\""  : “”
\t   :制表符
\n   :换行符
\\   :反斜杠
\uxxxx  :unicode编码

例:

>>> s1 = 'hhh\''
>>> print(s1)
hhh'

>>> s2 = 'hhh\"'
>>> print(s2)
hhh"

>>> s3 = 'hhh\t'
>>> print(s3)
hhh	

>>> s4 = 'hhh\n123'
>>> print(s4)
hhh
123

>>> s5 = 'hhh\\123456'
>>> print(s5)
hhh\123456

2.6 字符之间的加法运算

  • 2个字符串相加 则会自动将2个字符串拼接成一个字符串
  • 字符串不能与整数与浮点数相加
>>> s1 = '你好啊:'
>>> s2 = '喜羊羊'
>>> s3 = '123'
>>> print(s1 + s2)
你好啊:喜羊羊

>>> print(s1 + s3)
你好啊:123

2.7 格式化输出

print传2个参数 进行格式化

>>> s = '你好啊:' + '喜羊羊'
>>> print('s=',s)
s= 你好啊:喜羊羊

使用占位符

  • %s在字符串中可以表示任意的字符(占位符与参数列表的顺序是一致的)
>>> s1 = '你好啊:%s,你好啊:%s'%('喜羊羊','懒羊羊')
>>> print(s1)

你好啊:喜羊羊,你好啊:懒羊羊
  • 参数的个数与占位符必须保持一致(否则会报以下的错误!!!)
TypeError: not all arguments converted during
string formatting
  • %f 在浮点数中可以表示任意浮点数
>>> f1 = '你好啊:%f,你好啊:%s'%(123.456,'喜羊羊')
>>> print(f1)

你好啊:123.456000,你好啊:喜羊羊
  • %d在整数中可以表示任意整数,如果参数是浮点数,会直接舍弃小数点后所有的值
>>> a = '你好啊:%d,你好啊:%s'%(123.456,'喜羊羊')
>>> print(a)

你好啊:123,你好啊:喜羊羊
  • 在创建字符串时,可以在字符串中指定占位符并限制长度
# 3是长度,不满3用空格填充
>>> a = '你好啊 %3s'%'ab' 
>>> print(a)

你好啊  ab

# 3.5是限制在3到5之间
>>> s = '你好啊 %3.5s'%'abcd' 
>>> print(s)
你好啊 abcd

  • 格式化字符串

    • 可以通过在字符串前面添加一个f来创建一个格式化字符串
    • 在格式化字符串中可以直接嵌入变量
    >>> a = 123
    >>> b = 456
    >>> print (f'a的值为:{a}')
    
    a的值为:123
    

2.8 布尔类型

(1) 布尔值(bool) 用来做逻辑判断 值有2个(true false)

>>> a = True
>>> print('a=',a)

a= True

(2) 布尔值实际上也属于整型,True相当于1,False相当于0

>>> print(1+True)
2

(3) None(空值) 表示不存在

2.9 类型检查

在Python中,可以使用type检查变量的类型,该函数将检查的结果作为返回值返回

>>> i = 12
>>> print(i)
>>> print(type(i))

12
<class 'int'>

2.10 对象的结构

2.10-1 对象的结构

(1) Python中一切皆对象,每个对象都有其唯一的id,对应的类型和值,其中id指的是对象在内存中的位置。

(2) 在Python中每个对象都需要保存3种数据,分别为:id(标识符)、type(类型)、value(值)

(3) Python中的变量可以指向任意对象,可以将变量都看成是指针,保存了所指向对象的内存地址(对象的引用)

  • id(标识符)
    • 用来标识对象的唯一性 每个对象都有一个唯一的id
    • 通过函数id()获取对象的id
    • id是由解析器生成 在Python中 id其实对象在内存中的地址值
    • 对象一旦创建,id值就不会改变
  • type(类型)
    • 用来标识当前对象的所属的类型
    • 类型决定了对象有哪些功能
    • 通过type()函数查看对象的类型
    • Python是一门强类型语言,对象一旦创建类型便无法再改变
  • value(值)
    • 对象中存储的具体的数据
    • 有些对象的值是可以改变的
    • 对象分两类
      • 可变对象
        • list、dict、set
      • 不可变对象
        • 数字、字符串、tuple

2.10-2 变量和对象

  • 对象并没有直接存储到变量中,在Python中变量更像是给对象起了一个别名

  • 变量中存储的不是对象的值,而是对象的id(内存地址)

    • 使用变量时,实际上是在通过对象的id在查找对象
    >>> a = 123
    >>> print(id(a))
    
    >>> b = a
    >>> print(b)
    >>> print(id(b))
    
    # print输出的结果
    140722215523824
    123
    140722215523824
    
  • 变量中保存的对象,只有在为变量重新赋值时才会改变

  • 变量与变量之间相会独立,修改一个变量不会影响另一个变量

>>> a = 123
>>> print(a)
>>> print(id(a))

>>> a = 456
>>> print(a)
>>> print(id(a))

# print输出的结果
123
140722215523824
456
2326184164112

2.11 类型转化

  • 类型转换不是改变对象本身的类型,而是根据当前对象的值创建一个新的对象

    • int类型

      • int() 可以将其他的对象转化为整型
      • int()函数不会对原来的变量产生影响,它是将对象转换为指定的类型并将其作为返回值返回
      • 如果希望修改原来的变量 需要对变量重新赋值
      >>> a = True
      >>> print(type(a))
      >>> a = int(a)
      >>> print(type(a))
      
      # print输出的结果
      <class 'bool'>
      <class 'int'>
      
    • int()类型转化规则

      • 布尔值:True = 1 False = 0

      • 浮点数:直接取整,省略小数点后面的内容

      • 字符串:合法的整数字符串,直接转化为对应的数字

      • 对于其他不可转换为整型的对象,直接抛出异常 valueError

    • float()类型

      • float()和int()基本一致,不同的是它会将对象转化为浮点数
    • str()类型

      • 直接将对象转化为字符串
    • bool()类型

      • 将对象转换为布尔值,任何对象都可以转换为布尔值
      • 所有表示空性的对象都会转换为False,其余的转换为True

以上内容是本人总结Python数据类型的笔记知识点,如有写得不正确的地方,或有更好的见解,希望各位读者指出,谢谢大家!