python-函数内置方法

Posted Gulibali

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python-函数内置方法相关的知识,希望对你有一定的参考价值。

                 函数的内置方法

 

 

查看菜鸟教程里面的内置方法

 

abs():

绝对值函数。如abs(-1)= 1

1 >>> abs(-10)
2 10
3 >>> f = abs
4 >>> f(-1)
5 1
6 >>> abs=id
7 >>> abs(1)
8 1869788224

以abs()函数为例,展示两个特性。一是,内置函数是可以被赋值给其他变量的,同样也可以将其他对象赋值给内置函数,这时就完全变了。所以,内置函数不是Python关键字,要注意对它们的保护,不要使用和内置函数重名的变量名,这会让代码混乱,容易发生难以排查的错误。

all()

接收一个可迭代对象,如果对象里的所有元素的bool运算值都是True,那么返回True,否则False。不要小瞧了这个函数,用好了,有化腐朽为神奇的特效。

1 >>> all([1,1,1])
2 True
3 >>> all([1,1,0])
4 False

any()

接收一个可迭代对象,如果迭代对象里有一个元素的bool运算值是True,那么返回True,否则False。与all()是一对兄弟。

1 >>> any([0,0,1])
2 True
3 >>> any([0,0,0])
4 False

ascii()

调用对象的__repr__()方法,获得该方法的返回值。__repr__()方法是由对象所属类型实现的方法。不可以简单地理解为print或echo。

1 >>>s = “haha”
2 >>> ascii(s)
3 "\'haha\'"
4 >>> a = [1,2,3]
5 >>> ascii(a)
6 \'[1, 2, 3]\'

bin()、oct()、hex()

三个函数是将十进制数分别转换为2/8/16进制。

1 >>> i = 10
2 >>> bin(i)
3 \'0b1010\'
4 >>> oct(i)
5 \'0o12\'
6 >>> hex(i)
7 \'0xa\'

bool()

测试一个对象或表达式的执行结果是True还是False。实际上bool是一个类,不是函数,bool()的返回值是一个布尔类型的实例。builtins中的很多函数,其实都是类,比如bytes(),str()等等。其中bool对于一个空列表或者带有0的列表,返回的是False。

 
1 >>> bool(1==2)
2 False
3 >>> bool(abs(-1))
4 True
5 >>> bool(None)
6 False
7 >>>a = []
8 >>>bool(a)
9 False

bytearray()

描述

bytearray() 方法返回一个新字节数组。这个数组里的元素是可变的,并且每个元素的值范围: 0 <= x < 256。

语法

bytearray()方法语法:

  

1 class bytearray([source[, encoding[, errors]]])

参数

  • 如果 source 为整数,则返回一个长度为 source 的初始化数组;
  • 如果 source 为字符串,则按照指定的 encoding 将字符串转换为字节序列;
  • 如果 source 为可迭代类型,则元素必须为[0 ,255] 中的整数;
  • 如果 source 为与 buffer 接口一致的对象,则此对象也可以被用于初始化 bytearray。
  • 如果没有输入任何参数,默认就是初始化数组为0个元素。

返回值

返回新字节数组。

实例

以下实例展示了 bytearray() 的使用方法:

1 >>>bytearray()
2 bytearray(b\'\')
3 >>> bytearray([1,2,3])
4 bytearray(b\'\\x01\\x02\\x03\')
5 >>> bytearray(\'runoob\', \'utf-8\')
6 bytearray(b\'runoob\')
7 >>>

bytes()

将对象转换成字节类型。例如:s = \'张三\';m = bytes(s,encoding=\'utf-8\')

 1 >>> i=2
 2 >>> bytes(i)
 3 b\'\\x00\\x00\'
 4 >>> s = \'haha\'
 5 >>> bytes(s)
 6 
 7 Traceback (most recent call last):
 8   File "<pyshell#24>", line 1, in <module>
 9     bytes(s)
10 TypeError: string argument without an encoding
11 
12 >>> bytes(s, encoding="utf-8")
13 b\'haha\'
14 >>> bytes(s, encoding="GBK")
15 b\'haha\'

str()

将对象转换成字符串类型,同样也可以指定编码方式。例如:str(bytes对象,encoding=\'utf-8\')

 1 >>> i =  2
 2 >>> str(i)
 3 \'2\'
 4 >>> b = b"haha"
 5 >>> str(b)      # 注意!
 6 "b\'haha\'"
 7 >>> str(b,encoding="gb2312")
 8 \'haha\'
 9 >>> str([1,2,3,])
10 \'[1, 2, 3]\'

Bytes和string之间的互相转换,更多使用的是encode()和decode()方法。

callable()

判断对象是否可以被调用。如果某个对象具有__call__方法,那它就能被调用。 例如,def f1(): pass,那么callable(f1)返回True。常用于判断一个变量是否是函数。函数可调用。

 1 >>> def f1():
 2     pass
 3 >>> callable(f1)
 4 True
 5 >>> a = "123"
 6 >>> callable(a)
 7 False
 8 >>> class Foo:
 9     def __init__(self,name,age):
10         self.name = name
11         self.age = age       
12 >>> f_obj = Foo("jack",20)
13 >>> callable(f_obj)
14 False
15 >>> callable(Foo)
16 True

chr()

返回某个十进制数对应的ASCII字符,例如:chr(99) = ‘c’。它可以配合random.randint(65,91)随机方法,生成随机字符,用于生产随机验证码。

1 mport random
2 for i in range(10):
3     a = random.randint(65,91)
4     c = chr(a)
5     print(c)

ord()

与chr()相反,返回某个ASCII字符对应的十进制数,例如,ord(\'A\') = 65

1 >>> ord("A")
2 65
3 >>> ord("\\n")
4 10
 

classmethod()、staticmethod()和property()

类机制中,用于生成类方法、静态方法和属性的函数。在面向对象章节会有详细介绍。

compile()

将字符串编译成Python能识别或执行的代码。 也可以将文件读成字符串再编译。

 1 >>> s  = "print(\'helloworld\')"
 2 >>> r = compile(s,"<string>","exec")
 3 >>> r
 4 <code object <module> at 0x000001B23E6BE660, file "<string>", line 1>
 5 
 6 >>> r()
 7 Traceback (most recent call last):
 8   File "<pyshell#14>", line 1, in <module>
 9     r()
10 TypeError: \'code\' object is not callable
11 
12 >>> exec(r)
13 helloworld
14 
15 >>> eval(r)
16 helloworld

complex()

通过数字或字符串生成复数类型对象。

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

使用字符串的时候,+号左右不能有空白。

delattr()、setattr()、getattr()、hasattr()

类机制中,分别用来删除、设置、获取和判断属性。后面会有详解。

dir()

查看详细介绍

显示对象所有的属性和方法。打印当前程序的所有变量。最好用的辅助函数之一。

1 >>> dir()
2 [\'__annotations__\', \'__builtins__\', \'__doc__\', \'__loader__\', \'__name__\', \'__package__\', \'__spec__\', \'builtins\', \'r\', \'s\']
3  
4 >>> dir([1,2,])
5 [\'__add__\', \'__class__\', \'__contains__\', \'__delattr__\', \'__delitem__\', \'__dir__\', \'__doc__\', \'__eq__\', \'__format__\', \'__ge__\', \'__getattribute__\', \'__getitem__\', \'__gt__\', \'__hash__\', \'__iadd__\', \'__imul__\', \'__init__\', \'__init_subclass__\', \'__iter__\', \'__le__\', \'__len__\', \'__lt__\', \'__mul__\', \'__ne__\', \'__new__\', \'__reduce__\', \'__reduce_ex__\', \'__repr__\', \'__reversed__\', \'__rmul__\', \'__setattr__\', \'__setitem__\', \'__sizeof__\', \'__str__\', \'__subclasshook__\', \'append\', \'clear\', \'copy\', \'count\', \'extend\', \'index\', \'insert\', \'pop\', \'remove\', \'reverse\', \'sort\']

nt()、float()、list()、dict()、set()、tuple()

与bool()、str()、bytes()一样,它们都是实例化对应数据类型的类。

divmod()

除法,同时返回商和余数的元组。

1 >>> divmod(10,3)
2 (3, 1)
3 >>> divmod(11,4)
4 (2, 3)

enumerate()

enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。

Python 2.3. 以上版本可用,2.6 添加 start 参数。

语法

以下是 enumerate() 方法的语法:

enumerate(sequence, [start=0])

参数

  • sequence -- 一个序列、迭代器或其他支持迭代对象。
  • start -- 下标起始位置。
 1 # 实例
 2 # 以下展示了使用 enumerate() 方法的实例:
 3  
 4 >>>seasons = [\'Spring\', \'Summer\', \'Fall\', \'Winter\']
 5 >>> list(enumerate(seasons))
 6 [(0, \'Spring\'), (1, \'Summer\'), (2, \'Fall\'), (3, \'Winter\')]
 7 >>> list(enumerate(seasons, start=1))       # 小标从 1 开始
 8 [(1, \'Spring\'), (2, \'Summer\'), (3, \'Fall\'), (4, \'Winter\')]
 9  
10 # 普通的 for 循环
11 >>>i = 0
12 >>> seq = [\'one\', \'two\', \'three\']
13 >>> for element in seq:
14 ...     print i, seq[i]
15 ...     i +=1
16 ...
17 0 one
18 1 two
19 2 three
20  
21 # for 循环使用 enumerate
22 >>>seq = [\'one\', \'two\', \'three\']
23 >>> for i, element in enumerate(seq):
24 ...     print i, element
25 ...
26 0 one
27 1 two
28 2 three

通常用于对那些无法提供序号的迭代对象使用。但对于字典,依然是无序的。

eval()

eval() 函数用来执行一个字符串表达式,并返回表达式的值。

语法

以下是 eval() 方法的语法:

eval(expression[, globals[, locals]])

参数

  • expression -- 表达式。
  • globals -- 变量作用域,全局命名空间,如果被提供,则必须是一个字典对象。
  • locals -- 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。

返回值

返回表达式计算结果。

实例

以下展示了使用 eval() 方法的实例:

 1 >>>x = 7
 2 >>> eval( \'3 * x\' )
 3 21
 4 >>> eval(\'pow(2,2)\')
 5  4
 6 >>> eval(\'2 + 2\')
 7  4
 8 >>> n=81
 9 >>> eval("n + 4")
10 85

exec()

描述

exec 执行储存在字符串或文件中的Python语句,相比于 eval,exec可以执行更复杂的 Python 代码。

需要说明的是在 Python2 中exec不是函数,而是一个内置语句(statement),但是Python 2中有一个

execfile() 函数。可以理解为 Python 3 把 exec 这个 statement 和 execfile() 函数的功能够整合到一个新的

exec() 函数中去了。

 

语法

以下是 exec 的语法:

exec obj

参数

  • obj -- 要执行的表达式。

返回值

exec 返回值永远为 None。

实例

以下展示了使用 exec 的实例:

实例 1

 1 >>>exec \'print "Hello World"\'
 2 Hello World
 3 # 单行语句字符串
 4 >>> exec "print \'runoob.com\'"
 5 runoob.com
 6   
 7 #  多行语句字符串
 8 >>> exec """<br>...for i in range(5):
 9 ...   print "iter time: %d" % i
10 ... """
11 iter time: 0
12 iter time: 1
13 iter time: 2
14 iter time: 3
15 iter time: 4

实例 2

 1 x = 10
 2 expr = """
 3 z = 30
 4 sum = x + y + z
 5 print(sum)
 6 """
 7 def func():
 8     y = 20
 9     exec(expr)
10     exec(expr, {\'x\': 1, \'y\': 2})
11     exec(expr, {\'x\': 1, \'y\': 2}, {\'y\': 3, \'z\': 4})
12      
13 func()
14  
15 输出结果:
16  
17 60
18 33
19 34

eval() exec() 

eval()只能处理单行代码而exec()可以处理多行代码

eval()有返回值,exec没有返回值

1 res = eval(\'1+3+2\')
2 res2 = exec(\'1+3+2\')
3 print(\'res\', res, res2)
4  
5 # 执行结果
6 res 7 None

format()

查看详细讲解

执行format(),其实就是调用该对象所属类的__format__方法。类似print功能。

1 >>> format("324324")
2 \'324324\'
3 >>> format([1,2,3])
4 \'[1, 2, 3]\'

frozenset()

描述

frozenset() 返回一个冻结的集合,冻结后集合不能再添加或删除任何元素。

语法

frozenset() 函数语法:

class frozenset([iterable])

参数

  • iterable -- 可迭代的对象,比如列表、字典、元组等等。

返回值

返回新的 frozenset 对象,如果不提供任何参数,默认会生成空集合。

实例

以下实例展示了 frozenset() 的使用方法:

1 >>>a = frozenset(range(10))     # 生成一个新的不可变集合
2 >>> a
3 frozenset([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
4 >>> b = frozenset(\'runoob\')
5 >>> b
6 frozenset([\'b\', \'r\', \'u\', \'o\', \'n\'])   # 创建不可变集合
7 >>>

globals()

列出当前环境下所有的全局变量。注意要与global关键字区分!在本节的开始,我们就已经展示了它的用法。

hash()

为不可变对象,例如字符串生成哈希值的函数!

 1 >>> hash("i am jack")
 2 5602200374213231465
 3 >>> hash(1)
 4 1
 5 >>> hash(100000)
 6 100000
 7 >>> hash([1,2,3,])
 8 Traceback (most recent call last):
 9   File "<pyshell#4>", line 1, in <module>
10     hash([1,2,3,])
11 TypeError: unhashable type: \'list\'
12 >>> hash((1,2,3))
13 2528502973977326415

help()

返回对象的帮助文档。谁用谁知道!

1 >>> a = [1,2,3]
2 >>> help(a)
3 Help on list object:
4 
5 class list(object)
6  |  list() -> new empty list
7  |  list(iterable) -> new list initialized from iterable\'s items
8  ...

id()

返回对象的内存地址,常用来查看变量引用的变化,对象是否相同等。常用功能之一!

1 >>> id(0)
2 1456845856
3 >>> id(True)
4 1456365792
5 >>> a = "Python"
6 >>> id(a)
7 37116704

input()

接收用户输入,返回一个输入的字符串。

1 a = input("Please input a number:  ")
2 Please input a number:  100
3 >>> a
4 \'100\'
5 >>> type(a)
6 <class \'str\'>

isinstance()

判断一个对象是否是某个类的实例。比type()方法适用面更广。

>>> isinstance("haha", str)
True
>>> isinstance(1, str)
False

issubclass()

issubclass(a,b),判断a是否是b的子类。

>>> class Foo:
    pass
>>> class Goo(Foo):
    pass
>>> issubclass(Goo, Foo)
True

iter()

制造一个迭代器,使其具备next()能力。

 1 >>> lis = [1, 2, 3]
 2 >>> next(lis)
 3 
 4 Traceback (most recent call last):
 5   File "<pyshell#8>", line 1, in <module>
 6     next(lis)
 7 TypeError: \'list\' object is not an iterator
 8 
 9 >>> i = iter(lis)
10 >>> i
11 <list_iterator object at 0x0000000002B4A128>
12 >>> next(i)
13 1

len()

返回对象的长度。不能再常用的函数之一了。

locals()

locals() 函数会以字典类型返回当前位置的全部局部变量。简单点就是返回局部变量。

对于函数, 方法, lambda 函式, 类, 以及实现了 __call__ 方法的类实例, 它都返回 True。

返回值:字典类型的局部变量

1 >>>def runoob(arg):    # 两个局部变量:arg、z
2 ...     z = 1
3 ...     print (locals())
4 ...
5 >>> runoob(4)
6 {\'z\': 1, \'arg\': 4}      # 返回一个名字/值对的字典
7 >>>

max()/min():

返回给定集合里的最大或者最小的元素。可以指定排序的方法!

max() 方法返回给定参数的最大值,参数可以为序列。

print "max(80, 100, 1000) : ", max(80, 100, 1000)

max(80, 100, 1000) :  1000

 

min() 方法返回给定参数的最小值,参数可以为序列。

print "min(80, 100, 1000) : ", min(80, 100, 1000)

min(80, 100, 1000) :  80