最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python標準庫inspect的具體使用方法

 更新時間:2017年12月06日 09:17:38   作者:再見紫羅蘭  
本篇文章主要介紹了Python標準庫inspect的具體使用方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

inspect模塊用于收集python對象的信息,可以獲取類或函數(shù)的參數(shù)的信息,源碼,解析堆棧,對對象進行類型檢查等等,有幾個好用的方法:

Doc:這樣寫到

The inspect module provides several useful functions to help get information about live objects such as modules, classes, methods, functions, tracebacks, frame objects, and code objects.

這個模塊是針對模塊,類,方法,功能等對象提供些有用的方法。

getargspec(func)

返回一個命名元組ArgSpect(args, varargs, keywords, defaults),args是函數(shù)位置參數(shù)名列表,varargs是*參數(shù)名,keywords是**參數(shù)名,defaults是默認參數(shù)值的元組。

在用__init__參數(shù)自動初始化實例屬性的實踐中,是用字節(jié)碼對象的co_varnames屬性來獲取函數(shù)的位置參數(shù)名的:

def attr_from_locals(locals_dict):
 self = locals_dict.pop('self')
 code = self.__init__.__func__.__code__
 args = code.co_varnames[1:code.co_argcount]
 for k in args:
  setattr(self, k, locals_dict[k])   
class Foo(object):
 def __init__(self, name, color, num=1):
  x = 1
  attr_from_locals(locals())

而當__init__方法使用**特殊參數(shù)接收任意數(shù)量的關鍵字參數(shù)時,上述代碼是不適用的??尚械霓k法是使用字節(jié)碼的co_flags屬性來判斷**參數(shù)是否存在。

函數(shù)使用*args語法來接受任意數(shù)量的位置參數(shù)時,co_flags置位0x04,使用**kwargs語法時,置位0x08,函數(shù)為一個生成器時,置位0x2000,其它位保留:

>>> def foo(x, *args, **kwargv):
  pass
>>> foo.__code__.co_varnames
('x', 'args', 'kwargv')
>>> foo.__code__.co_flags & 0x04
4
>>> foo.__code__.co_flags & 0x08
8

inspect模塊的getargspec()方法正是用此判斷來獲取函數(shù)的特殊參數(shù)的。現(xiàn)在可以方便的獲取__init__的**參數(shù)了:

import inspect
def attr_from_locals(locals_dict):
 self = locals_dict.pop('self')
 args = inspect.getargspec(self.__init__.__func__).args[1:]
 for k in args:
  setattr(self, k, locals_dict[k])
 keywords = inspect.getargspec(self.__init__.__func__).keywords
 if keywords:
  keywords_dict = locals_dict[keywords]
  for k in keywords_dict:
   setattr(self, k, keywords_dict[k])  
class Foo(object):
 def __init__(self, name, **kwargv):
  attr_from_locals(locals())
f = Foo('bar', color='yellow', num=1)
print f.__dict__

結果為:

{'color': 'yellow', 'num': 1, 'name': 'bar'}

對象已經(jīng)正確的初始化了。

getmembers(object[, predicate])

返回一個包含對象的所有成員的(name, value)列表。返回的內容比對象的__dict__包含的內容多,源碼是通過dir()實現(xiàn)的。

predicate是一個可選的函數(shù)參數(shù),被此函數(shù)判斷為True的成員才被返回。

getmodule(object)

返回定義對象的模塊

getsource(object)

返回對象的源代碼

getsourcelines(object)

返回一個元組,元組第一項為對象源代碼行的列表,第二項是第一行源代碼的行號

ismodule,isclass,ismethod,isfunction,isbuiltin

一系列判斷對象類型的方法,大都是包裝了isinstance(object, types.FunctionType)之類語句的函數(shù)。

現(xiàn)在可以用類型判斷來返回一個類的方法了:

class Foo(object):
 '''Foo doc'''
 def __init__(self, name):
  self.__name = name
 def getname(self):
  return self.__name
inspect.getmembers(Foo, inspect.ismethod)

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • python關于多值參數(shù)的實例詳解

    python關于多值參數(shù)的實例詳解

    在本篇內容里小編給大家整理了一篇關于python關于多值參數(shù)的實例詳解內容,有興趣的朋友們可以學習下。
    2021-07-07
  • 使用Python從圖像中提取文本OCR庫的操作詳解

    使用Python從圖像中提取文本OCR庫的操作詳解

    光學字符識別(OCR, Optical Character Recognition)是一種將印刷或手寫文本從圖像、PDF或掃描件中提取為機器可讀文本的技術,使用Python進行OCR處理,開發(fā)者可以輕松調用各種OCR庫,所以本文將給大家介紹使用Python從圖像中提取文本OCR庫的操作
    2024-08-08
  • 利用Python的Twisted框架實現(xiàn)webshell密碼掃描器的教程

    利用Python的Twisted框架實現(xiàn)webshell密碼掃描器的教程

    這篇文章主要介紹了利用Python的Twisted框架實現(xiàn)webshell密碼掃描器的教程,用到了Twisted框架的異步通信機制,需要的朋友可以參考下
    2015-04-04
  • Python中使用Boolean操作符做真值測試實例

    Python中使用Boolean操作符做真值測試實例

    這篇文章主要介紹了Python中使用Boolean操作符做真值測試實例,在Python中,任何類型的對象都可以做真值測試,并且保證返回True或者False,需要的朋友可以參考下
    2015-01-01
  • Python安裝Scrapy庫的常見報錯解決

    Python安裝Scrapy庫的常見報錯解決

    本文主要介紹了Python安裝Scrapy庫的常見報錯解決,文中通過圖文示例介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-11-11
  • 深入解析Python中函數(shù)的參數(shù)與作用域

    深入解析Python中函數(shù)的參數(shù)與作用域

    這篇文章主要介紹了Python中函數(shù)的參數(shù)與作用域,是Python入門學習中的基礎知識,需要的朋友可以參考下
    2016-03-03
  • python實現(xiàn)銀聯(lián)支付和支付寶支付接入

    python實現(xiàn)銀聯(lián)支付和支付寶支付接入

    這篇文章主要為大家詳細介紹了python實現(xiàn)銀聯(lián)支付和支付寶支付的接入,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • Python實現(xiàn)按鍵精靈版的連點器

    Python實現(xiàn)按鍵精靈版的連點器

    這篇文章主要為大家詳細介紹了如何利用Python實現(xiàn)按鍵精靈版的連點器,文中的示例代碼講解詳細,具有一定的學習價值,感興趣的小伙伴可以了解一下
    2023-06-06
  • Python如何將CSV文件轉JSON文件

    Python如何將CSV文件轉JSON文件

    這篇文章主要給大家介紹了關于Python如何將CSV文件轉JSON文件的相關資料,可以使用Python內置的csv和json模塊來實現(xiàn)將csv文件轉為json的操作,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-11-11
  • 教你在pycharm中使用tensorflow的方法

    教你在pycharm中使用tensorflow的方法

    當前使用的是anaconda的3.8版本,無法正常下載tensorflow包,需要構建虛擬環(huán)境使用3.7及以下的解釋器才可以,如何解決這個問題呢,下面小編給大家?guī)砹巳绾卧趐ycharm中使用tensorflow,感興趣的朋友參考下吧
    2021-11-11

最新評論

什邡市| 正定县| 阿尔山市| 开封市| 安平县| 林州市| 玉屏| 兴仁县| 湾仔区| 沙雅县| 芦山县| 清新县| 平昌县| 平潭县| 诸城市| 尉氏县| 阜平县| 英吉沙县| 鸡西市| 理塘县| 韶关市| 罗源县| 疏附县| 义乌市| 河间市| 合水县| 文昌市| 海伦市| 和田县| 常德市| 康保县| 枝江市| 综艺| 永丰县| 唐海县| 德安县| 和政县| 磴口县| 益阳市| 宝鸡市| 无为县|