`

Python学习第四天-Python中的自省

阅读更多

Python 中万物皆对象,自省是指代码可以查看内存中以对象形式存在的其它模块和函数,获取它们的信息,并对它们进行操作。用这种方法,你可以定义没有名称的函数,不按函数声明的参数顺序调用函数,甚至引用事先并不知道名称的函数。

 

使用可选参数和命名参数

Python 允许函数参数有缺省值;如果调用函数时不使用参数,参数将获得它的缺省值。此外,通过使用命名参数还可以以任意顺序指定参数。SQL Server Transact/SQL 中的存储过程也可以做到这些;如果你是脚本高手,你可以略过这部分。

info 函数就是这样一个例子,它有两个可选参数。

'''test default value for argument'''
def info(a, arg1=0, arg2=4):
    print "==========================info method==================="
    print "a is %s, agr1 is %d, arg2 is %d" % (a, arg1, arg2)
    #print a 's type : int or str 
    print type(a)

 调用:

import him
him.info(1)
him.info(1,2)
him.info("555",2,47)

 

type 函数

 

type 函数返回任意对象的数据类型。在 types 模块中列出了可能的数据类型。这对于处理多种数据类型的帮助者函数 非常有用。

import him
him.info(1)
him.info(1,2)
him.info("555",2,47)
print type(him)
 

getattr 介绍

 

你已经知道 Python 函数是对象。你不知道的是,使用 getattr 函数,可以得到一个直到运行时才知道名称的函数的引用。

'''getattr() methond test'''
def getattrTest():
    print "==========================getattrTest method==================="
    li = ['test1', 'test2']
    #get the pop method
    print getattr(li, 'pop')
    ##error no pop2 method
    ##print getattr(li, 'pop2')
    
    ##get the append methond and pass to conference
    xp = getattr(li, 'append')
    ## in fact, xp is append method ,methods are also object in python
    xp('test3')
    ##length + 1
    print "list length is %d" % len(li)
    print li
    
 

过滤列表

 

如你所知,Python 具有通过列表解析将列表映射到其它列表的强大能力。这种能力同过滤机制结合使用,使列表中的有些元素被映射的同时跳过另外一些元素。

过滤列表语法:

[mapping-expression for element in source-list if filter-expression]

这是你所知所爱的列表解析的扩展。前三部分都是相同的;最后一部分,以 if 开头的是过滤器表达式。过滤器表达式可以是返回值为真或者假的任何表达式 。任何经过滤器表达式演算值为真的元素都可以包含在映射中。其它的元素都将忽略,它们不会进入映射表达式,更不会包含在输出列表中。

 

def filterList():
    print "==========================filterList method==================="
    li = ["a","23","this is","bb"]
    print li
    
    print [elem for elem in li if(elem)!="a" ]
    ##return also a list 
    print [elem for elem in li if len(elem)==2]
    
 

调用代码:

 

import him
him.info(1)
him.info(1,2)
him.info("555",2,47)
print type(him)

him.getattrTest()
him.filterList()
him.andorTest()
 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    python入门学习资料

    第 4 章 自省的威力 第 5 章 对象和面向对象 第 6 章 异常和文件处理 第 7 章 正则表达式 第 8 章 HTML 处理 第 9 章 XML 处理 第 10 章 脚本和流 第 11 章 HTTP Web 服务 第 12 章 SOAP Web 服务 第 13 章 单元测试...

    DiveIntoPython-zh-cn

    #### 第4章 自省的威力 该章节介绍了Python中强大的自省机制。 **4.1 概览** - **自省概念**:定义自省并说明其重要性。 - **自省示例**:通过示例展示自省的应用场景。 **4.2 使用可选参数和命名参数** - **...

    Python研究 从新手到高手 Dive Into Python 中文版

    Python 从新手到高手 Dive Into Python 是为有经验的程序员编写的一本 Python 书。 1.在多个平台安装Python 2.第一个Python程序 3.内置数据类型 4.自省的威力 5.对象和面向对象 6.异常和文件处理 7.正则表达式 8....

    python面试题

    Python自省** Python支持运行时自省,即可以在程序运行过程中获取对象的类型信息。 - **常用自省工具** - `type()`:获取对象的类型。 - `dir()`:列出对象的所有属性和方法。 - `getattr()`:获取对象的属性...

    python数据分析 第二版 python for data analysis

    《Python数据分析 第二版》是数据科学领域中的经典之作,由Pandas库的作者Wes McKinney撰写,本书对数据处理、分析和清洗有着详尽的讲解,并且全面升级了内容,相较第一版增加了对Pandas、NumPy等Python库的详细介绍...

    python高级编程.pdf

    #### 第四章:深入类和对象 - **鸭子类型与多态**:不依赖于对象的具体类型,而是基于对象的行为来决定其适用性。 - **抽象基类(ABC)**:使用`abc`模块创建抽象基类,强制派生类实现某些方法。 - **使用`isinstance...

    Python编程入门经典

    第4章 做出决策 49 4.1 比较两个值是否相等 49 4.2 比较两个值是否不相等 51 4.3 比较两个值的大小 51 4.4 对真值和假值取反 53 4.5 观察多个比较运算的结果 54 4.6 循环 57 4.6.1 重复执行操作 57 4.6.2 终止循环 ...

    深入Python_zh-cn[中文版]

    第一个 Python 程序........................................................................................18 2.1. 概览...................................................................................

    Python Interview

    Python自省 Python提供了一系列内置函数和模块来帮助我们了解运行时的信息,这一过程被称为自省。常见的自省工具包括: - `dir()`: 显示对象的所有属性和方法。 - `getattr()`: 获取对象的属性。 - `hasattr()`: ...

    Dive into Python中文版

    - **第4章:自省的威力** - 讨论了Python中的一些高级特性,如使用可选参数和命名参数。 - 深入介绍了`type`、`str`、`dir`等内置函数的用法,以及如何通过`getattr`获取对象引用。 - 探讨了列表过滤、逻辑...

    02Python开发环境

    ### Python开发环境构建详解 #### 一、Python运行环境的安装与配置 Python作为一种流行的编程语言,在数据分析领域...以上就是构建Python开发环境所需的关键步骤和技术要点,希望对正在学习Python的同学有所帮助。

    python面试题100.docx

    你创立类就是为了创立类的实例对象,可是我们已经学习到了 Python 中的类也是对象。好吧,元类就是用来创立这些类(对象)的,元类就是类的类。 3. @staticmethod 和 @classmethod Python 其实有 3 个方法:静态...

Global site tag (gtag.js) - Google Analytics