非常教程

Python参考手册

数字与数学 | Numeric & Mathematical

operator

operator模块导出一组对应于Python内部运算符的高效函数。例如,operator.add(x, y)相当于表达式x+y。函数名称是用于特殊类方法的函数名称; __为方便起见,还提供了无前导和尾随的变体。

函数分为执行对象比较,逻辑运算,数学运算,序列运算和抽象类型测试的类别。

对象比较函数对于所有对象都很有用,并且以它们支持的丰富比较运算符命名:

operator.lt(a, b)operator.le(a, b)operator.eq(a, b)operator.ne(a, b)operator.ge(a, b)operator.gt(a, b)operator.__lt__(a, b)operator.__le__(a, b)operator.__eq__(a, b)operator.__ne__(a, b)operator.__ge__(a, b)operator.__gt__(a, b)

ab之间执行“丰富的比较” 。具体而言,lt(a, b)就相当于a < ble(a, b)等同于a <= beq(a, b)相当于a == bne(a, b)等同于a != bgt(a, b)相当于a > bge(a, b)相当于a >= b。请注意,与内置cmp()函数不同,这些函数可以返回任何值,这些值可以或不可以被解释为布尔值。有关富比较的更多信息,请参阅比较。

2.2版本中的新功能。

逻辑操作通常也适用于所有对象,并支持真值测试,身份测试和布尔操作:

operator.not_(obj)operator.__not__(obj)

返回obj的结果。(注意对象实例没有方法;只有解释器内核定义了这个操作,结果受到和方法的影响。)not __not__()__nonzero__()__len__()

operator.truth(obj)

True如果obj为真,False则返回,否则返回。这相当于使用bool构造函数。

operator.is_(a, b)

返回a is b。测试对象标识。

2.3版本的新功能。

operator.is_not(a, b)

返回a is not b。测试对象标识。

2.3版本的新功能。

数学和位运算是最多的:

operator.abs(obj)operator.__abs__(obj)

返回obj的绝对值。

operator.add(a, b)operator.__add__(a, b)

返回a + b,用于一个b的数字。

operator.and_(a, b)operator.__and__(a, b)

返回按位和ab

operator.div(a, b)operator.__div__(a, b)

无效a / b时返回__future__.division。这也被称为“经典”分工。

operator.floordiv(a, b)operator.__floordiv__(a, b)

返回a // b

2.2版本中的新功能。

operator.index(a)operator.__index__(a)

返回一个转换为整数。相当于a.__index__()

2.5版本中的新功能。

operator.inv(obj)operator.invert(obj)operator.__inv__(obj)operator.__invert__(obj)

返回数字obj的按位倒数。这相当于~obj

版本2.0中的新功能:名称invert()__invert__()

operator.lshift(a, b)operator.__lshift__(a, b)

返回一个左移b

operator.mod(a, b)operator.__mod__(a, b)

返回a % b

operator.mul(a, b)operator.__mul__(a, b)

返回a * b,用于一个b的数字。

operator.neg(obj)operator.__neg__(obj)

返回obj否定(-obj)。

operator.or_(a, b)operator.__or__(a, b)

按位或返回ab

operator.pos(obj)operator.__pos__(obj)

返回obj positive(+obj)。

operator.pow(a, b)operator.__pow__(a, b)

返回a ** b,用于一个b的数字。

2.3版本的新功能。

operator.rshift(a, b)operator.__rshift__(a, b)

返回一个由右移b

operator.sub(a, b)operator.__sub__(a, b)

返回a - b

operator.truediv(a, b)operator.__truediv__(a, b)

返回a / b__future__.division生效。这也被称为“真实”部门。

2.2版本中的新功能。

operator.xor(a, b)operator.__xor__(a, b)

返回按位独占或ab

与序列一起工作的操作(其中一些与映射也一样)包括:

operator.concat(a, b)operator.__concat__(a, b)

返回a + b一个b序列。

operator.contains(a, b)operator.__contains__(a, b)

返回测试的结果b in a。请注意颠倒的操作数。

版本2.0中的新功能:名称__contains__()

operator.countOf(a, b)

返回的出现次数b中的一个

operator.delitem(a, b)operator.__delitem__(a, b)

除去的值一个索引b

operator.delslice(a, b, c)operator.__delslice__(a, b, c)

删除的切片一个从索引b到索引C-1

自2.6版弃用:此功能在Python 3.x中被删除。使用delitem()与切片指数。

operator.getitem(a, b)operator.__getitem__(a, b)

返回的值一个索引b

operator.getslice(a, b, c)operator.__getslice__(a, b, c)

返回的切片一个从索引b到索引C-1

自2.6版弃用:此功能在Python 3.x中被删除。使用getitem()与切片指数。

operator.indexOf(a, b)

返回第一个的发生的索引b一个

operator.repeat(a, b)operator.__repeat__(a, b)

自2.7版弃用:__mul__()改为使用。

返回a * b,其中一个是一个序列和b是整数。

operator.sequenceIncludes(...)

自2.0版弃用:contains()改为使用。

别名contains()

operator.setitem(a, b, c)operator.__setitem__(a, b, c)

设定的值一个索引bÇ

operator.setslice(a, b, c, v)operator.__setslice__(a, b, c, v)

的切片设定一个从索引b到索引C-1到序列v

自2.6版弃用:此功能在Python 3.x中被删除。使用setitem()与切片指数。

操作员功能的使用示例:

>>> # Elementwise multiplication
>>> map(mul, [0, 1, 2, 3], [10, 20, 30, 40])
[0, 20, 60, 120]

>>> # Dot product
>>> sum(map(mul, [0, 1, 2, 3], [10, 20, 30, 40]))
200

许多操作都有一个“就地”版本。下面的函数提供了比通常的语法更原始的就地操作符的访问; 例如,该陈述 x += y相当于x = operator.iadd(x, y)。另一种说法就是说这z = operator.iadd(x, y)相当于复合语句z = x; z += y

operator.iadd(a, b)operator.__iadd__(a, b)

a = iadd(a, b) is equivalent to a += b.

2.5版本中的新功能。

operator.iand(a, b)operator.__iand__(a, b)

a = iand(a, b)相当于a &= b

2.5版本中的新功能。

operator.iconcat(a, b)operator.__iconcat__(a, b)

a = iconcat(a, b)相当于a += b用于一个b序列。

2.5版本中的新功能。

operator.idiv(a, b)operator.__idiv__(a, b)

a = idiv(a, b)相当于a /= b什么时候__future__.division不生效。

2.5版本中的新功能。

operator.ifloordiv(a, b)operator.__ifloordiv__(a, b)

a = ifloordiv(a, b)相当于a //= b

2.5版本中的新功能。

operator.ilshift(a, b)operator.__ilshift__(a, b)

a = ilshift(a, b)相当于a <<= b

2.5版本中的新功能。

operator.imod(a, b)operator.__imod__(a, b)

a = imod(a, b)相当于a %= b

2.5版本中的新功能。

operator.imul(a, b)operator.__imul__(a, b)

a = imul(a, b)相当于a *= b

2.5版本中的新功能。

operator.ior(a, b)operator.__ior__(a, b)

a = ior(a, b)相当于a |= b

2.5版本中的新功能。

operator.ipow(a, b)operator.__ipow__(a, b)

a = ipow(a, b)相当于a **= b

2.5版本中的新功能。

operator.irepeat(a, b)operator.__irepeat__(a, b)

自2.7版弃用:__imul__()改为使用。

a = irepeat(a, b)等同于a *= b其中a是序列并且b是整数。

2.5版本中的新功能。

operator.irshift(a, b)operator.__irshift__(a, b)

a = irshift(a, b)相当于a >>= b

2.5版本中的新功能。

operator.isub(a, b)operator.__isub__(a, b)

a = isub(a, b)相当于a -= b

2.5版本中的新功能。

operator.itruediv(a, b)operator.__itruediv__(a, b)

a = itruediv(a, b)相当于a /= b何时__future__.division生效。

2.5版本中的新功能。

operator.ixor(a, b)operator.__ixor__(a, b)

a = ixor(a, b)相当于a ^= b

2.5版本中的新功能。

operator模块还定义了几个谓词来测试对象的类型; 然而,这些并不都是可靠的。优选的是,测试抽象基类代替(见collectionsnumbers细节)。

operator.isCallable(obj)

自2.0版弃用:isinstance(x, collections.Callable)改为使用。

如果对象obj可以像函数一样调用,则返回true,否则返回false。True返回函数,绑定和未绑定的方法,类对象和支持该__call__()方法的实例对象。

operator.isMappingType(obj)

自2.7版弃用:isinstance(x, collections.Mapping)改为使用。

如果对象obj支持映射接口,则返回true 。对于字典和所有实例对象的定义都是如此__getitem__()

operator.isNumberType(obj)

自2.7版弃用:isinstance(x, numbers.Number)改为使用。

如果对象obj表示一个数字,则返回true 。对于在C中实现的所有数字类型都是如此。

operator.isSequenceType(obj)

自2.7版弃用:isinstance(x, collections.Sequence)改为使用。

如果对象obj支持序列协议,则返回true 。对于定义C中序列方法的所有对象以及所有定义的实例对象,这都会返回true __getitem__()

operator模块还定义了用于通用属性和项目查找的工具。这些是使现场快速提取作为参数都非常有用map()sorted()itertools.groupby(),或期望的功能参数等功能。

operator.attrgetter(attr)operator.attrgetter(*attrs)

返回一个可从其操作数中获取attr的可调用对象。如果请求多个属性,则返回一个属性元组。属性名称也可以包含点。例如:

  • 之后f = attrgetter('name'),调用f(b)返回b.name
  • 之后f = attrgetter('name', 'date'),调用f(b)返回(b.name, b.date)
  • 之后f = attrgetter('name.first', 'name.last'),调用f(b)返回(b.name.first, b.name.last)

相当于:

def attrgetter(*items):
    if len(items) == 1:
        attr = items[0]
        def g(obj):
            return resolve_attr(obj, attr)
    else:
        def g(obj):
            return tuple(resolve_attr(obj, attr) for attr in items)
    return g

def resolve_attr(obj, attr):
    for name in attr.split("."):
        obj = getattr(obj, name)
    return obj

2.4版本中的新功能。

在版本2.5中进行了更改:增加了对多个属性的支持。

在版本2.6中更改:添加了对虚线属性的支持。

operator.itemgetter(item)operator.itemgetter(*items)

返回一个可调用的对象,使用操作数的方法从其操作数中获取项目__getitem__()。如果指定了多个项目,则返回查找值的元组。例如:

  • 之后f = itemgetter(2),调用f(r)返回r[2]
  • 之后g = itemgetter(2, 5, 3),调用g(r)返回(r[2], r[5], r[3])

相当于:

def itemgetter(*items):
    if len(items) == 1:
        item = items[0]
        def g(obj):
            return obj[item]
    else:
        def g(obj):
            return tuple(obj[item] for item in items)
    return g

这些项目可以是操作数__getitem__()方法接受的任何类型。字典接受任何可排序的值。列表,元组和字符串接受索引或片:

>>> itemgetter(1)('ABCDEFG')
'B'
>>> itemgetter(1,3,5)('ABCDEFG')
('B', 'D', 'F')
>>> itemgetter(slice(2,None))('ABCDEFG')
'CDEFG'

2.4版本中的新功能。

在版本2.5中进行了更改:增加了对多项提取的支持。

使用itemgetter()从元组记录中检索特定字段的示例:

>>> inventory = [('apple', 3), ('banana', 2), ('pear', 5), ('orange', 1)]
>>> getcount = itemgetter(1)
>>> map(getcount, inventory)
[3, 2, 5, 1]
>>> sorted(inventory, key=getcount)
[('orange', 1), ('banana', 2), ('apple', 3), ('pear', 5)]

operator.methodcaller(name[, args...])

返回一个可调用对象,它在其操作数上调用方法名称。如果给出了额外的参数和/或关键字参数,它们也会被赋予该方法。例如:

  • 之后f = methodcaller('name'),调用f(b)返回b.name()
  • 之后f = methodcaller('name', 'foo', bar=1),调用f(b)返回b.name('foo', bar=1)

相当于:

def methodcaller(name, *args, **kwargs):
    def caller(obj):
        return getattr(obj, name)(*args, **kwargs)
    return caller

2.6版本中的新功能。

1.将运算符映射到函数

此表显示了抽象操作在Python语法和operator模块中的函数中如何对应运算符。

Operation

Syntax

Function

Addition

a + b

add(a, b)

Concatenation

seq1 + seq2

concat(seq1, seq2)

Containment Test

obj in seq

contains(seq, obj)

Division

a / b

div(a, b) (without __future__.division)

Division

a / b

truediv(a, b) (with __future__.division)

Division

a // b

floordiv(a, b)

Bitwise And

a & b

and_(a, b)

Bitwise Exclusive Or

a ^ b

xor(a, b)

Bitwise Inversion

~ a

invert(a)

Bitwise Or

a | b

or_(a, b)

Exponentiation

a ** b

pow(a, b)

Identity

a is b

is_(a, b)

Identity

a is not b

is_not(a, b)

Indexed Assignment

objk = v

setitem(obj, k, v)

Indexed Deletion

del objk

delitem(obj, k)

Indexing

objk

getitem(obj, k)

Left Shift

a << b

lshift(a, b)

Modulo

a % b

mod(a, b)

Multiplication

a * b

mul(a, b)

Negation (Arithmetic)

  • a

neg(a)

Negation (Logical)

not a

not_(a)

Positive

  • a

pos(a)

Right Shift

a >> b

rshift(a, b)

Sequence Repetition

seq * i

repeat(seq, i)

Slice Assignment

seqi:j = values

setitem(seq, slice(i, j), values)

Slice Deletion

del seqi:j

delitem(seq, slice(i, j))

Slicing

seqi:j

getitem(seq, slice(i, j))

String Formatting

s % obj

mod(s, obj)

Subtraction

a - b

sub(a, b)

Truth Test

obj

truth(obj)

Ordering

a < b

lt(a, b)

Ordering

a <= b

le(a, b)

Equality

a == b

eq(a, b)

Difference

a != b

ne(a, b)

Ordering

a >= b

ge(a, b)

Ordering

a > b

gt(a, b)

数字与数学 | Numeric & Mathematical相关

Python

Python 是一种面向对象的解释型计算机程序设计语言,由荷兰人 Guido van Rossum 于1989年发明,第一个公开发行版发行于1991年。 Python 是纯粹的自由软件, 源代码和解释器 CPython 遵循 GPL 协议。Python 语法简洁清晰,特色之一是强制用空白符( white space )作为语句缩进。

主页 https://www.python.org/
源码 https://github.com/python/cpython
版本 2.7
发布版本 2.7.13

Python目录

1.内置常量 | Built-in Constants
2.内置例外 | Built-in Exceptions
3.内置函数 | Built-in Functions
4.内置类型 | Built-in Types
5.编译器 | Compiler
6.加密 | Cryptography
7.数据压缩 | Data Compression
8.数据持久性 | Data Persistence
9.数据类型 | Data Types
10.调试和分析 | Debugging & Profiling
11.开发工具 | Development Tools
12.文件和目录访问 | File & Directory Access
13.文件格式 | File Formats
14.构架 | Frameworks
15.输入 | Importing
16.输入/输出 | Input/ouput
17.国际化 | Internationalization
18.网络 | Internet
19.网络数据 | Internet Data
20.翻译 | Interpreters
21.语言 | Language
22.记录 | Logging
23.Mac OS
24.MS Windows
25.多媒体 | Multimedia
26.联网 | Networking
27.数字与数学 | Numeric & Mathematical
28.操作系统 | Operating System
29.可选操作系统 | Optional Operating System
30.限制执行 | Restricted Execution
31.运行 | Runtime
32.SGI IRIX
33.软件包装与分销 | Software Packaging & Distribution
34.字符串 | String
35.结构化标记 | Structured Markup
36.Tk
37.Unix
38.Python 简介
39.Python pass 语句
40.Python 循环嵌套
41.Python 运算符
42.Python log10() 函数
43.Python log() 函数
44.Python floor() 函数
45.Python fabs() 函数
46.Python exp() 函数
47.Python cmp() 函数
48.Python ceil() 函数
49.Python abs() 函数
50.Python Number(数字)
51.Python pow() 函数
52.Python modf() 函数
53.Python min() 函数
54.Python max() 函数
55.Python asin() 函数
56.Python acos() 函数
57.Python uniform() 函数
58.Python shuffle() 函数
59.Python seed() 函数
60.Python random() 函数
61.Python randrange() 函数
62.Python choice() 函数
63.Python sqrt() 函数
64.Python round() 函数
65.Python radians() 函数
66.Python degrees() 函数
67.Python tan() 函数
68.Python sin() 函数
69.Python hypot() 函数
70.Python cos() 函数
71.Python atan2() 函数
72.Python atan() 函数
73.Python 元组
74.Python 列表(List)
75.Python 字符串
76.Python 字典(Dictionary)
77.Python 日期和时间
78.Python 函数
79.Python 模块
80.Python capitalize()方法
81.Python center()方法
82.Python count() 方法
83.Python expandtabs()方法
84.Python endswith()方法
85.Python encode()方法
86.Python decode()方法
87.Python find()方法
88.Python index()方法
89.Python 异常处理
90.Python isspace()方法
91.Python isnumeric()方法
92.Python islower()方法
93.Python isdigit()方法
94.Python isalpha()方法
95.Python isalnum()方法
96.Python isupper()方法
97.Python istitle()方法
98.Python min()方法
99.Python max()方法
100.Python maketrans()方法