python内置函数总结---考试小抄版
总结自菜鸟教程:https://www.runoob.com/python/python-built-in-functions.html
abs(): 返回数字的绝对值,若参数为复数,则返回复数的绝对值(此复数与它的共轭复数的乘积的平方根)????。
abs(1+1j)
1.4142135623730951
all():用于判断可迭代参数 iterable 中的所有元素是否都为 TRUE,即不能有( 0、空、None、False) ,如果是返回 True,否则返回 False。
all(['a', 'b', 'c', 'd']) # 列表list,元素都不为空或0 True
all(['a', 'b', '', 'd']) # 列表list,存在一个为空的元素 False
all([0, 1,2, 3]) # 列表list,存在一个为0的元素 False
all(('a', 'b', 'c', 'd')) # 元组tuple,元素都不为空或0 True
all(('a', 'b', '', 'd')) # 元组tuple,存在一个为空的元素 False
all((0, 1, 2, 3)) # 元组tuple,存在一个为0的元素 False
# 注意
all([]) # 空列表 True
all(()) # 空元组 True
any(): 用于判断可迭代参数 iterable 中的所有元素是否有 TRUE,即除了( 0、空、None、False) 之外,还有别的元素,如果有返回 True,否则返回 False。
>>> any(['a', 0, '', False]) # 列表list中存在0、空、FALSE 之外的东西
>>> any([]) # 空列表 False
>>> any(()) # 空元组 False
bin(): 返回一个整数 int 或者长整数 long int 的二进制表示的字符串。
bin(10)
'0b1010'
bool(): 函数用于将给定参数转换为布尔类型,如果没有参数,返回 False。
>>> bool(0)
False
bytearray() :方法返回一个新字节数组。这个数组里的元素是可变的,并且每个元素的值范围: 0 <= x < 256。不知道有啥用
>>> bytearray([1,2,3])
bytearray(b'\x01\x02\x03')
callable(): 函数用于检查一个对象是否是可调用的。如果返回 True,object 仍然可能调用失败;但如果返回 False,调用对象 object 绝对不会成功。
对于函数、方法、lambda 函式、 类以及实现了 call 方法的类实例, 它都返回 True。
lass 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
chr(): 用一个范围在 range(256)内的(就是0~255)整数作参数,返回一个对应的字符。
print(chr(0x30), chr(0x31), chr(0x61)) # 十六进制
0 1 a
print(chr(48), chr(49), chr(97)) # 十进制
0 1 a
类方法 @classmethod
classmethod 修饰符对应的函数不需要实例化,不需要 self 参数,但第一个参数需要是表示自身类的 cls 参数,可以来调用类的属性,类的方法,实例化对象等。
runoob 的classmethod评论
class 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()
输出
func2
<class '__main__.A'>
类属性
func1
<__main__.A object at 0x7f7f7113c710>
func3
类属性
cmp(x,y): 函数用于比较2个对象,如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1。
cmp(80, 100) : -1
compile() :函数将一个字符串编译为字节代码。
str = "for i in range(0,3): print(i)"
c = compile(str,'','exec') # 编译为字节代码对象
print(c)
print(exec(c))
str = "3 * 4 + 5"
a = compile(str,'','eval')
print(eval(a))
输出
<code object <module> at 0x7f03c840c300, file "", line 1>
0
1
2
None
17
complex() 函数用于创建一个值为 real + imag * j 的复数或者转化一个字符串或数为复数。如果第一个参数为字符串,则不需要指定第二个参数。
complex(1, 2)
(1 + 2j)
delattr: 函数用于删除属性。delattr(x, ‘foobar’) 相等于 del x.foobar。
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}
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']
divmod() :函数把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a // b, a % b)。
>>>divmod(7, 2)
(3, 1)
>>> divmod(8, 2)
(4, 0)
>>> divmod(1+2j,1+0.5j)
((1+0j), 1.5j)
enumerate() :函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
seq = ['one', 'two', 'three']
for i, element in enumerate(seq):
print(i, element)
输出
0 one
1 two
2 three
eval() :函数用来执行一个字符串表达式,并返回表达式的值。
x = 7
eval( '3 * x' )
21
eval('pow(2,2)')
4
execfile() :函数可以用来执行一个文件。
execfile('hello.py')
hello
file(): 函数用于创建一个 file 对象,它有一个别名叫 open(),更形象一些,它们是内置函数。参数是以字符串的形式传递的。
f = file('hello.py')
f.read()
print('hello')
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)
float(): 函数用于将整数和字符串转换成浮点数。
float(1024)
1024.0
format():基本语法是通过 {} 和 : 来代替以前的 % 。format 函数可以接受不限个参数,位置可以不按顺序。
"{1} {0} {1}".format("hello", "world") # 设置指定位置
'world hello world'
frozenset(): 返回一个冻结的集合,冻结后集合不能再添加或删除任何元素。
a = frozenset(range(10)) # 生成一个新的不可变集合
>>> a
frozenset([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
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
class A(object):
def set(self, a, b):
x = a
a = b
b = x
print(a, b)
a = A()
c = getattr(a, 'set') # 等价于c = a.set
print(a)
print(c)
c(a='1', b='2')
globals(): 函数会以字典类型返回当前位置的全部全局变量。
globals 函数返回一个全局变量的字典,包括所有导入的变量。
想起来一个关键字 global
name = "小明"
def test():
global name # 把外面的拿过来
print(name)
name = "along"
return name
if __name__ == "__main__":
print(name)
print(test())
print(name)
输出
小明
小明
along
along
hasattr() :函数用于判断对象是否包含对应的属性
class Coordinate:
x = 10
y = -5
z = 0
point1 = Coordinate()
print(hasattr(point1, 'x'))
print(hasattr(point1, 'no')) # 没有该属性
True
False
hash() :用于获取取一个对象(字符串或者数值等)的哈希值。
hash('test') # 字符串
2314058222102390712
help(): 函数用于查看函数或模块用途的详细说明。
help('sys') # 查看 sys 模块的帮助
……显示帮助信息……
hex(): 函数用于将10进制整数转换成16进制,以字符串形式表示。
hex(255)
'0xff'
id(): 函数返回对象的唯一标识符,标识符是一个整数。
CPython 中 id() 函数用于获取对象的内存地址。
a = 'runoob'
>>> id(a)
4531887632
input:函数接受一个标准输入数据,返回为 string 类型。
a = input("input:")
a = int(a)
输入:
input:123
#注意
数字接收后需要转换一下,防止报错
int() :函数用于将一个字符串或数字转换为整型。
int('12',16) # 如果是带参数base的话,12要以字符串的形式进行输入,12 为 16进制
18
评论中
怒写一波:
int(x,base)
x 有两种:str / int
1、若 x 为纯数字,则不能有 base 参数,否则报错;其作用为对入参 x 取整
>>> int(3.1415926)
3
>>> int(-11.123)
-11
>>> int(2.5,10)
#报错
>>> int(2.5)
2
2、若 x 为 str,则 base 可略可有。
base 存在时,视 x 为 base 类型数字,并将其转换为 10 进制数字。
若 x 不符合 base 规则,则报错。如:
>>>int("9",2) #报错,因为2进制无9
>>> int("9")
9
#默认10进制
>>> int("3.14",8)
>>> int("1.2")
#均报错,str须为整数
>>>int("1001",2)
9
# "1001"才是2进制格式,并转化为十进制数字9
>>> int("0xa",16)
10
# ≥16进制才会允许入参为a,b,c...
>>> int("b",8) #报错
>>> int("123",8)
83
#视123为8进制数字,对应的10进制为83
isinstance() :函数来判断一个对象是否是一个已知的类型,类似 type()。
对于基本类型来说 classinfo 可以是:int,float,bool,complex,str(字符串),list,dict(字典),set,tuple
a = 2
>>> isinstance (a,int)
True
>>> isinstance (a,str)
False
>>> isinstance (a,(str,int,list)) # 是元组中的一个就返回 True
True
issubclass() :方法用于判断参数 class 是否是类型参数 classinfo 的子类。
class A:
pass
class B(A):
pass
print(issubclass(B,A)) # 返回 True
iter() :函数用来生成迭代器。
这个例子不好,因为list本身就可以for出来
lst = [1, 2, 3]
list = iter(lst)
print(type(list))
for i in iter(lst):
print(i)
输出
<class 'list_iterator'>
1
2
3
len(): 方法返回对象(字符、列表、元组等)长度或项目个数。
str = "runoob"
len(str)
6
list(): 用于将元组转换为列表。
注:元组与列表是非常类似的,区别在于元组的元素值不能修改,元组是放在括号中,列表是放于方括号中
strs="python"
list_str = list(strs)
print(list_str )
输出
['p', 'y', 't', 'h', 'o', 'n']
下面是字典
dicts = dict(zip(["a", "b", "c"],["e", "f", "g"]))
dicts = list(dicts)
print(dicts)
['a', 'b', 'c']
locals() :函数会以字典类型返回当前位置的全部局部变量。
对于函数, 方法, lambda 函式, 类, 以及实现了 call 方法的类实例, 它都返回 True。
def runoob(arg): # 两个局部变量:arg、z
z = 1
print (locals())
runoob(4)
{'z': 1, 'arg': 4} # 返回一个名字/值对的字典
long() :函数将数字或字符串转换为一个长整型。
long(123)
123L
map() :会根据提供的函数对指定序列做映射。
def square(x) : # 计算平方数
return x ** 2
>>> map(square, [1,2,3,4,5]) # 计算列表各个元素的平方
[1, 4, 9, 16, 25]
>>> map(lambda x: x ** 2, [1, 2, 3, 4, 5]) # 使用 lambda 匿名函数
[1, 4, 9, 16, 25]
# 提供了两个列表,对相同位置的列表数据进行相加
>>> map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])
[3, 7, 11, 15, 19]
max() :方法返回给定参数的最大值,参数可以为序列。
max(80, 100, 1000)
1000
min(): 方法返回给定参数的最小值,参数可以为序列。
min(80, 100, 1000)
80
next() :返回迭代器的下一个项目。next() 函数要和生成迭代器的iter() 函数一起使用。
# 首先获得Iterator对象:
it = iter([1, 2, 3])
# 循环:
while True:
try:
# 获得下一个值:
x = next(it)
print(x)
except StopIteration:
# 遇到StopIteration就退出循环
break
结果
1 2 3
评论
如果传入第二个参数, 获取最后一个元素之后, 下一次next返回该默认值, 而不会抛出 StopIteration:
it = iter([1, 2, 3])
while True:
x = next(it, 'a')
print(x)
if x == 'a':
break
oct() :函数将一个整数转换成 8 进制字符串。
oct(10)
'012'
open() :函数用于打开一个文件,创建一个 file 对象,相关的方法才可以调用它进行读写。
file_name = str(file_path.rsplit('/', 1)[1]) # 拿到的是文件名
f = open(file_path, 'rb') # 文件名打开
response = FileResponse(f) # 文件响应
还需要详细写
ord():它以一个字符(长度为1的字符串)作为参数,返回对应的 ASCII 数值,或者 Unicode 数值
ord('a')
97
pow() 方法返回 xy(x 的 y 次方) 的值。
math.pow(2, 4) : 16.0
@property
廖雪峰的python
class Student(object):
@property
def birth(self):
return self._birth
@birth.setter
def birth(self, value):
if not isinstance(value, int):
raise ValueError('birth must be an integer!')
if value < 0 or value > 2020:
raise ValueError('birth must between 0 ~ 2020!')
self._birth = value
@property
def age(self):
return 2020 - self._birth
along = Stuent()
along.birth = 2000
print(along.birth)
print(along.age)
输出
2000
20
range(): 函数可创建一个整数列表,一般用在 for 循环中。
range(3)
[0, 1, 2]
raw_input() :将所有输入作为字符串看待,返回字符串类型。
reduce() :函数会对参数序列中元素进行累积。
reduce(lambda x, y: x+y, [1,2,3,4,5])
15
评论:reduce() 函数已经被从全局名字空间里移除了,它现在被放置在 functools 模块里
from functools import reduce
reload(): 用于重新载入之前载入的模块。
Python 3.0 把 reload 内置函数移到了 imp 标准库模块中。它仍然像以前一样重载文件,但是,必须导入它才能使用。
from imp import reload
reload(module)
repr() :函数将对象转化为供解释器读取的形式。现在看来就是加双引号
dict = {'runoob': 'runoob.com', 'google': 'google.com'};
>>> repr(dict)
"{'google': 'google.com', 'runoob': 'runoob.com'}"
reverse(): 函数用于反向列表中元素。
aList = [123, 'xyz', 'zara']
aList.reverse()
['zara', 'xyz', 123]
round() :方法返回浮点数x的四舍五入值。
round(80.23456, 2) # 小数点后两位
80.23
评论
在实际使用中发现round函数并不总是如上所说的四舍五入。如:
In [14]: round(2.355, 2)
Out[14]: 2.35
注:环境为 python3.5.2
因为该函数对于返回的浮点数并不是按照四舍五入的规则来计算,而会受到计算机表示精度的影响。
关于该问题搜索后解释比较清楚的文章地址如下:http://www.runoob.com/w3cnote/python-round-func-note.html
set(): 集合函数
x = set('along')
y = set('google')
x = set(x) # 重复的被删除
y = set(y)
print(x)
print(y)
print(x & y) # 交集
print(x | y) # 并集
print(x - y) # 差集
输出
{'g', 'n', 'a', 'l', 'o'}
{'l', 'e', 'o', 'g'}
{'l', 'o', 'g'}
{'a', 'l', 'o', 'e', 'g', 'n'}
{'n', 'a'}
setattr(): 函数对应函数 getattr(),用于设置属性值,该属性不一定是存在的。
class Student():
name = "along"
along = Student()
getattr(along, "name")
print(along.name)
setattr(along, "name", "xiefan")
print(along.name)
# 设置一个没有的属性
setattr(along, "age", 18)
print(along.age)
输出
along
xiefan
18
slice() :函数实现切片对象,主要用在切片操作函数里的参数传递。
不好用,直接切片就行
myslice = slice(5) # 设置截取5个元素的切片
arr = list(range(10))
print(arr[myslice]) # 截取 5 个元素
print(arr[:3]) # 截取 3 个元素
输出
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4]
[0, 1, 2]
sorted() 函数对所有可迭代的对象进行排序操作。list 的 sort 方法在原有的列表上进行操作,无返回值,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。
L = [('b', 3), ('a', 1), ('c', 2), ('d', 4)]
l = sorted(L, key=lambda x: x[1], reverse=True) # 利用key, 按降序
print(l)
输出
('d', 4), ('b', 3), ('c', 2), ('a', 1)]
评论:
key 和 reverse 比一个等价的 cmp 函数处理速度要快。这是因为对于每个列表元素,cmp 都会被调用多次,而 key 和 reverse 只被调用一次,所以不用cmp
@staticmethod: 返回函数的静态方法。
该方法不强制要求传递参数,如下声明一个静态方法:
class Student(object):
@staticmethod
def f(name: str, age: int):
print('along is {}'.format(name))
print('age is {}'.format(age))
Student.f("along", 20) # 静态方法无需实例化
stu = Student()
stu.f("alonglong", 21) # 也可以实例化后调用
输出
along is along
age is 20
along is alonglong
age is 21
str(): 函数将对象转化为字符串。
num = 123
s = str(num)
print(type(s))
输出
<class 'str'>
sum(): 方法对序列进行求和计算。
sum([1, 2, 3])
6
评论 涉及到了numpy,单独写
import numpy as np
a = np.array([[1,2],[3,4]])
# 按行相加,并且保持其二维特性
print(np.sum(a, axis=1, keepdims=True))
# 按行相加,不保持其二维特性
print(np.sum(a, axis=1))
输出
array([[3], [7]])
array([3, 7])
super():函数是用于调用父类(超类)的一个方法。
class A:
def add(self, x):
y = x + 1
print(y)
class B(A):
def add(self, x):
print(x * 2) # 前后都可添加代码
super().add(x)
print(x * 3)
b = B()
b.add(2)
输出
4
3
6
tuple():元组函数将列表转换为元组。
tuple([1,2,3,4])
(1, 2, 3, 4)
type(): 函数如果你只有第一个参数则返回对象的类型,三个参数返回新的类型对象。
type(1)
<type 'int'>
unichr() :函数 和 chr() 函数功能基本一样, 只不过是返回 unicode 的字符。(python3 没有)
unichr(99)
u'c'
zip() :拉链
a = [1,2,3]
b = [4,5,6]
zippo = zip(a,b)
print(zippo)
输出
打火机
** _ _ feature _ _ **
from __future__ import division, print_function, absolute_import
如果你的python版本是python2.X,你也可以按照python3.X那样使用这些函数
愿你我都站上巨人的肩膀