#### 按字母顺序
# #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__() 来动态载入。