區塊鏈商城開發正式版丨區塊鏈商城系統開發技術原理丨區塊鏈商城原始碼平臺

xiaofufu發表於2023-02-25

  新零售指的就是新型零售商業模式,將線上與線下進行融合,消費者可以從線上進行選物,然後到線下門店進實際體驗,另外還可以透過大資料來瞭解消費者的消費習慣,從而提供更加完善的服務。


  新零售即企業以網際網路為依託,透過運用大資料、人工智慧等先進技術手段,對商品的生產、流通與銷售過程進行升級改造,進而重塑業態結構與生態圈,並對線上服務、線下體驗以及現代物流進行深度融合的零售新模式。


  透過Python C API來建立


  透過型別物件來建立


  Python對外提供了C API,分為兩種:


  AOL,(Abstract Object Layer),形式如PyObject_***形式,可以應用在任何Python物件上


  PyObject*intObj=PyObject_New(PyObject,&PyInt_Type)


  COL(Concrete Object Layer)只能作用於某一種型別的物件上,對於內建物件都有一套API


  PyObject*intObj=PyInt_FromLong(10)


  對於自定義的型別,比如Class A(object)定義的型別A,要建立其物件,由於Python不可能事先提供


  PyA_New這樣的API,他將會透過A所對應的型別物件來建立例項物件。


  下面我們舉例建立整數物件的函式呼叫流程(如圖):


  PyInt_Type中的tp_new會被呼叫,如果tp_new是空,會到基類找tp_new


  tp_new會訪問PyInt_Type中記錄的tp_basicsize資訊,完成申請記憶體的操作


  之後呼叫tp_init,完成初始化的操作


  Python利用C語言實現了物件的多型性,Python內部在建立物件時會使用PyObject*取儲存和維護這個物件,(所有物件的頭部是相同的),因此直接可以使用該指標所指物件的ob_type域動態去判斷,正是這個域的存在,Python實現了多型性。


  我們來分析一下:


  void Print(PyObject*object){


  object->ob_type.tp_print(object);


  }


  如果指標本身是一個PyIntObject*,就會呼叫到PyIntObject的型別物件中定義的輸出操作,


  如果是一個PyStringObject*,就會呼叫到PyStringObject物件對應的型別物件中定義的輸出操作。


  1.4引用計數


  Python內建了垃圾回收機制,進行較為繁重的記憶體管理工作,引用計數正是Python垃圾回收機制的一部分。


  Python中每一個東西都有一個ob_refcnt變數,維護著引用計數,決定著物件的建立和消亡。


  透過Py_INCREF(op)和Py_DECREF(op)兩個宏來增加和減少一個物件的引用計數。


  當引用計數為0,會呼叫該物件的tp_dealloc進行析構動作


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69956839/viewspace-2937010/,如需轉載,請註明出處,否則將追究法律責任。

相關文章