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()函数吧

posted @ 2018-01-26 16:52  RongHe  阅读(287)  评论(0编辑  收藏  举报