什么是python的自省
什么是自省?
在日常生活中,自省(introspection)是一种自我检查行为。
在计算机编程中,自省是指这种能力:检查某些事物以确定它是什么、它知道什么以及它能做什么。自省向程序员提供了极大的灵活性和控制力。
说的更简单直白一点:自省就是面向对象的语言所写的程序在运行时,能够知道对象的类型。简单一句就是,运行时能够获知对象的类型。
例如python,buby,object-C,c++都有自省的能力,这里面的c++的自省的能力最弱,只能够知道是什么类型,而像python可以知道是什么类型,还有什么属性。
最好的理解自省就是通过例子:Typeintrospection这里是各种编程语言中自省(introspection)的例子(这个链接里的例子很重要,也许你很难通过叙述理解什么是introspection,但是通过这些例子,一下子你就可以理解了)
回到Python,Python中比较常见的自省(introspection)机制(函数用法)有:dir(),type(),hasattr(),isinstance(),通过这些函数,我们能够在程序运行时得知对象的类型,判断对象是否存在某个属性,访问对象的属性。
dir()
dir()函数可能是Python自省机制中最著名的部分了。它返回传递给它的任何对象的属性名称经过排序的列表。如果不指定对象,则dir()返回当前作用域中的名称。让我们将dir()函数应用于keyword模块,并观察它揭示了什么:
>>>importkeyword >>>dir(keyword) ['__all__','__builtins__','__doc__','__file__','__name__','__package__','iskeyword','kwlist','main']
type()
type()函数有助于我们确定对象是字符串还是整数,或是其它类型的对象。它通过返回类型对象来做到这一点,可以将这个类型对象与types模块中定义的类型相比较:
>>>type(42)>>>type([])
isinstance()
可以使用isinstance()函数测试对象,以确定它是否是某个特定类型或定制类的实例:
>>>isinstance("python",str) True
python自省中help用法扩展:
打开python的IDLE,就进入到了python解释器中,python解释器本身是被认为是一个主模块,然后在解释器提示符>>>下输入一些我们想了解的信息,所以首先我们会先寻求帮助,所以输入help,接着输入help(),我们就进入了helputility,然后循着提示keywords,modules,以了解python的关键字以及python自带的或者我们额外安装和定义的模块,如果要退出,输入'q',然后回车。
如果我们想了解某个对象(python里面所有对象都可以认为是对象),也可以求助也help(),不过要在括号里输入对象的名称,格式help(object),例如help(print),鉴于对象的自省内容太多,有的只粘贴出部分内容。
>>>help Typehelp()forinteractivehelp,orhelp(object)forhelpaboutobject. >>>help() WelcometoPython3.6'shelputility! IfthisisyourfirsttimeusingPython,youshoulddefinitelycheckout thetutorialontheInternetathttps://docs.python.org/3.6/tutorial/. Enterthenameofanymodule,keyword,ortopictogethelponwriting PythonprogramsandusingPythonmodules.Toquitthishelputilityand returntotheinterpreter,justtype"quit". ... help>keywords HereisalistofthePythonkeywords.Enteranykeywordtogetmorehelp. Falsedefifraise Nonedelimportreturn Trueelifintry andelseiswhile asexceptlambdawith assertfinallynonlocalyield breakfornot classfromor continueglobalpass help>modules PleasewaitamomentwhileIgatheralistofallavailablemodules... PILbase64idlelibrunpy __future__bdbidnarunscript __main__binasciiidna_sslsched _astbinheximaplibscrolledlist _asynciobisectimghdrsearch _bisectbrowserimp ... Enteranymodulenametogetmorehelp.Or,type"modulesspam"tosearch formoduleswhosenameorsummarycontainthestring"spam". >>>help('print') Helponbuilt-infunctionprintinmodulebuiltins: print(...) print(value,...,sep='',end='\n',file=sys.stdout,flush=False) Printsthevaluestoastream,ortosys.stdoutbydefault. Optionalkeywordarguments: file:afile-likeobject(stream);defaultstothecurrentsys.stdout. sep:stringinsertedbetweenvalues,defaultaspace. end:stringappendedafterthelastvalue,defaultanewline. flush:whethertoforciblyflushthestream.
到此这篇关于什么是python的自省的文章就介绍到这了,更多相关python自省是什么内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!