Python提高(最新)

0. Pipvenv虛擬環(huán)境

  1. 安裝pipenv
pip install pipenv
  1. 查看本地python的版本
where python

3.進入到項目文件夾,使用指定版本的python創(chuàng)建虛擬環(huán)境

pipenv shell --python C:\Python312\python.exe
  1. 該文件夾執(zhí)行pip list,可以看出來他是一個純凈的環(huán)境
image.png

5.安裝dbt

pipenv install dbt-snowflake

1.魔法方法

1.1__getitem__允許類有索引訪問方式,自定義自己的字典

索引和賦值方法,用于支持對象的索引和賦值操作。

class MyDict:
    def __init__(self):
        self.data = {}
    
    def __getitem__(self, key):
        return self.data[key]

    def __setitem__(self, key, value):
        self.data[key] = value

my_dict = MyDict()
my_dict['key'] = 'value'
print(my_dict['key'])  # 輸出: value

2. OOP

2.1 依賴反轉(zhuǎn)

  • 概念:設(shè)計面向?qū)ο蟮臅r候,高層的模塊不應(yīng)該是依賴低層模塊, 兩者都應(yīng)該依賴于抽象,意思是:不管是設(shè)計這個類,還是去具體實現(xiàn)這個類的時候,都應(yīng)該設(shè)計成為抽象的類。
  • 實際流程:(1)設(shè)計一個日志接口的抽象類;(2)設(shè)計一個文件日志和數(shù)據(jù)庫日志類,繼承①的抽象類;(3)創(chuàng)建一個專門用來使用②日志的類,供用戶使用(依賴反轉(zhuǎn)體現(xiàn));
  1. 設(shè)計抽象的日志元類
class Logger(ABC):
    @abstractmethod
    def log(self, message):
        pass

    @abstractmethod
    def set_log_level(self, level):
        pass

    @abstractmethod
    def clear_log(self):
        pass
  1. 設(shè)計具體的日志記錄器,文件日志記錄和數(shù)據(jù)庫日志記錄器等
class FileLogger(Logger):
    def __init__(self):
        self.log_level = 'INFO'  # 默認日志級別為 INFO
    
    def log(self, message):
        with open('logfile.txt', 'a') as f:
            f.write(message + '\n')

    def set_log_level(self, level):
        self.log_level = level

    def clear_log(self):
        open('logfile.txt', 'w').close()  # 清空日志文件

class DatabaseLogger(Logger):
    def log(self, message):
        # 實現(xiàn)將日志消息寫入數(shù)據(jù)庫的邏輯
        pass

  1. 設(shè)計負責(zé)使用日志記錄器的文件
class LogManager:
    def __init__(self, logger):
        self.logger = logger

    def do_something_and_log(self, action): #傳入的是類
        # 做一些操作
        result = action()
        self.logger.log('Action done: ' + result)

    def set_log_level(self, level):
        self.logger.set_log_level(level)

    def clear_log(self):
        self.logger.clear_log()

  1. 使用LogManager實現(xiàn)具體功能,而不是直接使用log類
file_logger = FileLogger()
log_manager = LogManager(file_logger)
log_manager.set_log_level('DEBUG')  # 設(shè)置日志級別為 DEBUG
log_manager.do_something_and_log(lambda: 'Result')
log_manager.clear_log()  # 清除日志
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 自己以前整理的筆記,不太完整,后續(xù)會不斷更新。。。。 一、GIL全局解釋器鎖 單進程單線程程序開多個、單進程多線程...
    alan2yang閱讀 481評論 0 4
  • property、魔法屬性和魔法方法、多重繼承和多繼承 1.5 property 學(xué)習(xí)目標(biāo) 1. 能夠說出什么要...
    Cestine閱讀 857評論 0 1
  • Reproduce from (譯)Python魔法方法指南 簡介 什么是魔法方法呢?他們在面向?qū)ο蟮?Pytho...
    RoyTien閱讀 376評論 0 0
  • 1.Python應(yīng)用場景 1.1交互式python開發(fā) 1.2程序運行原理 1.3python文件代碼結(jié)構(gòu)示意圖 ...
    suxin1932閱讀 1,304評論 0 0
  • 1.簡介 魔法方法是python內(nèi)置方法,不需要主動調(diào)用。魔法方法存在的目的是為了給python的解釋器進行調(diào)用。...
    八神庵2020閱讀 430評論 0 1

友情鏈接更多精彩內(nèi)容