any
接受一个迭代器,如果迭代器里有一个元素为真,那么返回True,否则返回False
a = []
ret = any(a)
print(ret)
b = [1]
ret1 = any(b)
print(ret1)
36 zip
list1 = [1, 2, 3, 4]
list2 = ["a", "b", "c"]
s = zip(list1, list2)
print(list(s))
37 filter
filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list
def is_odd(x):
return x % 2 == 1
然后,利用filter()过滤掉偶数:
list(filter(is_odd, [1, 4, 6, 7, 9, 12, 17]))
38 map
map函数应用于每一个可迭代的项,返回的是一个结果list。如果有其他的可迭代参数传进来,map函数则会把每一个参数都以相应的处理函数进行迭代处理。map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。
>>> L = [1,2,3,4,]
>>> def pow2(x):
... return x*x
...
>>> list(map(pow2,L))
[1, 4, 9, 16]
三 作用域相关
1 locals 获取执行本方法所在命名空间内的局部变量的字典
2 globals 获取全局变量的字典
四 面向对象相关
1 type 元类,类的最高层
2 object
3 classmethod 类方法,用来修改类变量的
4 staticmethod 静态方法,用来处理一些和操作类无关的事
5 property 可以像调用一个变量一样调用一个方法
class Pager:
def __init__(self,page):
self.page = page
self.page_num = 12
@property
def start(self):
ret = (self.page - 1) * self.page_num
return ret
@property
def end(self):
ret = self.page * self.page_num
return ret
p = Pager(5)
# print(p.start())
# print(p.end())
print(p.start)
print(p.end)
6 vars
7 super 在多继承中,可以保证顶层父类只被调用一次 ,用 _ _mro_ _ 查看多继承规律时,遵循深度优先原则
8 issubclass
检查第一个参数是否是第二个参数的子子孙孙类
返回 : 是一个布尔值
class Base(object):
pass
class Foo(Base):
pass
class Bar(Foo):
pass
print(issubclass(Bar,Base)) # 检查第一个参数是否是第二个参数的子子孙孙类
9 isinstance
检查第一个参数(对象) 是否是第二个参数(类及父类)的实例.
返回值: 布尔型
class Base(object):
pass
class Foo(Base):
pass
obj = Foo()
print(isinstance(obj,Foo))
print(isinstance(obj,Base))
判断一个数据是什么数据类型
a = "python"
ret = isinstance(a,str)
print(a)
五 迭代/生成器相关
1 next
2 iter
3 range
range 是一个生成器,他只用来存储数据的生成方式,而不直接存储数据
# 列表解析
sum([i for i in range(100000000)])# 内存占用大,机器容易卡死
# 生成器表达式
sum(i for i in range(100000000))# 几乎不占内存
六 其他
字符串类型代码执行相关
1 eva l
eva l() 将字符串类型的代码执行并返回结果
print(eva l('1+2+3+4'))
还可以用来操作文件,将文件里面的内容转化为字典,方便调用
2 exec
exec()将自字符串类型的代码执行
print(exec("1+2+3+4"))
exec("print('hello,world')")
3 compile
参数说明:
1> 参数source:字符串或者AST(Abstract Syntax Trees)对象。即需要动态执行的代码段。 2>参数 filename:代码文件名称,如果不是从文件读取代码则传递一些可辨认的值。当传入了source参数时,filename参数传入空字符即可。 3> 参数model:指定编译代码的种类,可以指定为 ‘exec’,’eva l’,’single’。当source中包含流程语句时,model应指定为‘exec’;当source中只包含一个简单的求值表 达式,model应指定为‘eva l’;当source中包含了交互式命令语句,model应指定为'single'。
输入/输出相关
4 input
5 print
def print(self, *args, sep=' ', end='\n', file=None): # known special case of print
"""
print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
file: 默认是输出到屏幕,如果设置为文件句柄,输出到文件
sep: 打印多个值之间的分隔符,默认为空格
end: 每一次打印的结尾,默认为换行符
flush: 立即把内容输出到流文件,不作缓存
"""
file() 和文件有关的关键字
f = open('tmp_file','w')
print(123,456,sep=',',file = f,flush=True)
打印进度条
import time
for i in range(0,101,2):
time.sleep(0.1)
char_num = i//2 #打印多少个'*'
per_str = '\r%s%% : %s\n' % (i, '*' * char_num) if i == 100 else '\r%s%% : %s'%(i,'*'*char_num)
print(per_str,end='', flush=True)
#小越越 : \r 可以把光标移动到行首但不换行
内存相关
6 id
7 hash
文件操作相关
8 open
共有六种操作文件的方分别为: r、w、a、r+、w+、a+ ,每一种都可以用二进制文件来操作:rb、wb、ab、rb+、wb+、ab+,也可以指定编码格式
模块相关