C语言中如何先读取指定长度的计算一个字符串中子串出现的次数,运算后,再继续读取相同长度计算一个字符串中子串出现的次数,再进行运算?

以下部分描述了内置在解释器中的标准类型。

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

某些集合类是可变的。在适当的位置添加、减去或重新排列成员,并且不返回特定项的方法,从不返回集合实例本身,但 None .

一些操作由多个对象类型支持;特别是,几乎所有对象都可以进行相等比较、测试真值并转换为字符串(使用 功能还是稍有不同 函数)。当对象由 功能。

任何对象都可以测试真值,用于 或 条件或作为以下布尔运算的操作数。

默认情况下,除非对象的类定义了 __bool__() 返回的方法 False 或A __len__() 当用对象调用时返回零的方法。 以下是大多数被认为是错误的内置对象:

见 对于将删除单个前缀字符串而不是一组字符的方法。例如::

要删除的字节值的二进制序列可以是 . 见 对于将删除单个前缀字符串而不是一组字符的方法。例如::

这个方法的bytearray版本 not 就地操作-它总是生成一个新对象,即使没有进行任何更改。

要删除的字节值的二进制序列可以是 .

这个方法的bytearray版本 not 就地操作-它总是生成一个新对象,即使没有进行任何更改。

字节和字节数组对象上的以下方法假定使用与ASCII兼容的二进制格式,不应应用于任意二进制数据。请注意,本节中的所有bytearray方法都 not 就地操作,然后生成新对象。

返回序列的副本,每个字节解释为一个ASCII字符,第一个字节大写,其余字节小写。非ASCII字节值通过未更改的方式传递。

这个方法的bytearray版本 not 就地操作-它总是生成一个新对象,即使没有进行任何更改。

根据当前列和给定的制表符大小,返回一个序列的副本,其中所有ASCII制表符替换为一个或多个ASCII空格。制表位发生间隔 表格大小 字节(默认值为8,在列0、8、16等处给出制表位)。要展开序列,当前列设置为零,并逐字节检查序列。如果字节是ASCII制表符 (b'\t' )将在结果中插入一个或多个空格字符,直到当前列等于下一个选项卡位置。(不复制制表符本身。)如果当前字节是ASCII换行符 (b'\n' )或回车 (b'\r' ,它被复制,当前列重置为零。复制的任何其他字节值不变,并且当前列的增量为1,而不管打印时如何表示字节值::

这个方法的bytearray版本 not 就地操作-它总是生成一个新对象,即使没有进行任何更改。

返回 True 如果序列中的所有字节都是字母ASCII字符或ASCII十进制数字,并且序列不是空的, False 否则。字母ASCII字符是序列中的字节值

返回 True 如果序列中的所有字节都是字母ASCII字符,并且序列不是空的, False 否则。字母ASCII字符是序列中的字节值

返回 True 如果序列为空或序列中的所有字节都是ASCII, False 否则。ASCII字节在0-0x7F范围内。

返回 True 如果序列中的所有字节都是ASCII十进制数字,并且序列不是空的, False 否则。ASCII十进制数字是序列中的字节值 b'' .

返回 True 如果序列中至少有一个小写的ASCII字符,而没有大写的ASCII字符, False 否则。

(空格、制表符、换行符、回车符、垂直制表符、换页符)。

返回 True 如果序列是ASCII titlecase并且序列不是空的, False 否则。见 有关“标题栏”定义的更多详细信息。

返回 True 如果序列中至少有一个大写字母ASCII字符,而没有小写ASCII字符, False 否则。

返回序列的副本,将所有大写的ASCII字符转换为相应的小写对应字符。

这个方法的bytearray版本 not 就地操作-它总是生成一个新对象,即使没有进行任何更改。

返回二进制序列中的行列表,在ASCII行边界处中断。此方法使用 接近分割线。换行符不包括在结果列表中,除非 守护者 是给予和真实的。

不像 当分隔符字符串 sep 如果给定,则此方法返回空字符串的空列表,并且终端换行不会导致额外的行:

返回序列的副本,将所有小写的ASCII字符转换为相应的大写对应字符,反之亦然。

对于二进制版本。大小写转换在ASCII中是对称的,即使对于任意Unicode代码点来说这通常不是正确的。

这个方法的bytearray版本 not 就地操作-它总是生成一个新对象,即使没有进行任何更改。

返回二进制序列的基于标题的版本,其中单词以大写ASCII字符开头,其余字符为小写。未经修改的字节值保持不变。

该算法使用一个简单的独立于语言的单词定义作为连续字母组。这个定义在许多上下文中都有效,但它意味着在收缩和所有物中的撇号形成了单词边界,这可能不是所期望的结果:

可以使用正则表达式构造撇号的解决方案::

这个方法的bytearray版本 not 就地操作-它总是生成一个新对象,即使没有进行任何更改。

返回序列的副本,将所有小写ASCII字符转换为相应的大写对应字符。

这个方法的bytearray版本 not 就地操作-它总是生成一个新对象,即使没有进行任何更改。

返回用ASCII填充的序列的副本 b'0' 数字组成一个长度序列 宽度 . 前导符号前缀 (b'+' / b'-' )通过插入填充来处理 之后 符号字符,而不是之前。为了

这个方法的bytearray版本 not 就地操作-它总是生成一个新对象,即使没有进行任何更改。

这里描述的格式化操作显示了导致许多常见错误(例如未能正确显示元组和字典)的各种异常。如果要打印的值可能是元组或字典,请将其封装为元组。

% values (何处) 格式 是字节对象)。 % 转换规范 格式 被零个或多个元素替换 价值观 . 效果类似于使用 sprintf() 用C语言。

如果 格式 需要一个参数, 价值观 可以是单个非元组对象。 否则, 价值观 必须是一个tuple,其值与format bytes对象指定的项数完全相同,或者是一个映射对象(例如,字典)。

转换说明符包含两个或多个字符,并具有以下组件,这些组件必须按此顺序出现:

  1. 这个 '%' 字符,标记说明符的开头。

  2. 映射键(可选),由带括号的字符序列组成(例如, (somename)

  3. 转换标志(可选),影响某些转换类型的结果。

  4. 最小字段宽度(可选)。如果指定为 '*' (星号),从中的元组的下一个元素读取实际宽度。 价值观 ,要转换的对象在最小字段宽度和可选精度之后。

  5. 精度(可选),作为 '.' (点),然后是精度。如果指定为 '*' (星号),实际精度从中的元组的下一个元素读取。 价值观 ,要转换的值在精度之后。

当右参数是字典(或其他映射类型)时,则字节对象中的格式 must 在字典中包含一个插入括号的映射键 '%' 性格。映射键从映射中选择要格式化的值。例如:

在这种情况下,没有 * 说明符可能以一种格式出现(因为它们需要一个连续的参数列表)。

值转换将使用“替代形式”(定义见下文)。

对于数值,转换将被零填充。

转换后的值进行左调整(覆盖 '0' 如果两者都给出,则转换)。

(空格)在有符号转换产生的正数(或空字符串)之前应该留一个空白。

符号字符 ('+''-' )将在转换之前(覆盖“空格”标志)。

长度修改器 (hlL )可能存在,但会被忽略,因为这对于Python来说是不必要的——例如。 %ld 相同

有符号十六进制(小写)。

有符号十六进制(大写)。

浮点指数格式(小写)。

浮点指数格式(大写)。

浮点格式。如果指数小于-4或不小于精度,则使用小写指数格式,否则使用十进制格式。

浮点格式。如果指数小于-4或不小于精度,则使用大写指数格式,否则使用十进制格式。

单字节(接受整数或单字节对象)。

未转换任何参数,将导致 '%' 结果中的字符。

  1. 替代形式导致前导八进制说明符 ('0o' )在第一个数字之前插入。

  2. 替代形式导致前导 '0x''0X' (取决于 'x''X' 格式)插入第一个数字之前。

  3. 替代形式使结果始终包含小数点,即使后面没有数字。

    精度决定小数点后的位数,默认为6。

  4. 替代形式会导致结果始终包含小数点,并且尾随的零不会像原来那样被删除。

    精度决定小数点前后的有效位数,默认为6。

  5. 如果精度是 N ,输出被截断为 N 字符。

  6. b'%s' 已弃用,但在3.x系列中不会删除。

  7. b'%r' 已弃用,但在3.x系列中不会删除。

这个方法的bytearray版本 not 就地操作-它总是生成一个新对象,即使没有进行任何更改。

对象允许python代码访问支持 不复制。

创建一个 参考文献 obj . obj 必须支持缓冲区协议。支持缓冲区协议的内置对象包括 和 .

A 有一个概念 要素 ,它是由原始对象处理的原子内存单元 obj . 对于许多简单类型,例如 和 ,元素是单个字节,但其他类型如 可能有更大的元素。

0 ,长度为1。如果 view.ndim = 1 ,长度等于视图中的元素数。对于更高的维度,长度等于视图的嵌套列表表示的长度。这个 属性将给出单个元素中的字节数。

A 支持切片和索引以公开其数据。一维切片将导致子视图:

如果 是中的本机格式说明符之一 模块,也支持使用整数或整数元组进行索引,并返回单个 要素 类型正确。一维内存视图可以用一个整数或一个整数元组进行索引。多维内存视图可以用精确的元组索引 ndim 整数在哪里 ndim 是维度数。零维内存视图可以用空元组进行索引。

以下是非字节格式的示例:

如果基础对象是可写的,则memoryView支持一维切片分配。不允许调整大小::

格式为“b”、“b”或“c”的可散列(只读)类型的一维内存视图也可以散列。hash定义为 hash(m) == hash(m.tobytes()) ::

在 3.3 版更改: 现在可以切片一维记忆视图。格式为“b”、“b”或“c”的一维内存视图现在可以散列。

在 3.5 版更改: 现在可以用整数元组为memoryview建立索引。

记忆视图和 如果导出器的形状是等效的,并且当操作数各自的格式代码被解释为 语法。

如果 模块,则对象将始终比较为不相等(即使格式字符串和缓冲区内容相同)::

在 3.3 版更改: 以前的版本比较了原始内存,忽略了项格式和逻辑数组结构。

以字节串的形式返回缓冲区中的数据。这相当于调用 memoryView上的构造函数。::

对于非连续数组,结果等于将所有元素转换为字节的扁平列表表示形式。 支持所有格式字符串,包括不在 模块语法。

3.8 新版功能: 秩序 可以是'C'、'F'、'A'。什么时候? 秩序 为“c”或“f”,原始数组的数据转换为C或Fortran顺序。对于连续视图,“a”返回物理内存的精确副本。特别是,在内存中保留了FORTRAN顺序。对于非连续视图,首先将数据转换为C。 order=None

返回一个字符串对象,该对象包含缓冲区中每个字节的两个十六进制数字。::

以元素列表的形式返回缓冲区中的数据。::

释放由memoryView对象公开的基础缓冲区。许多对象在其上保留视图时会采取特殊操作(例如, 会暂时禁止调整大小);因此,调用release()可以很方便地尽快删除这些限制(并释放任何悬空资源)。

调用此方法后,对视图的任何进一步操作都将引发 (除外) 自身,可多次调用)::

上下文管理协议可以用于类似的效果,使用 with 声明:

目标格式仅限于中的单个元素本机格式 语法。其中一种格式必须是字节格式(“b”、“b”或“c”)。结果的字节长度必须与原始长度相同。

将1d/长转换为1d/无符号字节::

将1d/无符号字节强制转换为1d/字符::

将1d/字节转换为3d/整数转换为1d/有符号字符:

将1d/无符号长转换为2d/无符号长:

在 3.5 版更改: 当强制转换为字节视图时,源格式不再受到限制。

还有几个只读属性可用:

这是数组将在连续表示中使用的字节空间量。它不一定等于 len(m) ::

指示内存是否为只读的布尔值。

模块样式)。可以从具有任意格式字符串的导出器创建memoryView,但某些方法(例如 )仅限于本机单个元素格式。

memoryView的每个元素的字节大小:

一个整数,指示内存表示的多维数组的维数。

整数的一个元组,其长度为 以n维数组的形式给出存储器的形状。

整数的一个元组,其长度为 为数组的每个维度提供访问每个元素的字节大小。

内部用于PIL样式数组。该值仅供参考。

指示内存是否为C的布尔值。 - .

指示内存是否为Fortran的布尔值 .

A set 对象是distinct的无序集合 物体。常见的用途包括成员资格测试、从序列中删除重复项以及计算数学运算,如交集、并集、差分和对称差分。(对于其他容器,请参见内置的 , 和 课程,以及 模块。

.作为无序集合,集合不记录元素位置或插入顺序。因此,集合不支持索引、切片或其他类似序列的行为。

目前有两种内置的集合类型, 和 . 这个 类型是可变的---可以使用如下方法更改内容 add()remove() . 因为它是可变的,所以它没有hash值,不能用作字典键或另一个集合的元素。这个 类型不可变且 ---其内容创建后不能更改,因此可以用作字典键或其他集合的元素。

非空集(非冻结集)可以通过在大括号内放置以逗号分隔的元素列表来创建,例如: {{'jack', 'sjoerd'}} ,除了 构造函数。

两个类的构造函数的工作原理相同:

返回其元素取自的新集合或冻结集合对象 可迭代的 . 集合的元素必须是 . 要表示集合的集合,内部集合必须 物体。如果 可迭代的 未指定,将返回新的空集。

可以通过多种方式创建集合:

实例 和 提供以下操作:

返回集合中的元素数 s (基数) s

返回 True 如果集合中没有与 other . 当且仅当集合的交集为空集合时,集合才是不相交的。

测试集合中的每个元素是否都在 other .

测试中的每个元素 other 在集合中。

返回包含集合和所有其他元素的新集合。

返回一个新集合,其中包含集合和所有其他集合的公共元素。

返回一个新集合,集合中的元素不在其他集合中。

返回包含集合或中元素的新集合 other 但并非两者兼而有之。

注:非操作员版本 , , , , 和 方法将接受任何ITerable作为参数。相反,它们基于运算符的对应项要求将参数设置为集合。这排除了容易出错的结构,例如 set('abc') & 'cbs' 有利于提高可读性

支持设置为设置比较。如果且仅当每个集合的每个元素都包含在另一个集合中(每个元素都是另一个集合的子集),则两个集合相等。如果且仅当第一个集合是第二个集合的适当子集(是子集,但不相等),则集合小于另一个集合。当且仅当第一个集合是第二个集合的适当超集(是超集,但不等于)时,集合大于另一个集合。

实例 与 基于他们的成员。例如, set('abc')

子集和相等比较不能概括为总排序函数。例如,任意两个非空的不相交集不相等,也不是彼此的子集,因此 all 以下返回的 Falsea<ba==b

由于集合只定义部分排序(子集关系),因此 方法未定义集合列表。

集合元素(如字典键)必须 .

混合的二元运算 实例与 返回第一个操作数的类型。例如:

下表列出了可用于 不适用于 :

更新集合,添加所有其他元素。

更新集合,只保留其中的元素和所有其他元素。

更新集合,删除在其他集合中找到的元素。

更新集合,只保留在任一集合中找到的元素,而不同时保留在两者中。

添加元素 elem 到集合。

移除元素 elem 从集合。引发 如果 elem 不包含在集合中。

移除元素 elem 如果存在的话。

从集合中移除并返回任意元素。引发 如果集合为空。

从集合中移除所有元素。

注意,非操作员版本的 , , 和 方法将接受任何ITerable作为参数。

注意, elem 参数 __contains__() , 和 方法可以是一组。为了支持搜索等效冻结集,从创建临时冻结集 elem .

A 对象映射 任意对象的值。映射是可变对象。当前只有一种标准映射类型,即 dictionary . (对于其他容器,请参见内置的 , 和 课程,以及 模块。

字典的键是 几乎 任意值。不是的值 也就是说,包含列表、字典或其他可变类型(按值而不是按对象标识进行比较)的值不能用作键。用于键的数字类型遵循数字比较的常规规则:如果两个数字比较相等(例如 11.0 )然后可以互换使用它们来索引同一个字典条目。(但是请注意,由于计算机将浮点数字存储为近似值,因此将它们用作字典键通常是不明智的。)

返回从可选位置参数和可能为空的关键字参数集初始化的新字典。

可以通过以下几种方式创建词典:

如果没有指定位置参数,则创建空字典。如果给定了位置参数并且它是映射对象,则将使用与映射对象相同的键值对创建字典。否则,位置参数必须是 对象。iterable中的每个项本身必须是一个iterable,只有两个对象。每个项的第一个对象将成为新字典中的键,第二个对象将成为相应的值。如果键出现多次,则该键的最后一个值将成为新字典中的对应值。

如果给定关键字参数,则关键字参数及其值将添加到从位置参数创建的字典中。如果已存在要添加的键,则关键字参数中的值将替换位置参数中的值。

如第一个示例所示,提供关键字参数只对有效的Python标识符的键有效。否则,可以使用任何有效密钥。

这些是字典支持的操作(因此,自定义映射类型也应该支持):

返回字典中使用的所有键的列表 d .

返回字典中的项数 d .

返回的项 d 带钥匙 key .提高 如果 key 不在地图上。

0

返回对字典键的迭代器。这是一个快捷方式 iter(d.keys()) .

使用键从创建新词典 可迭代的 和值设置为 value .

是返回新字典的类方法。 价值 默认为 None . 所有的值都只引用一个实例,因此对于 价值 是可变对象,如空列表。要获得不同的值,请使用 相反。

返回字典键的新视图。查看 .

如果 key 在字典中,移除并返回其值,否则返回 default . 如果 default 没有给予和 key 不在字典中,a 提高了。

对于破坏性地迭代字典非常有用,这在集合算法中经常使用。如果字典为空,则调用 提高 .

在 3.7 版更改: 后进先出订单现已得到保证。在以前的版本中, 将返回任意键/值对。

使用来自的键/值对更新字典 other ,覆盖现有密钥。返回 None .

接受另一个字典对象或键/值对的iterable(作为元组或长度为2的其他iterable)。如果指定了关键字参数,则字典将使用这些键/值对进行更新:

返回字典值的新视图。见 .

使用合并的键和值创建新词典 d其他 ,必须都是字典。价值观 其他 优先考虑 d其他 共享密钥。

更新字典 d 键和值来自 其他 ,可以是 或 键/值对的。价值观 其他 优先考虑 d其他 共享密钥。

字典只有在具有相同的条件下才具有相等的比较 (key, value) 成对(不考虑顺序)。顺序比较(“<”、“<=”、“>=”、“>”)提升 .

词典保留插入顺序。请注意,更新密钥不会影响顺序。删除后添加的键将插入到末尾。::

在 3.7 版更改: 字典顺序保证为插入顺序。这个行为是3.6中的cpython的一个实现细节。

字典和字典视图是可逆的。地址:

在 3.8 版更改: 字典现在是可逆的。

返回的对象 , 和 是 查看对象 . 它们提供字典条目的动态视图,这意味着当字典更改时,视图会反映这些更改。

可以迭代字典视图以生成各自的数据,并支持成员资格测试:

返回键、值或项的迭代器(表示为 (key, value) )在字典里。

在字典中添加或删除条目时迭代视图可能会引发 或者未能迭代所有条目。

在 3.7 版更改: 字典顺序保证为插入顺序。

返回 True 如果 x 在基础字典的键、值或项中(在后一种情况下, x 应该是 (key, value) 元组)

对字典的键、值或项返回反向迭代器。视图将按插入的相反顺序进行迭代。

在 3.8 版更改: 字典视图现在是可逆的。

返回A 它包装视图所引用的原始字典。

键视图的设置与之类似,因为它们的条目是唯一的,并且是可hash的。如果所有值都是可hash的,那么 (key, value) 对是唯一的和可hash的,那么items视图也设置为。(值视图不被视为集样视图,因为条目通常不唯一。)对于集样视图,为抽象基类定义的所有操作 可用(例如,

Python 的 语句支持由上下文管理器定义的运行时上下文的概念。这是使用一对方法实现的,这些方法允许用户定义的类定义在执行语句体之前输入的运行时上下文,并在语句结束时退出:

输入运行时上下文并返回此对象或与运行时上下文相关的其他对象。此方法返回的值绑定到 as 条款 使用此上下文管理器的语句。

返回自身的上下文管理器的示例是 . 文件对象从回车返回到允许 将用作

返回相关对象的上下文管理器的示例是 .这些管理器将活动的十进制上下文设置为原始十进制上下文的副本,然后返回副本。这允许对正文中的当前十进制上下文进行更改 不影响代码的语句 with 语句。

退出运行时上下文并返回一个布尔标志,指示是否应取消发生的任何异常。如果在执行 语句中,参数包含异常类型、值和回溯信息。否则,这三个参数都是 None .

从该方法返回真值将导致 语句来抑制异常并继续执行 with 语句。否则,在该方法完成执行后,异常将继续传播。在执行此方法期间发生的异常将替换在

传入的异常决不应显式重新引发-相反,此方法应返回一个错误值,以指示该方法已成功完成,并且不希望抑制引发的异常。这允许上下文管理代码轻松检测 方法实际上失败了。

python定义了几个上下文管理器,以支持简单的线程同步、文件或其他对象的快速关闭以及活动十进制算术上下文的简单操作。除了上下文管理协议的实现之外,不专门处理特定类型。见 一些例子的模块。

方法,而不是由未修饰的生成器函数生成的迭代器。

注意,在python/c api中的python对象的类型结构中,这些方法都没有特定的槽。想要定义这些方法的扩展类型必须将它们作为普通的Python可访问方法提供。与设置运行时上下文的开销相比,单个类字典查找的开销可以忽略不计。

的核心内置类型 是 和 。

GenericAlias 对象是通过为类(通常是容器)下标来创建的,例如 list[int] 。它们主要用于 。

通常情况下, 的容器对象调用该方法 __getitem__() 对象的。但是,某些容器的类的订阅可能会调用类方法

这个 GenericAlias 对象充当 ,实施 参数化泛型 -为容器元素提供类型的泛型的特定实例。

对象的用户公开类型。 GenericAlias 可以从以下位置访问对象 并用于 支票。它还可以用于创建 GenericAlias 直接访问对象。

创建一个 GenericAlias 表示一种类型 T 包含类型元素的 XY ,以及更多内容,具体取决于 T 使用。例如,一个函数需要一个 包含 元素::

另一个示例是 对象,使用 ,它是一个泛型类型,需要两个表示键类型和值类型的类型参数。在此示例中,该函数需要一个 dict 具有以下类型的键 和类型的值 ::

内置函数 和 不接受 GenericAlias 第二个参数的类型::

Python运行时不强制 。这扩展到泛型类型及其类型参数。当从 GenericAlias ,则不对照其类型检查容器元素。例如,不建议使用以下代码,但运行时不会出现错误:

此外,参数化泛型会在对象创建过程中擦除类型参数:

呼叫 或 在泛型上显示参数化类型::

但是,此类表达式在以下情况下有效 都是用过的。索引中的类型变量项的数量必须与 GenericAlias 对象的 。::

这些标准库集合支持参数化泛型。

所有参数化泛型都实现特殊的只读属性。

此属性指向非参数化泛型类::

此属性是一个 (可能长度为1)传递给原始的泛型类型 __class_getitem__() 泛型容器的::

此属性是在以下位置找到的唯一类型变量的延迟计算元组(可能为空 __args__ ::

  • --“标准集合中的类型提示泛型”

联合对象保存 | (按位或)对多个 。这些类型主要用于 。与相比,联合类型表达式支持更清晰的类型提示语法 。

定义包含类型的联合对象 XY ,以此类推。 X | Y 表示X或Y。它等同于 typing.Union[X, Y] 。例如,以下函数需要类型为

可以测试联合对象与其他联合对象是否相等。详细信息:

  • 工会的工会是扁平化的:

  • 比较并集时,忽略顺序::

  • 可选类型可以拼写为与 None ::

呼叫至 也受联合对象支持::

但是,包含以下内容的联合对象 不能使用::

呼叫至 也受联合对象支持::

但是,包含以下内容的联合对象 不能使用::

可以从访问联合对象的用户公开类型 并用于 支票。不能从类型::实例化对象

这个 __or__() 添加了类型对象的方法以支持语法 X | Y 。如果元类实现了 __or__() ,工会可以覆盖它::

解释器支持其他几种对象。其中大多数只支持一个或两个操作。

模块上唯一的特殊操作是属性访问: m.name 在哪里 m 是一个模块 name 访问中定义的名称 m 的符号表。模块属性可以分配给。(注意 严格来说,语句不是对模块对象的操作; import foo 不需要名为的模块对象 foo 要生存,它需要一个(外部的) 定义 对于名为 foo 某处)

每个模块的一个特殊属性是 . 这是包含模块符号表的字典。修改此字典实际上会更改模块的符号表,但会直接分配给 属性不可能(您可以 m.__dict__['a'] = 1 定义 m.a 成为

函数对象由函数定义创建。对函数对象的唯一操作是调用它: func(argument-list) .

实际上有两种类型的函数对象:内置函数和用户定义函数。两者都支持相同的操作(调用函数),但实现不同,因此对象类型也不同。

方法是使用属性表示法调用的函数。有两种风格:内置方法(例如 append() 和类实例方法。使用支持它们的类型描述内置方法。

如果通过实例访问方法(类命名空间中定义的函数),则会得到一个特殊的对象:a bound method (也称为 instance method 对象。当调用时,它将添加 self 参数列表的参数。绑定方法有两个特殊的只读属性:

与函数对象一样,绑定方法对象支持获取任意属性。但是,由于方法属性实际上存储在基础函数对象上 (meth.__func__ ,不允许对绑定方法设置方法属性。尝试对方法设置属性会导致 被引发。要设置方法属性,需要在基础函数对象上显式设置该属性:

代码对象被实现用来表示“伪编译”的可执行python代码,如函数体。它们不同于函数对象,因为它们不包含对全局执行环境的引用。代码对象由内置的 函数,可以通过函数对象

通过将代码对象(而不是源字符串)传递给 或 内置功能。

类型对象表示各种对象类型。内置函数可以访问对象的类型 . 对类型没有特殊操作。标准模块 定义所有标准内置类型的名称。

此对象由不显式返回值的函数返回。它不支持特殊操作。只有一个空对象,名为 None (内置名称)。 type(None)() 生成相同的单例。

此对象通常由切片使用(请参见 )它不支持特殊操作。只有一个省略号对象,名为 (内置名称)。 type(Ellipsis)() 产生 单件。

当要求对不支持的类型进行操作时,从比较和二进制操作返回此对象。见 更多信息。只有一个 NotImplemented 对象。

布尔值是两个常量对象 FalseTrue . 它们用于表示真值(尽管其他值也可以视为假或真)。在数值上下文中(例如,当用作算术运算符的参数时),它们的行为分别类似于整数0和1。内置功能 可用于将任何值转换为布尔值,如果该值可以解释为真值(请参见第节 以上)。

见 关于这个信息。它描述堆栈帧对象、回溯对象和切片对象。

实现将一些特殊的只读属性添加到几个与之相关的对象类型中。其中一些不是由 内置功能。

用于存储对象(可写)属性的字典或其他映射对象。

类、函数、方法、描述符或生成器实例的名称。

这个 类、函数、方法、描述符或生成器实例的。

此属性是在方法解析期间查找基类时考虑的类的元组。

此方法可以由元类重写,以自定义其实例的方法解析顺序。它在类实例化时调用,其结果存储在 .

每个类都保留对其直接子类的弱引用列表。此方法返回所有仍处于活动状态的引用的列表。该列表按定义顺序排列。示例::

}

大家好,又见面了,我是你们的朋友全栈君。

如果你在寻找工作,那你的面试可能会涉及Python相关的问题。

通过对网络资料的收集整理,本文列出了100道python的面试题以及答案,你可以根据需求阅读测试。

平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。

}

我要回帖

更多关于 计算一个字符串中子串出现的次数 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信