每天Python学习--issubclass,iter,len,locals,map

  • issubclass(class, classinfo):判断参数 class 是否是类型参数 classinfo(直接、间接或 虚拟的) 的子类。
    返回值:如果 class 是 classinfo 的子类返回 True,否则返回 False。
class A:
    pass

class B(A):
    pass

a=A()
print(issubclass(B,A))#True
print(isinstance(a,A))#True
type(B())==A#False

那其与isinstance的区别在哪呢?记住,issubclass判断的是类B是否是类A的子类,而isinstance判断的是一个对象a是否是一个已知的类A的实例,前面也提到过,type也可以判断类,但不会考虑继承关系

  • iter(object[, sentinel]): 用来生成迭代器,可以用来遍历可迭代对象中的元素,如果有第二个实参 sentinel,那么 object 必须是可调用的对象。
list_a=[1,2,3,4,5]
for i in iter(list_a):
    print(i)
#1
#2
#3
#4
#5

iter()函数详解博客

  • len(s):返回对象(字符、列表、元组等)长度或项目个数
dict_a = {'num':123,'name':"doiido"}
list_a=[1,2,3,4,5]
tuple_a=(1,2,3,4)
str_a='hello world'
print('len(dict_a) = %s,\nlen(list_a) = %s,\nlen(tuple_a) = %s,\nlen(str_a) = %s\n'%(len(dict_a),len(list_a),len(tuple_a),len(str_a)))
#输出结果如下:
len(dict_a) = 2,
len(list_a) = 5,
len(tuple_a) = 4,
len(str_a) = 11
  • locals():与globals函数对应,以字典形式返回当前位置的局部变量
def test_locals(a):
    num_a=3
    print(locals())
    
test_locals(2)
#{'num_a': 3, 'a': 2}
  • map(function, iterable, ...):根据提供的函数function对指定序列iterable做映射,当我们提供多个iterable时,function需要接受这些实参,使用在所提供的函数当中
def add_x_y(x,y):
    return x+y

list(map(add_x_y,[1,2,3,4],[5,6,7,8]))
#[6, 8, 10, 12]
#那么,当我们提供的参数序列长度不一致会发生什么呢?,
list(map(add_x_y,[1,2,3],[5,6,7,8]))
#[6, 8, 10]
#答案是只会执行到最短序列长度结束位置

其次,我们还可以使用匿名函数来实现相关函数:

list(map(lambda x,y:x+y, [1,2,3,4],[5,6,7,8]))

最后,我们对比下map与filter函数,前者是将函数应用于序列,而后者则是过滤掉其中为False的部分

list(map(lambda n:n>4, [1,2,3,4,5,6,7,8]))
#[False, False, False, False, True, True, True, True]
list(filter(lambda n:n>4, [1,2,3,4,5,6,7,8]))
#[5, 6, 7, 8]

你可能感兴趣的:(每天Python学习--issubclass,iter,len,locals,map)