2 Python数据类型

介绍

Python3中主要的内置类型为:数字、列表、字典、类、实例和异常。
通常使用到的基本数据类型有:

  1. 数字intfloatcomplex):int表示整数;float表示浮点数;complex表示复数,并用jJ表示虚数部分。
  2. 布尔值bool):实际上boolint的子类型,其只有两种取值(TrueFalse),并支持直接与int类型的变量做运算(True表示为1False表示为0)。
  3. 文本字符串str):用单引号''或双引号""包围的变量,表示文本。
  4. 二进制列bytes):属于文本类型的高级数据类型,除了bytes之外还有bytearray等类型,一般形式是b''
  5. 列表listtuple):被[]包围的是列表list,属于可变数据类型;被()包围的是元组tuple,属于不可变数据类型。
  6. 集合set):被{}包围的若干个数据,其中不能包含重复的元素。
  7. 字典dict):被{}包围的若干个数据,但是其中的元素形如a:ba,b分别是基本数据类型,表示一种映射。在一个字典内,不能存在相同的a
  8. 空值NoneType):只有一个取值None
  9. 其他,例如“类和类的实例”、“异常”等。

可变类型和不可变类型

与Java类似,像intfloatboolstrtuple等类型的数据属于不可变数据类型;listsetdict属于可变数据类型。

  • 不可变数据类型:变量被修改时,内存地址也发生改变;
  • 可变数据类型:变量被修改时,直接在内存地址上修改,修改之后内存地址不会发生改变。

可以通过id()函数获取变量的唯一标识值,以此来表征内存地址。

id(object)
'''
返回对象的“标识值”,在此对象的生命周期中保证是唯一且恒定的。
:param object: 变量。
:rtype: int。
'''
a = 12
print(id(a)) # 140711708867352
a = 3
print(id(a)) # 140711708867064(内存地址被修改)
b = 'str'
print(id(b)) # 140711707721680
b += 'a'
print(id(b)) # 2231534285232(内存地址被修改)
c = ['abcd', 'efg']
print(id(c)) # 2231531657472
c += ['hij']
print(id(c)) # 2231531657472(内存地址未修改)

对于可变数据类型的比较,在已经

获取变量的类型

Python中内置了函数type()isinstance()来获取判断变量的类型。

type(object)
'''
获取变量的数据类型。
:param object: 变量。
:return: 返回object的类型。
'''
# 使用:
print(type(10)) # 输出<class 'int'>
print(type('python')) # 输出<class 'str'>
print(type(True)) # 输出<class 'bool'>
isinstance(object, classinfo)
'''
判断变量的数据类型。
:param object: 变量。
:param classinfo: 类型。
:return: True: object是classinfo或者其子类的实例。
False: object不是给定类型的对象。
'''
# 使用:
print(isinstance('player', str)) # True
print(isinstance(12, int)) # True
print(isinstance(10, float)) # False,说明float与int并无关系。
print(isinstance(True, int)) # True,说明bool是int的子类型。
print(isinstance(True + 1, int)) # True
print(type(True) == int) # False,说明type()函数没有考虑到子类型,因此在判断类型的时候不推荐使用'type() == '的方式。

数字、布尔值以及运算符

布尔取值

NoneFalse、任何数值类型的0(包括00.00j)、空列表(''[]{}()range(0))等具有“空/假”意义的变量被判断为False;其他值为True

基本运算

含义 Python表示 数学表示 备注
a + b a+b
a  b ab
a  b a×b
a / b a÷b 返回float类型
整数除 a // b a÷b 返回int类型
取余 a % b a mod b
乘方 a  b ab

比较运算

比较运算的返回值是bool类型。

含义 Python表示 含义 Python表示
等于 a == b 不等于 a != b
小于 a < b 大于 a > b
小于等于 a <= b 大于等于 a >= b

赋值运算

含义 Python表示 解释
直接赋值 a = b
加法赋值 a += b a=a+b
减法赋值 a = b a=ab
乘法赋值 a = b a=a×b
除法赋值 a /= b a=a÷b,返回float类型
整除赋值 a //= b a=ab,返回int类型
取模赋值 a %= b a=a mod b
乘方赋值 a  b a=ab
海象运算 a := b Python3.8新增

位运算

含义 符号 含义 符号
按位与 & 按位或 |
按位异或 按位取反
左移 << 右移 >>

逻辑运算

含义 Python表示
a and b
a or b
not a

成员运算

Python表示 描述
in 如果在指定的序列中找到值返回True,否则返回False
not in 如果在指定的序列中没有找到值返回True,否则返回False
10 in [10, 11, 12] # True
10 in ['10', '11', '12'] # False
'a' in ('a', 'b') # True
10 not in range(10) # True
[3] in [[1], [2], [3]] # True

身份运算

Python表示 描述 解释
is 判断两个标识符是否引用自同一对象 x is y,类似id(x) == id(y)
is not 判断两个标识符是否引用自不同对象 x is not y,类似id(x) != id(y)

不推荐对intfloatstr类型使用成员运算符,比较关系尽量使用==运算符

d1, d2 = [2, 3], [2, 3]
d = d1 is d2
e1 = e2 = [3, 4, 5]
e = e1 is e2
print(d, e, [2, 3] is [2, 3]) # False, True, False

参考成员运算

a = [3]
b = [[1], [2], [3]]
print(a in b) # True,说明面向列表的in运算并非是按照is运算作为判断标准的。

内置数学函数

  • abs(x)
    '''
    返回数的绝对值。
    :param x: 整数、浮点数或者任何实现了__abs__()的对象。
    :return: 绝对值;若x是复数,则返回模。
    '''
  • all(iterable)
    '''
    若iterable的所有元素均为真值则返回True。
    :param iterable: 可迭代对象。
    '''
    # 其实现可等价于:
    def all(iterable):
    for element in iterable:
    if not element:
    return False
    return True
  • any(iterable)
    '''
    若iterable中某个元素为真值则返回True。
    :param iterable: 可迭代对象。
    '''
    # 其实现可等价于:
    def any(iterable):
    for element in iterable:
    if element:
    return True
    return False
  • max()
    '''
    返回可迭代对象中最大的元素,或者返回两个及以上实参中最大的。
    如果有多个最大元素,则此函数将返回第一个找到的。
    '''
    存在三种形式,这里给出两种:
    max(iterable, *, key = None)
    '''
    :param iterable: 如果只提供了一个参数,则其必须是非空可迭代对象(例如列表、字符串)。
    :param key: 可选关键字,指定排序函数。
    '''
    # 使用:max([1, 2, 3])
    max(arg1, arg2, *args, key = None)
    # 使用:max(1, 2, 3)。
  • min()
    '''
    返回可迭代对象中最小的元素,或者返回两个及以上实参中最小的。
    如果有多个最小元素,则此函数将返回第一个找到的。
    '''
    存在三种形式,类似于上述的max()
  • pow(base, exp, mod = None)
    '''
    计算(base ** exp) % mod。
    :param base: 底数。
    :param exp: 指数。
    :param mod: 可选参数,对结果取模。
  • round(number, ndigits = None)
    '''
    返回number舍入到小数点后ndigits位精度的值。
    :param ndigits: 可选参数,默认None(返回最接近输入值的整数)。
    '''

其他数学函数

其他数学函数可以引入math模块;随机值函数可以引入random模块

posted @   皮皮罴  阅读(21)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Blazor Hybrid适配到HarmonyOS系统
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· 解决跨域问题的这6种方案,真香!
· 一套基于 Material Design 规范实现的 Blazor 和 Razor 通用组件库
· 分享4款.NET开源、免费、实用的商城系统
点击右上角即可分享
微信分享提示