Python内置函数用法详解

#### 按字母顺序
# #1 abs()
取绝对值
# #2 all()
用于判断给定的可迭代参数 iterable 中的所有元素是否都为 TRUE,如果是返回 True,否则返回 False。

元素除了是 0、空、None、False 外都算 True。
函数源码:
```
def all(iterable):
    for element in iterable:
        if not element:
            return False
    return True
```
用法:
```
>>> all(['a', 'b', 'c', 'd'])  # 列表list,元素都不为空或0
True

>>> all((0, 1, 2, 3))          # 元组tuple,存在一个为0的元素
False
```
# #3 any()
用于判断给定的可迭代参数 iterable 是否全部为 False,则返回 False,如果有一个为 True,则返回 True。

元素除了是 0、空、FALSE 外都算 TRUE。
函数源码:
```
def any(iterable):
    for element in iterable:
        if element:
            return True
    return False
```
用法:

```
>>>any(['a', 'b', 'c', 'd'])  # 列表list,元素都不为空或0
True

>>> any((0, '', False))        # 元组tuple,元素全为0,'',false
False
```

### 注意:all()是全为真时才返回真,any()全为假时才返回假

# #4 bin()
bin() 返回一个整数 int 或者长整数 long int 的二进制表示。
```
bin(10)
Out[4]: '0b1010'
```

# #5 bool()
bool() 函数用于将给定参数转换为布尔类型,如果没有参数,返回 False。

bool 是 int 的子类。

```
bool(1)
Out[5]: True
bool()
Out[6]: False
issubclass(bool,int)
Out[7]: True
```
# #6 bytearray()
bytearray() 方法返回一个新字节数组。这个数组里的元素是可变的,并且每个元素的值范围: 0 <= x < 256。

```
bytearray()
Out[9]: bytearray(b'')
bytearray([1,2,3])
Out[10]: bytearray(b'\x01\x02\x03')
bytearray('ron','utf-8')
Out[11]: bytearray(b'ron')
```
# #7 callabe()

callable() 函数用于检查一个对象是否是可调用的。如果返回 True,object 仍然可能调用失败;但如果返回 False,调用对象 object 绝对不会成功。

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

```
>>>callable(0)
False
>>> callable("runoob")
False
 
>>> def add(a, b):
...     return a + b
... 
>>> callable(add)             # 函数返回 True
True
>>> class A:                  # 类
...     def method(self):
...             return 0
... 
>>> callable(A)               # 类返回 True
True
>>> a = A()
>>> callable(a)               # 没有实现 __call__, 返回 False
False
>>> class B:
...     def __call__(self):
...             return 0
... 
>>> callable(B)
True
>>> b = B()
>>> callable(b)               # 实现 __call__, 返回 True
True
```
# #8 chr()
chr() 用一个范围在 range(256)内的(就是0~255)整数作参数,返回一个对应的字符。
返回返回值是当前整数对应的 ASCII 字符
```
>>>print chr(0x30), chr(0x31), chr(0x61)   # 十六进制
0 1 a
>>> print chr(48), chr(49), chr(97)         # 十进制
0 1 a
```

# #9 classmethod

classmethod 修饰符对应的函数不需要实例化,不需要 self 参数,但第一个参数需要是表示自身类的 cls 参数,可以来调用类的属性,类的方法,实例化对象等。返回函数的类方法
```
lass A(object):

    # 属性默认为类属性(可以给直接被类本身调用)
    num = "类属性"

    # 实例化方法(必须实例化类之后才能被调用)
    def func1(self): # self : 表示实例化类后的地址id
        print("func1")
        print(self)

    # 类方法(不需要实例化类就可以被类本身调用)
    @classmethod
    def func2(cls):  # cls : 表示没用被实例化的类本身
        print("func2")
        print(cls)
        print(cls.num)
        cls().func1()

    # 不传递传递默认self参数的方法(该方法也是可以直接被类调用的,但是这样做不标准)
    def func3():
        print("func3")
        print(A.num) # 属性是可以直接用类本身调用的
    
# A.func1() 这样调用是会报错:因为func1()调用时需要默认传递实例化类后的地址id参数,如果不实例化类是无法调用的
A.func2()
A.func3()
```


# #10 cmp()函数 compare

cmp(x,y) 函数用于比较2个对象,如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1。
py3没有这个模块
实现比较功能,引入operator模块
```
>>> import operator
>>> operator.eq('hello', 'name');
False
>>> operator.eq('hello', 'hello');
True
```
# #11 compile()
compile() 函数将一个字符串编译为字节代码。个人理解,相当于写好一个函数,用于其调用

```
co = compile("for i in range(10): print(i, end=' ')", '', 'exec')
exec(co)

print('\n')

so = compile("sum([1,5,3,6,8])",'','eval')
sol = eval(so)
print(sol)
```
# #12 complex() 返回一个复数
```
complex('1+2j')
Out[19]: (1+2j)
# 不能有空格,如‘’1 + 2j
# 不能是i,只能是j
```
# #13 delattr()函数
删除类的属性

```
class Coordinate:
    x = 10
    y = -5
    z = 0
 
point1 = Coordinate() 
 
print('x = ',point1.x)
print('y = ',point1.y)
print('z = ',point1.z)
 
delattr(Coordinate, 'z')
 
print('--删除 z 属性后--')
print('x = ',point1.x)
print('y = ',point1.y)
 
# 触发错误
print('z = ',point1.z)
```
# #14 dict()创建字典
```
>>>dict()                        # 创建空字典
{}
>>> dict(a='a', b='b', t='t')     # 传入关键字
{'a': 'a', 'b': 'b', 't': 't'}
>>> dict(zip(['one', 'two', 'three'], [1, 2, 3]))   # 映射函数方式来构造字典
{'three': 3, 'two': 2, 'one': 1} 
>>> dict([('one', 1), ('two', 2), ('three', 3)])    # 可迭代对象方式来构造字典
{'three': 3, 'two': 2, 'one': 1}
>>> dict1 = {}
>>> dict1['firstname'] = 'ma'
>>> dict1['lastname'] = 'yun' # 添加方式
>>> dict1 = {'firstname':'ma', 'lastname':'yun'} # {}字典的标志大括号方式

```


# #15dir()

dir() 函数不带参数时,返回当前范围内的变量、方法和定义的类型列表;带参数时,返回参数的属性、方法列表。如果参数包含方法__dir__(),该方法将被调用。如果参数不包含__dir__(),该方法将最大限度地收集参数信息。

返回模块的属性列表。
>>>dir()   #  获得当前模块的属性列表
['__builtins__', '__doc__', '__name__', '__package__', 'arr', 'myslice']
>>> dir([ ])    # 查看列表的方法
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delslice__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__setslice__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
# #16 divmod()
返回商和余数
```
divmod(7,2)
Out[22]: (3, 1)
```
# #17 enumerate()
enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。返回 enumerate(枚举) 对象。

```
seasons = ['Spring','Summer','Fall','Winter']
for i , j in enumerate(seasons,start=1):
    print(i,j)
```
# #18 eval()
eval() 函数用来执行一个字符串表达式,并返回表达式的值。
```
a = eval('3*7')
print(a)
```
# #19 execfile()
execfile() 函数可以用来执行一个文件。py3删除了,可以用
```
with open('test.py','rb') as f:
    exec(f.read())
```
# #20 file()
py3已经将file改名了,改为了open()
```
f = open('test.txt')
f.read()
```
# #21 filter()

filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。

该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判断,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。

```
def is_odd(n):
    return n % 2 == 1
 
newlist = filter(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
print(newlist)
```
# #22 float()
float() 函数用于将整数和字符串转换成浮点数。
```
>>> float(-123.6)
-123.6
>>> float('123')     # 字符串
123.0
```
# #23 format()
Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。

基本语法是通过 {} 和 : 来代替以前的 % 。

format 函数可以接受不限个参数,位置可以不按顺序。
### format函数比较重要,实际用法,参照:https://www.runoob.com/python/att-string-format.html
最基本的用法:
```
'{} {}'.format('hello','world')
Out[26]: 'hello world'
```
# #24 frozenset()
frozenset() 返回一个冻结的集合,冻结后集合不能再添加或删除任何元素。
```
a = frozenset(range(10))
```
# #25 getattr()
getattr() 函数用于返回一个对象属性值。
```
>>>class A(object):
...     bar = 1
... 
>>> a = A()
>>> getattr(a, 'bar')        # 获取属性 bar 值
1
>>> getattr(a, 'bar2')       # 属性 bar2 不存在,触发异常
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'A' object has no attribute 'bar2'
>>> getattr(a, 'bar2', 3)    # 属性 bar2 不存在,但设置了默认值
3
```
# #26 globals()
globals() 函数会以字典类型返回当前位置的全部全局变量。
```
>>>a='runoob'
>>> print(globals()) # globals 函数返回一个全局变量的字典,包括所有导入的变量。
{'__builtins__': <module '__builtin__' (built-in)>, '__name__': '__main__', '__doc__': None, 'a': 'runoob', '__package__': None}
````
# #27 hasattr()
hasattr() 函数用于判断对象是否包含对应的属性。如果对象有该属性返回 True,否则返回 False。
```
point1 = Coordinate() 
print(hasattr(point1, 'x'))
print(hasattr(point1, 'y'))
print(hasattr(point1, 'z'))
print(hasattr(point1, 'no'))  # 没有该属性
```

# #28 hash()
hash() 用于获取取一个对象(字符串或者数值等)的哈希值。
hash() 函数的用途

hash() 函数的对象字符不管有多长,返回的 hash 值都是固定长度的,也用于校验程序在传输过程中是否被第三方(木马)修改,如果程序(字符)在传输过程中被修改hash值即发生变化,如果没有被修改,则 hash 值和原始的 hash 值吻合,只要验证 hash 值是否匹配即可验证程序是否带木马(病毒)。

hash() 函数可以应用于数字、字符串和对象,不能直接应用于 list、set、dictionary。

在 hash() 对对象使用时,所得的结果不仅和对象的内容有关,还和对象的 id(),也就是内存地址有关。
```
>>>hash('test')            # 字符串
2314058222102390712
>>> hash(1)                 # 数字
1
>>> hash(str([1,2,3]))      # 集合
1335416675971793195
>>> hash(str(sorted({'1':1}))) # 字典
7666464346782421378
```
# #29 help()
help() 函数用于查看函数或模块用途的详细说明。
```
>>>help('sys')             # 查看 sys 模块的帮助
……显示帮助信息……
 
>>>help('str')             # 查看 str 数据类型的帮助
……显示帮助信息……
 
>>>a = [1,2,3]
>>>help(a)                 # 查看列表 list 帮助信息
……显示帮助信息……
 
>>>help(a.append)          # 显示list的append方法的帮助
……显示帮助信息……
```
# #30 hex()
hex() 函数用于将10进制整数转换成16进制,以字符串形式表示。
返回的是字符串形式
```
>>>hex(255)
'0xff'
>>> hex(-42)
'-0x2a'
>>> hex(1L)
'0x1L'
>>> hex(12)
'0xc'
>>> type(hex(12))
<class 'str'>      # 字符串
```
# #31 id() 返回内存地址
id() 函数返回对象的唯一标识符,标识符是一个整数。

CPython 中 id() 函数用于获取对象的内存地址。
```
>>>a = 'runoob'
>>> id(a)
4531887632
>>> b = 1
>>> id(b)
140588731085608
```
# #32 input()
Python3.x 中 input() 函数接受一个标准输入数据,返回为 string 类型。
# #33 int()
int() 函数用于将一个字符串或数字转换为整型。
# #34 isinstance()
isinstance() 函数来判断一个对象是否是一个已知的类型,类似 type()。
```
>>> isinstance (a,int)
True
```
# #35 issubclass()
issubclass() 方法用于判断参数 class 是否是类型参数 classinfo 的子类。
```
class A:
    pass
class B(A):
    pass
    
print(issubclass(B,A))    # 返回 True
```
# #36 iter()
iter() 函数用来生成迭代器。

````
>>>lst = [1, 2, 3]
>>> for i in iter(lst):
...     print(i)
````
# #37 len()
Python len() 方法返回对象(字符、列表、元组等)长度或项目个数。
```
>>>str = "runoob"
>>> len(str)             # 字符串长度
6
```
# #38 list()
list() 方法用于将元组转换为列表。

注:元组与列表是非常类似的,区别在于元组的元素值不能修改,元组是放在括号中,列表是放于方括号中。
```
atuple = (123,3,'dd')
alist = list(atuple)
print('列表元素:',alist)
```
# #39 locals()
locals() 函数会以字典类型返回当前位置的全部局部变量。

对于函数, 方法, lambda 函式, 类, 以及实现了 __call__ 方法的类实例, 它都返回 True。
```
def run1(arg):
    z = 1
    print(locals())

run1(4)
```
# #40 map()
map() 会根据提供的函数对指定序列做映射。

第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。
Python 2.x 返回列表。

Python 3.x 返回迭代器。
````
def add(x,y):
    return x+y

# a = map(add,[1,2,3],[1,2,3])
# for i in a:
#     print(i)

a = map(lambda x,y:x+y,[1,2,3],[1,2,3])
for i in a:
    print(i)
````
# #41 max()
max() 方法返回给定参数的最大值,参数可以为序列。
# #42 memoryview()
memoryview() 函数返回给定参数的内存查看对象(memory view)。

所谓内存查看对象,是指对支持缓冲区协议的数据进行包装,在不需要复制对象基础上允许Python代码访问。
不知道有什么用。!!!
# #43 min()
max() 方法返回给定参数的最小值,参数可以为序列。
# #44 next()
next() 返回迭代器的下一个项目。
```
# 首先获得Iterator对象:
it = iter([1, 2, 3, 4, 5])
# 循环:
while True:
    try:
        # 获得下一个值:
        x = next(it)
        print(x)
    except StopIteration:
        # 遇到StopIteration就退出循环
        break
        
it = iter([1, 2, 5, 4, 3])
while True:
    x = next(it, 9)
    print(x)
    if x == 9:
        break
```
next() 函数要和生成迭代器的iter() 函数一起使用。
# #45 object()
对象 
# #46 oct()
oct() 函数将一个整数转换成 8 进制字符串。Python3.x 版本的 8 进制以 0o 作为前缀表示。
```
a = oct(10)
print(a)
b = oct(20)
print(b)
```

# #46 ord()  字母输出数值
ord() 函数是 chr() 函数(对于8位的ASCII字符串)或 unichr() 函数(对于Unicode对象)的配对函数,它以一个字符(长度为1的字符串)作为参数,返回对应的 ASCII 数值,或者 Unicode 数值,如果所给的 Unicode 字符超出了你的 Python 定义范围,则会引发一个 TypeError 的异常。
```
>>>ord('a')
97
>>> ord('b')
98
>>> ord('c')
99
```
# #47 pow()
pow() 方法返回 xy(x 的 y 次方) 的值。
```
import math
print(math.pow(2,3))
# 输出8.0
```
# #48 print()
print() 方法用于打印输出,最常见的一个函数。

在 Python3.3 版增加了 flush 关键字参数。
```
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
```
# #49 property() (有点难)
property() 函数的作用是在新式类中返回属性值。

# #50 range()
python range() 函数可创建一个整数列表,一般用在 for 循环中。
```
a = list(range(10))
print(a)
a= list(range(1,10,2))
print(a)
a=list(range(10,1,-2))
print(a)

```

# #51 raw_input()
已经被去除,只有input()输入的均作为字符串
# #52 reduce()
reduce() 函数会对参数序列中元素进行累积。函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。

```
>>>def add(x, y) :            # 两数相加
...     return x + y
... 
>>> reduce(add, [1,2,3,4,5])   # 计算列表和:1+2+3+4+5
15
>>> reduce(lambda x, y: x+y, [1,2,3,4,5])  # 使用 lambda 匿名函数
15
```
# #53 reload()
reload() 用于重新载入之前载入的模块。
```
>>>import sys
>>> sys.getdefaultencoding()            # 当前默认编码
'ascii'
>>> reload(sys)                         # 使用 reload
<module 'sys' (built-in)>
>>> sys.setdefaultencoding('utf8')      # 设置编码
>>> sys.getdefaultencoding()
'utf8'
```
# #54 repr()
repr() 函数将对象转化为供解释器读取的形式。
两者之间的目标不同:
str()主要面向用户,其目的是可读性,返回形式为用户友好性和可读性都较强的字符串类型;
repr()面向的是python解释器,或者说开发人员,其目的是准确性,其返回值表示python解释器内部的含义,常作为编程人员debug用途。

```
s = 'aaa'
repr(s)
Out[32]: "'aaa'"
str(s)
Out[33]: 'aaa'

```
# #55 reverse()
reverse() 函数用于反向列表中元素。

```
alist = [1,2,3,4,5]
alist1 = alist.reverse()
print(alist)
print(alist1) # 表明只是在原列表中反向,而非产生了新的
print(type(alist1))
```
# #56 round()
round() 方法返回浮点数x的四舍五入值。
详见 https://www.runoob.com/w3cnote/python-round-func-note.html
round函数非精确
```
In [14]: round(2.355, 2)
Out[14]: 2.35
```

# #57 set() 创建集合
set() 函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。

````
aset = set('sdhhh')
bset = set('sdjjj')
print(aset)
print(bset)
c = aset & bset
print(c)
d = aset | bset
print(d)
e = aset - bset
print(e)
````
# #58 setattr()
setattr() 函数对应函数 getattr(),用于设置属性值,该属性不一定是存在的。
```
class A(object):
    bar = 1

a =A()
a1 = getattr(a,'bar')
print(a1)
setattr(a,'age',28)
a2 = a.age
print(a2)
```

# #59 slice()
slice() 函数实现切片对象,主要用在切片操作函数里的参数传递。
```
myslice = slice(6,8,1) # 开始位置6,终止位置8,步长1
print(myslice)
arr = list(range(10))
print(arr)
print(arr[myslice])
```
# #60 sorted()
sorted() 函数对所有可迭代的对象进行排序操作。
sort 与 sorted 区别:

sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。

list 的 sort 方法返回的是对已经存在的列表进行操作,无返回值,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。
iterable -- 可迭代对象。
cmp -- 比较的函数,这个具有两个参数,参数的值都是从可迭代对象中取出,此函数必须遵守的规则为,大于则返回1,小于则返回-1,等于则返回0。
key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)。
返回重新排序的列表

```
a = [1,23,4,55,123]
b = sorted(a)
print(a)
print(b)

# 进阶
alist = [('b',2),('a',1),('c',3),('d',4)]
print(alist)
print(alist[1])
blist = sorted(alist,key=lambda x:x[1],reverse=True)
print(blist)
```
# #61 staticmethod()
python staticmethod 返回函数的静态方法。

该方法不强制要求传递参数,如下声明一个静态方法:
```
class C(object):
    @staticmethod
    def f():
        print('runoob');
 
C.f();          # 静态方法无需实例化
cobj = C()
cobj.f()        # 也可以实例化后调用
```
# #62str()
str() 函数将对象转化为适于人阅读的形式。
```
>>>s = 'RUNOOB'
>>> str(s)
'RUNOOB'
>>> dict = {'runoob': 'runoob.com', 'google': 'google.com'};
>>> str(dict)
"{'google': 'google.com', 'runoob': 'runoob.com'}"
```
# #63sum()求和

# #64super()
```
class FooParent(object):
    def __init__(self):
        self.parent = 'I\'m the parent.'
        print ('Parent')
    
    def bar(self,message):
        print ("%s from Parent" % message)
 
class FooChild(FooParent):
    def __init__(self):
        # super(FooChild,self) 首先找到 FooChild 的父类(就是类 FooParent),然后把类 FooChild 的对象转换为类 FooParent 的对象
        super(FooChild,self).__init__()    
        print ('Child')
        
    def bar(self,message):
        super(FooChild, self).bar(message)
        print ('Child bar fuction')
        print (self.parent)
 
if __name__ == '__main__':
    fooChild = FooChild()
```
# #65tuple()元组
```
>>>tuple([1,2,3,4])
 
(1, 2, 3, 4)
 
>>> tuple({1:2,3:4})    #针对字典 会返回字典的key组成的tuple
 
(1, 3)
 
>>> tuple((1,2,3,4))    #元组会返回元组自身
 
(1, 2, 3, 4)
```
# #66type()返回类型

# #67unichr()

# #68unicode()

# #69vars()
vars() 函数返回对象object的属性和属性值的字典对象。
# #70xrange()
xrange() 函数用法与 range 完全相同,所不同的是生成的不是一个数组,而是一个生成器。
# #71zip()
```
>>>a = [1,2,3]
>>> b = [4,5,6]
>>> c = [4,5,6,7,8]
>>> zipped = zip(a,b)     # 打包为元组的列表
[(1, 4), (2, 5), (3, 6)]
>>> zip(a,c)              # 元素个数与最短的列表一致
[(1, 4), (2, 5), (3, 6)]
>>> zip(*zipped)          # 与 zip 相反,*zipped 可理解为解压,返回二维矩阵式
[(1, 2, 3), (4, 5, 6)]
```
# #72__import__()
__import__() 函数用于动态加载类和函数 。

如果一个模块经常变化就可以使用 __import__() 来动态载入。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wency(王斯-CUEB)

我不是要饭的

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值