Python之路【第十三篇】:isinstance()函数与lambda表达式及函数参数的传递方式
isinstance()函数
isinstance()函数用来判断一个对象是否是某一个类的实例,是,返回True.否则返回False,如:
temp = '123' r = instance(temp,str),结果返回True
def fun(temp): if isinstance(temp,str) or isinstance(temp,list) or isinstance(temp,dict): if len(temp) > 5: return True else: return False else: return None temp = 12345 r = fun(temp) print(r)
lambda表达式
用来创建简单的函数,简单的if....else....可以用三元运算符来代替,简单的函数可以用lambda表达式来创建,如:
def f1(): return 123 f2 = lambda :123 print(f2())
def f3(a1,a2): return a1+a2 f4 = lambda a1,a2:a1+a2
print(f4(1,2))
f1()是一个简单函数,f2()是其lambda表达式,两个函数是等价的
f3()是一个简单函数,f4()是其lambda表达式,两个函数也是等价的
调用的时候注意了,不要忘记括号还有里面的参数,如print(f2())与print(f4(1,2))
函数参数的传递方式
对于列表、字典、set之类的传递参数的时候传递的是一个引用,相当于c语言中的传地址,效果一样,省内存
在python中,函数的传参传递的是引用,注意:
def f(arg): arg = 123 li = [1,2,3] f(li) print(li)
输出结果为:[1,2,3]
arg = 123,相当于arg = li ,arg = 123,本来是li的一个引用,后来碰到了arg = 123,就在内存里创建了123,arg就不再指向li了,反而指向内存中创建的123,所以输出的时候li 的值没有变化
def f(arg): arg.append(4) li = [1,2,3] f(li) print(li)
输出结果为[1,2,3,4],当把参数li传递给arg时,arg与li指向同一个内存地址,对arg进行修改,就相当于修改了原来的li,遇到内存地址的问题好好利用id()函数吧
三样东西有助于缓解生命的疲劳:希望、睡眠和微笑。---康德