zoukankan      html  css  js  c++  java
  • 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()函数吧

    三样东西有助于缓解生命的疲劳:希望、睡眠和微笑。---康德
  • 相关阅读:
    实战DeviceIoControl 之五:列举已安装的存储设备
    zend server 安装及相关配置
    php中echo 与print 的区别
    PHP:Deprecated: Function set_magic_quotes_runtime() is deprecated 错误
    php与ascii码
    计算EXCEL列名代号的程序
    笔记本电脑键盘不能正常输入字符
    读写注册表
    创建用于监视对student表进行插入和更新操作的触发器
    在客户机上安装Windows服务
  • 原文地址:https://www.cnblogs.com/ronghe/p/8360383.html
Copyright © 2011-2022 走看看