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

    三样东西有助于缓解生命的疲劳:希望、睡眠和微笑。---康德
  • 相关阅读:
    pandas,对dataFrame中某一个列的数据进行处理
    pandas的简单使用
    pandas,读取或存储DataFrames的数据到mysql中
    pandas,pd.ExcelWriter保存结果到已存在的excel文件中
    用命令让vbox的虚拟硬盘文件转换成vmware的vmdk
    vbox磁盘空间如何扩容
    Linux ext3/ext4数据恢复
    VirtualBox安装64位系统
    ubuntu 12.04启用休眠
    美化你的GRUB,全面支持中文(菜单、提示、帮助)适用7.04-9.04
  • 原文地址:https://www.cnblogs.com/ronghe/p/8360383.html
Copyright © 2011-2022 走看看