函数和方法

首先来区别下函数和方法概念。在其他语言中,函数和方法概念是一样的,python是有区别的。

函数:指的是第一个参数不是self的函数,不在类中定义的函数。

方法:指是的第一个参数是self的函数。 ​

内置函数 内置函数 内置函数 内置函数 内置函数
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()

abs(x)

返回绝对值,参数x可以是整数,浮点数,复数。如果参数是复数,则返回复数的模。将复数的实部与虚部的平方和的正的平方根的值称为该复数的模。

例如:

1
2
3
4
5
6
>>> abs(-1)
1
>>> abs(13.2)
13.2
>>> abs(4+3j) #4*4 + 3*3=25,再计算25的平方根。
5.0

all(iterable)

迭代对象iterable的所有元素不为0、”、False或者空iterable,返回True,否则返回False。注意:空元组、空列表返回值为True。

例如:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
>>>all(['a', 'b', 'c', 'd'])  # 列表list
True
>>> all(('a', 'b', 'c', 'd')) # 元组tuple
True
>>> all([0, 1, 2, 3])       # 列表list,存在一个为0的元素
False
>>> all([0, '', 2, 3])      # 列表list,存在0和''的元素
False
>>> all([False, 1, 2, 3])   # 列表list,存在False元素
False
>>> all([])                 # 空列表
True
>>> all(())                 # 空元组
True

any(iterable)

迭代对象iterable里面的元素只有一个为true时,返回true。否则false。元素除了是 0、’’、FALSE外都算TRUE。

例如:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
>>> any(['a', 'b', '', 'd']) # 列表list,存在一个为空的元素
True
>>> any([0, '', False])      # 列表list,元素全为0,'',false
False
>>> any((0, '', False))      # 元组tuple,元素全为0,'',false
False
>>> any([])                  # 空列表
False
>>> any(())                  # 空元组
False

ascii(x)

类似repr()函数, 返回一个表示对象的字符串, 但是对于字符串中的非ASCII字符则返回通过epr()函数使用\x, \u或\U编码的字符。

例如:

1
2
3
4
5
6
7
8
>>> ascii('hello')
"'hello'"
>>> ascii(123)
'123'
>>> ascii([1,2])
'[1, 2]'
>>> ascii('中国')
"'\\u4e2d\\u56fd'"

bin(x)

将整数x转换为二进制字符串(0b开头的)。如果x不为Python中int类型,x必须包含方法index()并且返回值为integer。返回值是str类型。

例如:

1
2
3
4
5
6
>>> bin(3)
'0b11'
>>> bin(-10)
'-0b1010'
>>> print(type(bin(-10)))
<class 'str'>

如果不想要前缀“0b”的话, 可以用以下的方式。

例如:

1
2
3
4
>>> format(14, '#b'), format(14, 'b')
('0b1110', '1110')
>>> f'{14:#b}', f'{14:b}'
('0b1110', '1110')

bool(x)

用于将给定参数转换为布尔类型,如果没有参数,返回False。

例如:

1
2
3
4
5
6
>>>bool()
False
>>> bool(0)
False
>>> bool(1)
True

breakpoint(*args, **kws)

使得函数被调用时,让执行切换到调试器。相应的调试器不一定是Python自己的pdb,可以是之前被设为首选调试器的任何调试器。

bytearray

请参照Python基础教程010 bytearray

bytes

请参照Python基础教程010 bytearray

callable(object)

检查对象object是否可调用。如果返回True,object仍然可能调用失败;但如果返回False,调用对象ojbect绝对不会成功。对于函数, lambda匿名函数, 类, 以及实现了call方法的类实例, 它都返回True。

例子1

1
2
3
4
5
6
7
def f():
    pass

la = lambda x:x*x

print(callable(f))  # 函数返回 True
print(callable(la)) # lambda匿名函数返回 True

例子2

1
2
3
4
5
6
class A: # 类
    def method(self):
        return 0
print(callable(A)) # 类返回 True
a = A()
print(callable(a)) # 没有实现 __call__, 返回False

例子3

1
2
3
4
5
6
7
class A:
    def method(self):
        pass
    def __call__():
        pass
a = A()
print(callable(a)) # 实现了 __call__, 返回True

chr(x)

用一个范围在1~1,114,111 (0x10FFFF in base 16)整数作参数,返回一个对应的字符。x可以是10进制也可以是16进制的形式的数字。超出范围,抛出ValueError异常。

例如:

1
2
3
4
>>>print(chr(0x30), chr(0x31), chr(0x61) ) # 十六进制
0 1 a
>>> print chr(48), chr(49), chr(97) ) # 十进制
0 1 a

classmethod(function)

用来指定一个类的方法为类方法。classmethod修饰符对应的函数不需要实例化,不需要self参数,但第一个参数需要是表示自身类的cls参数,可以来调用类的属性,类的方法,实例化对象等。当然,类的实例也可以调用classmethod。可简写为@classmethod。

例如:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
class A(object):
    bar = 1
    def func1(self):
        print('foo')

    @classmethod
    def func2(cls):
        print('func2')
        print(cls.bar)
        cls().func1() # 调用 foo 方法

A.func2() #不需要实例化

输出结果为:

1
2
3
func2
1
foo

compile(source, filename, mode[, flags[, dont_inherit]])

将source编译为代码或者AST对象。代码对象能够通过exec()或者eval()进行求值。
参数source:字符串,二进制字符或者AST(Abstract Syntax Trees)对象。
参数filename:代码文件名称,如果不是从文件读取代码则传递一些可辨认的值。
参数mode:指定编译代码的种类。可以指定为’exec’,‘eval’,‘single’。
参数flag和dont_inherit:可选参数。

例如:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
>>> str = "3*4+5"
>>> a = compile(str,'','eval')
>>> eval(a)
17
>>> code = "for i in range(0, 10): print(i)"
>>> cmpcode = compile(code, '', 'exec')
>>> cmpcode
<code object <module> at 0x10141e0b0, file "", line 1>
>>> exec cmpcode
0
1
……

complex([real[, imag]])

创建一个值为real + imag * j的复数或者转化一个字符串或数为复数。如果第一个参数为字符串,则不需要指定第二个参数。
参数real: int, long, float或字符串;
参数imag: int, long, float。

例如:

1
2
3
4
5
6
7
8
9
>>>complex(1, 2)
(1 + 2j)
>>> complex(1) #数字
(1 + 0j)
>>> complex("1") #当做字符串处理
(1 + 0j)
# 注意:这个地方在"+"号两边不能有空格,也就是不能写成"1 + 2j",应该是"1+2j",否则会报错
>>> complex("1+2j")
(1 + 2j)

转载请注明本网址。