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 , 可以查看两个变量的内存地址是否一样

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

  1. python -- 对list去重并找出列表list中的重复元素

    一.一个列表中可能含有重复元素,使用set()可以实现列表的去重处理,但是无法知道哪些元素是重复的,下面的函数用于找出哪些元素重复了,以及重复的次数. 代码: from collections imp ...

  2. 编写一个函数来找出所有不带歧义的函数名,也就是 那些只在一个模块里出现过的函数名(erlang)

    erlang程序设计第八章练习题第二题: code:all_loaded()命令会返回一个由{Mod,File}对构成的列表,内含所有Erlang系统 载入的模块.使用内置函数Mod:module_i ...

  3. python——快速找出两个电子表中数据的差异

    最近刚接触python,找点小任务来练练手,希望自己在实践中不断的锻炼自己解决问题的能力. 公司里会有这样的场景:有一张电子表格的内容由两三个部门或者更多的部门用到,这些员工会在维护这些表格中不定期的 ...

  4. 快速找出网站中可能存在的XSS漏洞实践

    笔者写了一些XSS漏洞的挖掘过程记录下来,方便自己也方便他人. 一.背景 在本篇文章当中会一permeate生态测试系统为例,笔者此前写过一篇文章当中笔者已经讲解如何安装permeate渗透测试系统, ...

  5. 快速找出网站中可能存在的XSS漏洞实践(一)

    一.背景 笔者最近在慕课录制了一套XSS跨站漏洞 加强Web安全视频教程,课程当中有讲到XSS的挖掘方式,所以在录制课程之前需要做大量实践案例,最近视频已经录制完成,准备将这些XSS漏洞的挖掘过程记录 ...

  6. 快速找出故障机器(single number)

    简单起见,假设每个机器存储一个标号为ID的记录(ID是小于十亿的整数),假设每份数据都保存两个备份,这样就有两个机器储存了同样的数据. 1.在某个时间,如果得到一个数据文件ID的列表,是否能够快速地找 ...

  7. Python每日一练(2):找出html中的所有链接(Xpath、正则两个版本)

    要在hrml文件中找出特定的内容,首先需要观察该内容是什么东西,在什么位置,这样才能找出来. 假设html的文件名称是:"1.html".href属性全都在a标签里. 正则版: # ...

  8. python字符串面试题:找出一个字符串中第一个字母和最后一个字符是第一次重复,中间没有重复且最长的子串

    1.给出任意一个字符串,打印一个最长子串字符串及其长度,如果有相同长度的子字符串,都要一起打印出来,该子字符串满足以下条件, 第一个字母和最后一个字符是第一次重复 这个子字符串的中间字母没有重复 这个 ...

  9. 编程之美 set 12 快速找出故障机器

    题目 1. 所有的 ID 都出现 2 次, 只有一个例外, 找到那个例外的 ID 2. 所有的 ID 都出现两次, 只有两个例外, 找出例外的那两个 总计 1. 剑指 offer 上有这两道题的解法, ...

随机推荐

  1. IQKeyboardManager第三方库的使用

    IQKeyboardManager是iOS中解决键盘弹起遮挡UITextField/UITextView的一种很实用的工具.无需输入任何代码,不需要额外的设置.使用IQKeyboardManager的 ...

  2. java-mybaits-00801-逆向工程

    1.1     什么是逆向工程 参看地址:http://www.mybatis.org/generator/index.html 使用官方网站的mapper自动生成工具mybatis-generato ...

  3. js-template-art【一】简述

    一.官方地址 地址:https://github.com/aui/art-template 二.概述 官方对比 三.特性 拥有接近 JavaScript 渲染极限的的性能 调试友好:语法.运行时错误日 ...

  4. hdu1286(找新朋友)&&POJ2407Relatives(欧拉函数模版题)

    http://acm.hdu.edu.cn/showproblem.php?pid=1286 没什么好说的,模板题,主要是弄懂欧拉函数的思想. #include <iostream> #i ...

  5. mysql源码编译安装

    首先去官网http://dev.mysql.com/downloads/mysql/ 下载mysql源码.我下的是5.7.10 源码选择的是 Generic Linux (Architecture I ...

  6. Jenkins时区设置

    系统管理->脚本命令行 System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone', 'Asia/Shanghai')

  7. 004-notepad++安装。

    1.下载地址. 官网:https://notepad-plus-plus.org/ 2.安装.

  8. c++第二十七天

    p135~p140:1.位运算符.作用于整数类型的运算对象,并把运算对象看成是二进制的集合,提供检查和设置二进制位的功能. 2.bitest:一种可表示任意大小的二进制位集合的标准库类型. 3.关于符 ...

  9. Java静态内存与动态内存分配的解析

    1. 静态内存 静态内存是指在程序开始运行时由编译器分配的内存,它的分配是在程序开始编译时完成的,不占用CPU资源. 程序中的各种变量,在编译时系统已经为其分配了所需的内存空间,当该变量在作用域内使用 ...

  10. 同样的输入,为什么Objects.hash()方法返回的hash值每次不一样?

    背景 开发过程中发现一个问题,项目中用Set保存AopMethod对象用于去重,但是发现即使往set中添加相同内容的对象,每次也能够添加成功. AopMethod类的部分代码如下: public cl ...