python的自省函数, 快速找出BUG的良器

python内置的好多自省函数,  合理使用可快速查找相关提示, 快速找到问题点, 以下开始具体说明

1. dir()  列出对象的所有属性和方法

  如:  dir(list)  可以列出列表的所有属性和方法

  [‘__add__‘, ‘__class__‘, ‘__contains__‘, ‘__delattr__‘, ‘__delitem__‘, ‘__dir__‘, ‘__doc__‘, ‘__eq__‘, ‘__format__‘, ‘__ge__‘,   ‘__getattribute__‘, ‘__getitem__‘, ‘__gt__‘, ‘__hash__‘, ‘__iadd__‘, ‘__imul__‘, ‘__init__‘, ‘__init_subclass__‘, ‘__iter__‘, ‘__le__‘,   ‘__len__‘, ‘__lt__‘, ‘__mul__‘, ‘__ne__‘, ‘__new__‘, ‘__reduce__‘, ‘__reduce_ex__‘, ‘__repr__‘, ‘__reversed__‘, ‘__rmul__‘,   ‘__setattr__‘, ‘__setitem__‘, ‘__sizeof__‘, ‘__str__‘, ‘__subclasshook__‘, ‘append‘, ‘clear‘, ‘copy‘, ‘count‘, ‘extend‘, ‘index‘, ‘insert‘,   ‘pop‘, ‘remove‘, ‘reverse‘, ‘sort‘]

2. callable()  判断对象是否可以被调用

    callable() 函数用于检查一个对象是否是可调用的。如果返回True,object仍然可能调用失败;但如果返回False,调用对象    ojbect绝对不会成功。对于函数, 方法, lambda 函式, 类, 以及实现了 __call__方法的类实例, 它都返回 True。

  语法:  callable(object)    object为对象 ,可调用返回true, 不可调用返回false

3. isinstance()   判断某个变量是否具有某种类型

  语法: isinstance(object, classinfo)     object -- 实例对象, classinfo -- 可以是直接或间接类名、基本类型或者由它们组成的元组

  如果object是classinfo的实例, 或者object是classinfo类的子类的一个实例, 则返回true, 否则返回false

  举例:  isinstance(4, int)  返回true

     isinstnace(4, (string, float, int))   4 是元组(string, float, int) 中的一种, 也会返回true

4. hasatter() 和getattr()  判断对象是否有某个属性及获取属性

  语法:    hasattr(object, name)    getattr(object, name [, default])

  举例说明:

  class Demo(object):

    def __init__(self):

      self.name = "laowang"

    def make(self):

      print(‘OK‘)

  a = Demo()

  print(hasattr(a, "name"))           实例化的 对象a具有name属性, 则返回true, 没有则返回false

  print(getattr(a, "age", 18))         实例化的对象a不具有age属性, 则会返回后面的18, 如果不指定18, 则报错

5. help()   查看python的帮助文档

  不确定怎么使用某个内置方法可以使用help()查看

  如  help(print), 会返回print()的详细使用方式, 后面的flush参数你真的懂吗?

  Help on built-in function print in module builtins:

  print(...)
      print(value, ..., sep=‘ ‘, end=‘\n‘, file=sys.stdout, flush=False)

      Prints the values to a stream, or to sys.stdout by default.
      Optional keyword arguments:
      file:  a file-like object (stream); defaults to the current sys.stdout.
      sep:   string inserted between values, default a space.
      end:   string appended after the last value, default a newline.
      flush: whether to forcibly flush the stream.

6.  其余的经常使用的还包括

  type()   返回对象的类型

  id()   返回对象的引用地址, 类似于 is , 可以查看两个变量的内存地址是否一样

原文地址:https://www.cnblogs.com/skaarl/p/9692073.html

时间: 2024-08-01 12:40:34

python的自省函数, 快速找出BUG的良器的相关文章

程序员面试100题之十:快速找出一个数组中的两个数字,让这两个数字之和等于一个给定的值(转)

能否快速找出一个数组中的两个数字,让这两个数字之和等于一个给定的值,为了简化起见,我们假设这个数组中肯定存在至少一组符合要求的解. 假如有如下的两个数组,如图所示: 5,6,1,4,7,9,8 给定Sum= 10 1,5,6,7,8,9 给定Sum= 10 分析与解法 这个题目不是很难,也很容易理解.但是要得出高效率的解法,还是需要一番思考的. 解法一 一个直接的解法就是穷举:从数组中任意取出两个数字,计算两者之和是否为给定的数字. 显然其时间复杂度为N(N-1)/2即O(N^2).这个算法很简

如何快速找出Linux服务器上不该存在恶意或后门文件

如何快速找出Linux服务器上不该存在恶意或后门文件.前段时间我在APT写作时注意到一个问题,我发现网上大多都是关于Windows恶意软件检测的文章以及教程,而关于如何寻找Linux系统上恶意软件的资料却少之又少.因此,这篇文章主要是向大家介绍一些有关检查Linux系统恶意软件的技巧和方法.话不多说,让我们进入正题. 校验二进制文件 有一件事需要检查确认即没有运行的二进制文件被修改.这种类型的恶意软件可以用sshd的版本来支持,以允许使用特定的密码连接到系统,甚至是一些二进制文件的修改版本,它以

编程之美 1.5快速找出故障机器

题目: 有很多服务器存储数据,假设一个机器仅存储一个标号为ID的记录,假设机器总量在10亿以下且ID是小于10亿的整数,假设每份数据保存两个备份,这样就有两个机器存储了同样的数据. 问题是:1.假设在某个时间得到一个数据文件ID的列表,是否能快速地找出表中仅出现一次的ID?即快速找出出现故障的机器存储的数据ID. 2.如果有两台机器出现故障呢?(假设存储同一份数据的两台机器不会同时出现故障,即列表中缺少的是两个不等的ID) 给出了4种解法思路 解法一: 最传统的比较列表,需要遍历整个列表,记录每

[ jquery 过滤器 find(expr|obj|ele) ] 此方法用于在选择器的基础之上搜索所有与指定表达式匹配的元素,这个函数是找出正在处理的元素的后代元素的好方法

此方法用于在选择器的基础之上搜索所有与指定表达式匹配的元素,这个函数是找出正在处理的元素的后代元素的好方法 此方法可以算作是与children()方法相对应的一种方法... 实例: <html lang='zh-cn'> <head> <title>Insert you title</title> <meta http-equiv='description' content='this is my page'> <meta http-equ

经典算法学习——快速找出数组中两个数字,相加等于某特定值

这个算法题的描述如下:快速找出一个数组中的两个数字,让这两个数字之和等于一个给定的值.目前我假设数组中的都是各不相等的整数.这道题是我在一次面试中被问到的,由于各种原因,我没回答上来,十分尴尬.其实这道题十分简单,我们使用相对巧妙的方法来实现下.注意不使用两层循环的元素遍历.示例代码上传至:https://github.com/chenyufeng1991/SumTo100 . 算法描述如下: (0)首先对原数组进行排序,成为递增数组: (1)对排序后的数组头部i [0]和数组尾部j [n-1]

1.5 快速找出机器故障

题目:假设一个机器只存储一个标号为ID的记录,假设每份数据保存2个备份,这样就有2个机器存储了相同的数据.其中ID是小于10亿的整数. 问题1.在某个时间,如果得到一个数据文件ID的列表.是否能够快速的找到这个表中仅出现一次的ID?即快速找出出现故障的机器存储的数据ID. 问题2.如果有两台机器死机呢?(假设同一个数据的俩个备份不会同时丢失,即列表中缺少的是两个不等的ID) 扩展题.如果所有的机子都有三个备份,也就是说同一ID的机子有三台.而且同时又有三台机子死机,还能用上面的方法解决吗? 如果

设计一个函数,找出整型数组元素的最大值

/* 设计一个函数,找出整型数组元素的最大值 */ #include <stdio.h> int maxOfArray(int array[], int length) { // 数组当做函数参数传递时,会当做指针变量来使用,指针变量在64bit编译器环境下,占据8个字节 //int size = sizeof(array); //printf("array=%d\n", size); //sizeof(array); // 1.定义一个变量存储最大值(默认就是首元素) i

第1章 游戏之乐——快速找出故障机器

转载:编程之美_1.5_快速找出机器故障 题目:假设一个机器只存储一个标号为ID的记录,假设每份数据保存2个备份,这样就有2个机器存储了相同的数据.其中ID是小于10亿的整数 问题1.在某个时间,如果得到一个数据文件ID的列表.是否能够快速的找到这个表中仅出现一次的ID?即快速找出出现故障的机器存储的数据ID. 问题2.如果有两台机器死机呢?(假设同一个数据的俩个备份不会同时丢失,即列表中缺少的是两个不等的ID) 扩展题.如果所有的机子都有三个备份,也就是说同一ID的机子有三台.而且同时又有三台

快速找出故障机器

题目描述 关心数据挖掘和搜索引擎的程序员都知道,我们需要很多的计算机来存储和处理海量数据. 然而,计算机难免出现硬件故障而导致网络联系失败或死机.为了保证搜索引擎的服务质量,我们需要保证每份数据都有多个备份. 简单起见,假设每个机器存储一个标号为ID的记录(ID是小于十亿的整数),假设每份数据都保存两个备份,这样就有两个机器储存了同样的数据. 1.在某个时间,如果得到一个数据文件ID的列表,是否能够快速地找出这个表中仅出现一次的ID? 2.如果已经知道只有一台机器死机(也就是说只有一个备份丢失)