<strike id="gcwsi"></strike>
  • <ul id="gcwsi"></ul>

    千鋒教育-做有情懷、有良心、有品質的職業教育機構

    400-811-9990
    手機站
    千鋒教育

    千鋒學習站 | 隨時隨地免費學

    千鋒教育

    掃一掃進入千鋒手機站

    領取全套視頻
    千鋒教育

    關注千鋒學習站小程序
    隨時隨地免費學習課程

    上海
    • 北京
    • 鄭州
    • 武漢
    • 成都
    • 西安
    • 沈陽
    • 廣州
    • 南京
    • 深圳
    • 大連
    • 青島
    • 杭州
    • 重慶
    當前位置:哈爾濱千鋒IT培訓  >  技術干貨  >  python閱讀代碼提高編碼能力

    python閱讀代碼提高編碼能力

    來源:千鋒教育
    發布人:xqq
    時間:2023-11-12 08:32:14

    python中閱讀源代碼也是提高編碼能力的一種途徑,就像臨摹大師的畫一樣。可以通過觀摩理解,吸收別人的智慧與技巧提高自己的能力。因為,工作上需要用flask,因為最開始自己學習flask的時候就對flask中的全局變量:g、request、session等,全局變量覺得很奇怪。request是全局變量,但是每個請求的request都是不一樣,在我調用request對象的時候并沒有指定是那個請求的request,flask怎就能給我當前請求的request?通過查閱資料,再加上自己閱讀flask的代碼:

    classLocal(object):

    ##request對象是Local的實例

    __slots__=('__storage__','__ident_func__')

    def__init__(self):

    ##object.__setattr__如此賦值,并不調用實例的__setattr__方法

    object.__setattr__(self,'__storage__',{})

    ##這里的__ident_func__存的的是當前進程/協程的唯一id

    object.__setattr__(self,'__ident_func__',get_ident)

    def__iter__(self):

    returniter(self.__storage__.items())

    def__call__(self,proxy):

    """Createaproxyforaname."""

    returnLocalProxy(self,proxy)

    def__release_local__(self):

    self.__storage__.pop(self.__ident_func__(),None)

    def__getattr__(self,name):

    try:

    ##每次調用request就是調用當前進程/協程下的request

    returnself.__storage__[self.__ident_func__()][name]

    exceptKeyError:

    raiseAttributeError(name)

    def__setattr__(self,name,value):

    ident=self.__ident_func__()

    storage=self.__storage__

    try:

    storage[ident][name]=value

    exceptKeyError:

    storage[ident]={name:value}

    def__delattr__(self,name):

    try:

    delself.__storage__[self.__ident_func__()][name]

    exceptKeyError:

    raiseAttributeError(name)

    通過閱讀flask的內部實現就明白了到底是如何優雅的實現:使用這些全局變量的時候,你啥都不用管只要調用就行了。這就是python的優雅的一面。而優秀的代碼就是類似于這種的優雅的實現,多多‘臨摹’高手的代碼,可以學到更多優雅技巧:裝飾器、協程、生成器、魔法方法等。而不是光學會概念、寫一些例子。閱讀代碼中看到實際的應用代碼片段,更加有助于自己以后用到自己的代碼中。

    以上內容為大家介紹了python閱讀代碼提高編碼能力,希望對大家有所幫助,如果想要了解更多Python相關知識,請關注IT培訓機構:千鋒教育。

    聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。

    猜你喜歡LIKE

    python函數中的參數有哪些?

    2023-11-14

    python中pygal模塊如何使用?

    2023-11-14

    Python描述符中有哪三種方法?

    2023-11-14

    最新文章NEW

    如何使用python any()判斷多元素?

    2023-11-14

    python中doctest庫是什么?

    2023-11-14

    python模塊引入的三種方式

    2023-11-14

    相關推薦HOT

    更多>>

    快速通道 更多>>

    最新開班信息 更多>>

    網友熱搜 更多>>