91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python 關于高級特性的問題

發布時間:2020-08-30 07:35:30 來源:網絡 閱讀:372 作者:ckllf 欄目:編程語言

  1.函數裝飾器有什么作用?請列舉說明?

  2. Python 垃圾回收機制?

  3. 魔法函數 _call_怎么使用?

  4. 如何判斷一個對象是函數還是方法?

  5. @classmethod 和 @staticmethod 用法和區別

  6. Python 中的接口如何實現?

  7. Python 中的反射了解么?

  8. metaclass 作用?以及應用場景?

  9. hasattr()、getattr()、setattr() 的用法

  10. 請列舉你知道的 Python 的魔法方法及用途。

  11. 如何知道一個 Python 對象的類型?

  12. Python 的傳參是傳值還是傳址?

  13. Python 中的元類 (metaclass) 使用舉例

  14. 簡述 any() 和 all() 方法

  15. filter 方法求出列表所有奇數并構造新列表,a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

  16. 什么是猴子補丁?

  17. 在 Python 中是如何管理內存的?

  18. 當退出 Python 時是否釋放所有內存分配?

  1.函數裝飾器有什么作用?請列舉說明?

  答: 裝飾器就是一個函數,它可以在不需要做任何代碼變動的前提下給一個函數增加額外功能,啟動裝飾的效果。 它經常用于有切面需求的場景,比如:插入日志、性能測試、事務處理、緩存、權限校驗等場景。 下面是一個日志功能的裝飾器

  from functools import wraps

  def log(label):

  def decorate(func):

  @wraps(func)

  def _wrap(*args,**kwargs):

  try:

  func(*args,**kwargs)

  print("name",func.__name__)

  except Exception as e:

  print(e.args)

  return _wrap

  return decorate

  @log("info")

  def foo(a,b,c):

  print(a+b+c)

  print("in foo")

  #decorate=decorate(foo)

  if __name__ == '__main__':

  foo(1,2,3)

  #decorate()

  2.Python 垃圾回收機制?

  答:Python 不像 C++,Java 等語言一樣,他們可以不用事先聲明變量類型而直接對變量進行賦值。對 Python 語言來講,對象的類型和內存都是在運行時確定的。這也是為什么我們稱 Python 語言為動態類型的原因。

  主要體現在下面三個方法:

  1.引用計數機制 2.標記-清除 3.分代回收

  3.魔法函數 _call_怎么使用?

  答: call 可以把類實例當做函數調用。 使用示例如下

  class Bar:

  def __call__(self, *args, **kwargs):

  print('in call')

  if __name__ == '__main__':

  b = Bar()

  b()

  4.如何判斷一個對象是函數還是方法?

  答:看代碼及結果就懂了

  from types import MethodType, FunctionType

  class Bar:

  def foo(self):

  pass

  def foo2():

  pass

  def run():

  print("foo 是函數", isinstance(Bar().foo, FunctionType))

  print("foo 是方法", isinstance(Bar().foo, MethodType))

  print("foo2 是函數", isinstance(foo2, FunctionType))

  print("foo2 是方法", isinstance(foo2, MethodType))

  if __name__ == '__main__':

  run()

  輸出:

  foo 是函數 False

  foo 是方法 True

  foo2 是函數 True

  foo2 是方法 False

  5.@classmethod 和 @staticmethod 用法和區別

  答:

  相同之處:@staticmethod 和@classmethod 都可以直接類名.方法名()來調用,不用在示例化一個類。

  @classmethod 我們要寫一個只在類中運行而不在實例中運行的方法。如果我們想讓方法不在實例中運行,可以這么做:

  def iget_no_of_instance(ins_obj):

  return ins_obj.__class__.no_inst

  class Kls(object):

  no_inst = 0

  def __init__(self):

  Kls.no_inst = Kls.no_inst + 1

  ik1 = Kls()

  ik2 = Kls()

  print(iget_no_of_instance(ik1))

  @staticmethod 經常有一些跟類有關系的功能但在運行時又不需要實例和類參與的情況下需要用到靜態方法:

  IND = 'ON'

  class Kls(object):

  def __init__(self, data):

  self.data = data

  @staticmethod

  def check_ind():

  return (IND == 'ON')

  def do_reset(self):

  if self.check_ind():

  print('Reset done for:', self.data)

  def set_db(self):

  if self.check_ind():

  self.db = 'New db connection'

  print('DB connection made for: ', self.data)

  ik1 = Kls(12)

  ik1.do_reset()

  ik1.set_db()

  6.Python 中的接口如何實現?

  答:

  接口提取了一群類共同的函數,可以把接口當做一個函數的集合,然后讓子類去實現接口中的函數。但是在 Python 中根本就沒有一個叫做 interface 的關鍵字,如果非要去模仿接口的概念,可以使用抽象類來實現。抽象類是一個特殊的類,它的特殊之處在于只能被繼承,不能被實例化。使用 abc 模塊來實現抽象類。

  7.Python 中的反射了解么?

  答:Python 的反射機制設定較為簡單,一共有四個關鍵函數分別是 getattr、hasattr、setattr、delattr。

  8.metaclass 作用?以及應用場景?

  答:

  metaclass 即元類,metaclass 是類似創建類的模板,所有的類都是通過他來 create 的(調用new),這使得你可以自由的控制創建類的那個過程,實現你所需要的功能。 我們可以使用元類創建單例模式和實現 ORM 模式。

  9.hasattr()、getattr()、setattr() 的用法

  答:無錫婦科醫院排行 http://www.0510bhyy.com/

  這三個方法屬于 Python 的反射機制里面的,hasattr 可以判斷一個對象是否含有某個屬性,getattr 可以充當 get 獲取對象屬性的作用。而 setattr 可以充當 person.name = "liming"的賦值操作。代碼示例如下:

  class Person():

  def __init__(self):

  self.name = "liming"

  self.age = 12

  def show(self):

  print(self.name)

  print(self.age)

  def set_name(self):

  setattr(Person, "sex", "男")

  def get_name(self):

  print(getattr(self, "name"))

  print(getattr(self, "age"))

  print(getattr(self, "sex"))

  def run():

  if hasattr(Person, "show"):

  print("判斷 Person 類是否含有 show 方法")

  Person().set_name()

  Person().get_name()

  if __name__ == '__main__':

  run()

  10.請列舉你知道的 Python 的魔法方法及用途。

  答:

  1 __init__:

  類的初始化方法。它獲取任何傳給構造器的參數(比如我們調用 x = SomeClass(10, ‘foo’) , __init__就會接到參數 10 和 ‘foo’ 。 __init__在 Python 的類定義中用的最多。

  2 __new__:

  __new__是對象實例化時第一個調用的方法,它只取下 cls 參數,并把其他參數傳給 __init__ 。 __new__很少使用,但是也有它適合的場景,尤其是當類繼承自一個像元組或者字符串這樣不經常改變的類型的時候.

  3 __del__:

  __new__和 __init__是對象的構造器, __del__是對象的銷毀器。它并非實現了語句 del x (因此該語

  11.如何知道一個 Python 對象的類型?

  答:

  可以通過 type 方法

  12.Python 的傳參是傳值還是傳址?

  答:

  Python 中的傳參即不是傳值也不是傳地址,傳的是對象的引用。

  13.Python 中的元類 (metaclass) 使用舉例

  答:

  可以使用元類實現一個單例模式,代碼如下:

  class Singleton(type):

  def __init__(self, *args, **kwargs):

  print("in __init__")

  self.__instance = None

  super(Singleton, self).__init__(*args, **kwargs)

  def __call__(self, *args, **kwargs):

  print("in __call__")

  if self.__instance is None:

  self.__instance = super(Singleton, self).__call__(*args, **kwargs)

  return self.__instance

  class Foo(metaclass=Singleton):

  pass # 在代碼執行到這里的時候,元類中的__new__方法和__init__方法其實已經被執行了,而不是在 Foo 實例化的時候執行。且僅會執行一次。

  foo1 = Foo()

  foo2 = Foo()

  print(foo1 is foo2)

  14.簡述 any() 和 all() 方法

  答: any(x):判斷 x 對象是否為空對象,如果都為空、0、false,則返回 false,如果不都為空、0、false,則返回 true。 all(x):如果 all(x) 參數 x 對象的所有元素不為 0、’’、False 或者 x 為空對象,則返回 True,否則返回 False。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

金乡县| 平舆县| 江孜县| 金山区| 闵行区| 邢台县| 甘洛县| 通化县| 宜州市| 旅游| 中方县| 江川县| 新邵县| 礼泉县| 甘南县| 威海市| 娄底市| 大冶市| 秭归县| 仙游县| 南丰县| 集安市| 论坛| 昌都县| 赤水市| 巴青县| 罗山县| 正镶白旗| 顺昌县| 乐都县| 平远县| 塔河县| 华坪县| 随州市| 双江| 东明县| 丰台区| 嵊泗县| 台南市| 瑞金市| 连平县|