前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python基础之:Python中的内部对象

Python基础之:Python中的内部对象

作者头像
程序那些事
发布2021-04-22 15:05:41
7610
发布2021-04-22 15:05:41
举报
文章被收录于专栏:程序那些事程序那些事

简介

Python中内置了很多非常有用的对象,本文将会介绍Python中的内置函数,内置常量,内置类型和内置异常。

内置函数

Python 解释器内置了很多函数和类型,您可以在任何时候使用它们。

内置函数

abs()

delattr()

hash()

memoryview()

set()

all()

dict()

help()

min()

setattr()

any()

dir()

hex()

next()

slice()

ascii()

divmod()

id()

object()

sorted()

bin()

enumerate()

input()

oct()

staticmethod()

bool()

eval()

int()

open()

str()

breakpoint()

exec()

isinstance()

ord()

sum()

bytearray()

filter()

issubclass()

pow()

super()

bytes()

float()

iter()

print()

tuple()

callable()

format()

len()

property()

type()

chr()

frozenset()

list()

range()

vars()

classmethod()

getattr()

locals()

repr()

zip()

compile()

globals()

map()

reversed()

__import__()

complex()

hasattr()

max()

round()

内置常量

Python中内置了少量的常量,我们可以直接在代码中使用他们。

  • False

表示的是bool类型的假值。

  • True

表示的是bool类型的真值。

  • None

是NoneType类型的唯一值。None表示缺少值。

  • NotImplemented

__eq__(), __lt__(), __add__(), __rsub__()的特殊返回值,表示会在假值的时候返回NotImplemented。

  • Ellipsis

等同于字面值 ,主要与用户定义的容器数据类型的扩展切片语法结合使用。

  • __debug__

编译器内部的变量,用来表示是否开启debug模式。

内置类型

python中的主要内置类型有数字、序列、映射、类、实例和异常。

逻辑值检测

在python中,任何对象都可以做逻辑值的检测。

一个对象在默认情况下均被视为真值,除非当该对象被调用时其所属类定义了 __bool__()方法且返回 False 或是定义了 __len__() 方法且返回零。

下面是集中被认为是false值的对象:

  • 被定义为假值的常量: NoneFalse
  • 任何数值类型的零: 0, 0.0, 0j, Decimal(0), Fraction(0, 1)
  • 空的序列和多项集: '', (), [], {}, set(), range(0)

逻辑值的布尔运算

布尔运算主要有 or, not和and:

代码语言:javascript
复制
if x is false, then y, else x

比较运算

代码语言:javascript
复制
严格小于

具有不同标识的类的实例比较结果通常为不相等,除非类定义了 __eq__()方法。

数字类型

Python中有三种不同的数据类型:整数, 浮点数复数

所有数字类型(复数除外)都支持下列运算:

代码语言:javascript
复制
x 和 y 的和

对于int 和 float 还支持下面的运算:

代码语言:javascript
复制
x 截断为 Integral

整数类型的位运算

对于整数来说,还支持位运算:

代码语言:javascript
复制
x 和 y 按位 或

整数类型的附加方法

int 还有一些额外的方法:

int.bit_length()

返回以二进制表示一个整数所需要的位数,不包括符号位和前面的零:

代码语言:javascript
复制
>>> n = -37
>>> bin(n)
'-0b100101'
>>> n.bit_length()
6

int.to_bytes(length, byteorder, *, signed=False)

返回表示一个整数的字节数组。

代码语言:javascript
复制
(1024).to_bytes(2, byteorder='big')
b'\x04\x00'
(1024).to_bytes(10, byteorder='big')
b'\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00'
(-1024).to_bytes(10, byteorder='big', signed=True)
b'\xff\xff\xff\xff\xff\xff\xff\xff\xfc\x00'
x = 1000
x.to_bytes((x.bit_length() + 7) // 8, byteorder='little')
b'\xe8\x03'

byteorder 参数确定用于表示整数的字节顺序。如果 byteorder"big",则最高位字节放在字节数组的开头。如果 byteorder"little",则最高位字节放在字节数组的末尾。

signed 参数确定是否使用二的补码来表示整数。

浮点类型的附加方法

float.is_integer()

如果 float 实例可用有限位整数表示则返回 True,否则返回 False:

代码语言:javascript
复制
>>> (-2.0).is_integer()
True
>>> (3.2).is_integer()
False

float.hex()

以十六进制字符串的形式返回一个浮点数表示。

迭代器

迭代器主要用在容器的遍历中。

如果容器需要提供迭代支持,必须定义下面的方法:

container.__iter__()

这个方法返回一个迭代器对象。这个迭代器对象需要提供下面的两个方法:

iterator.__iter__()

返回迭代器对象本身。

iterator.__next__()

从容器中返回下一项。

序列类型

有三种基本序列类型:list, tuple 和 range 对象。

下面是通用的序列操作:

代码语言:javascript
复制
如果 s 中的某项等于 x 则结果为 True,否则为 False

可变序列类型的操作:

代码语言:javascript
复制
将 s 的第 i 项替换为 x

序列类型包括列表,元组,range对象和文本序列str。

这里重点看下str的方法:

代码语言:javascript
复制
返回原字符串的副本,其首个字符大写,其余为小写。

还包括几个二进制序列类型: bytes, bytearray, memoryview

bytes 对象是由单个字节构成的不可变序列。

表示 bytes 字面值的语法与字符串字面值的大致相同,只是添加了一个 b 前缀。

bytearray 对象是 bytes 对象的可变对应物。bytearray 对象没有专属的字面值语法,它们总是通过调用构造器来创建。

我们看下bytes和bytearray的基本操作:

代码语言:javascript
复制
返回子序列 sub 在 [start, end] 范围内非重叠出现的次数。可选参数 start 与 end 会被解读为切片表示法。

memoryview 对象允许 Python 代码访问一个对象的内部数据,只要该对象支持 缓冲区协议 而无需进行拷贝。

obj 必须支持缓冲区协议。支持缓冲区协议的内置对象包括 bytes 和 bytearray。

集合类型

集合中存放的是不重复的数据。主要有set 和 frozenset两种。

set 类型是可变的 — 其内容可以使用 add() 和 remove() 这样的方法来改变。由于是可变类型,它没有哈希值,且不能被用作字典的键或其他集合的元素。

frozenset 类型是不可变并且为 hashable — 其内容在被创建后不能再改变;因此它可以被用作字典的键或其他集合的元素。

看下集合的基本操作:

代码语言:javascript
复制
返回集合 s
 中的元素数量(即 s
 的基数)。

映射类型

python中的映射类型是dict。只要是hashable的对象都可以作为dict的key。

字典可用多种方式来创建:

  • 使用花括号内以逗号分隔 键: 值 对的方式: {'jack': 4098, 'sjoerd': 4127} or {4098: 'jack', 4127: 'sjoerd'}
  • 使用字典推导式: {}, {x: x ** 2 for x in range(10)}
  • 使用类型构造器: dict(), dict([('foo', 100), ('bar', 200)]), dict(foo=100, bar=200)

如果没有给出位置参数,将创建一个空字典。

字典的操作:

代码语言:javascript
复制
返回字典 d 中使用的所有键的列表。

字典视图对象

由 dict.keys(), dict.values() 和 dict.items() 所返回的对象是 视图对象。该对象提供字典条目的一个动态视图,这意味着当字典改变时,视图也会相应改变。

字典视图可以被迭代以产生与其对应的数据,并支持成员检测:

代码语言:javascript
复制
返回字典中的条目数。

内置异常

Python中所有的异常都来自BaseException ,我们看下内置异常的层级结构:

代码语言:javascript
复制
BaseException
 +-- SystemExit
 +-- KeyboardInterrupt
 +-- GeneratorExit
 +-- Exception
      +-- StopIteration
      +-- StopAsyncIteration
      +-- ArithmeticError
      |    +-- FloatingPointError
      |    +-- OverflowError
      |    +-- ZeroDivisionError
      +-- AssertionError
      +-- AttributeError
      +-- BufferError
      +-- EOFError
      +-- ImportError
      |    +-- ModuleNotFoundError
      +-- LookupError
      |    +-- IndexError
      |    +-- KeyError
      +-- MemoryError
      +-- NameError
      |    +-- UnboundLocalError
      +-- OSError
      |    +-- BlockingIOError
      |    +-- ChildProcessError
      |    +-- ConnectionError
      |    |    +-- BrokenPipeError
      |    |    +-- ConnectionAbortedError
      |    |    +-- ConnectionRefusedError
      |    |    +-- ConnectionResetError
      |    +-- FileExistsError
      |    +-- FileNotFoundError
      |    +-- InterruptedError
      |    +-- IsADirectoryError
      |    +-- NotADirectoryError
      |    +-- PermissionError
      |    +-- ProcessLookupError
      |    +-- TimeoutError
      +-- ReferenceError
      +-- RuntimeError
      |    +-- NotImplementedError
      |    +-- RecursionError
      +-- SyntaxError
      |    +-- IndentationError
      |         +-- TabError
      +-- SystemError
      +-- TypeError
      +-- ValueError
      |    +-- UnicodeError
      |         +-- UnicodeDecodeError
      |         +-- UnicodeEncodeError
      |         +-- UnicodeTranslateError
      +-- Warning
           +-- DeprecationWarning
           +-- PendingDeprecationWarning
           +-- RuntimeWarning
           +-- SyntaxWarning
           +-- UserWarning
           +-- FutureWarning
           +-- ImportWarning
           +-- UnicodeWarning
           +-- BytesWarning
           +-- ResourceWarning

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序那些事 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • 内置函数
  • 内置常量
  • 内置类型
    • 逻辑值检测
      • 逻辑值的布尔运算
      • 比较运算
    • 数字类型
      • 整数类型的位运算
      • 整数类型的附加方法
      • 浮点类型的附加方法
    • 迭代器
      • 序列类型
        • 集合类型
          • 映射类型
            • 字典视图对象
        • 内置异常
        相关产品与服务
        容器服务
        腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档