国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

python高階技巧

這篇具有很好參考價(jià)值的文章主要介紹了python高階技巧。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

目錄

設(shè)計(jì)模式

單例模式

具體用法?

工廠模式

優(yōu)點(diǎn)

閉包

案例

修改閉包外部變量?

閉包優(yōu)缺點(diǎn)

裝飾器

裝飾器原理

裝飾器寫(xiě)法

遞歸

遞歸的調(diào)用過(guò)程

遞歸的優(yōu)缺點(diǎn)

用遞歸計(jì)算階乘

設(shè)計(jì)模式

含義:設(shè)計(jì)模式是一種編程套路,通過(guò)這種編程套路可以極大的方便程序的開(kāi)發(fā)

除了面向?qū)ο笸猓诰幊讨幸灿泻芏嗉榷ǖ奶茁房梢苑奖汩_(kāi)發(fā),我們稱之為設(shè)計(jì)模式

  • 單例、工廠模式
  • 建造者、責(zé)任鏈、狀態(tài)、備忘錄、解釋器、訪問(wèn)者、觀察者、中介、模板、代理模式等

單例模式

含義:保證一個(gè)類(lèi)只有一個(gè)實(shí)例,并提供一個(gè)訪問(wèn)他的全局訪問(wèn)點(diǎn)

使用場(chǎng)景:當(dāng)一個(gè)類(lèi)只能有一個(gè)實(shí)例,而客戶可以從一個(gè)眾所周知的訪問(wèn)點(diǎn)訪問(wèn)他時(shí)

具體用法?

#str_tools.py文件
class StrTools:
    pass
str_tool=StrTools()
import str_tools
s1=str_tools.str_tool
s2=str_tools.str_tool
print(id(s1))#2396069558544
print(id(s2))#2396069558544

結(jié)果:這樣得到的對(duì)象始終是同一個(gè)

工廠模式

前言:當(dāng)需要大量創(chuàng)建一個(gè)類(lèi)的實(shí)例時(shí),可以使用工廠模式,即從原生的使用類(lèi)的構(gòu)造去創(chuàng)建對(duì)象的形式遷移到基于工廠提供的方法去創(chuàng)建對(duì)象的形式。

優(yōu)點(diǎn)

  • 大批量創(chuàng)建對(duì)象的時(shí)候有統(tǒng)一的入口,易于代碼維護(hù)
  • 當(dāng)發(fā)生修改時(shí),僅修改工廠類(lèi)的創(chuàng)建方法即可
  • 符合現(xiàn)實(shí)世界的模式,即由工廠來(lái)制作產(chǎn)品(對(duì)象)
class Person:
    pass
class Worker(Person):
    pass
class Student(Person):
    pass
class Teacher(Person):
    pass
class PersonFactory:
    def get_person(self,p_type):
        if p_type=="worker":
            return Worker()
        elif p_type=="student":
            return Student()
        else:
            return Teacher()
#構(gòu)造工廠實(shí)例
pf=PersonFactory()
#獲取對(duì)象
worker=pf.get_person("worker")
student=pf.get_person("student")
teacher=pf.get_person("teacher")

閉包

含義:在函數(shù)嵌套的前提下,內(nèi)部函數(shù)使用了外部函數(shù)的變量,并且外部函數(shù)返回了內(nèi)部函數(shù),我們把這個(gè)使用外部函數(shù)變量的內(nèi)部函數(shù)稱為閉包

案例

#簡(jiǎn)單閉包
def outer(logo):
    def inner(msg):
        print(f"<{logo}>{msg}<{logo}>")
    return inner

#調(diào)用outer
fn1=outer("圖標(biāo)")
#調(diào)用函數(shù)fn1
fn1("大家好")#<圖標(biāo)>大家好<圖標(biāo)>
fn2=outer("圖片")
fn2("大家好")#<圖片>大家好<圖片>

修改閉包外部變量?

注意:在內(nèi)部函數(shù)修改閉包所引入的外部變量的話,那么該變量需要被nonlocal關(guān)鍵字修飾

def outer(num1):
    def inner(num2):
        #通過(guò)nonlocal關(guān)鍵字修飾就可以修改外部函數(shù)傳來(lái)的變量
        nonlocal  num1
        num1+=num2
        print(f"num1={num1}")
    return inner

fn=outer(10)
fn(20)#num1=30

閉包優(yōu)缺點(diǎn)

  • 無(wú)需定義全局變量即可實(shí)現(xiàn)通過(guò)函數(shù),持續(xù)訪問(wèn)、修改某個(gè)值(得到內(nèi)部函數(shù)后,外部變量值就確定了,可以通過(guò)nonlocal關(guān)鍵字修改)
  • 閉包使用的變量位于外部函數(shù)內(nèi)的,難以被錯(cuò)誤的調(diào)用更改
  • 缺點(diǎn):由于內(nèi)部函數(shù)會(huì)持續(xù)引用外部函數(shù)的值,所以會(huì)導(dǎo)致這一部分內(nèi)存空間不被釋放,一直占用內(nèi)存

裝飾器

含義:裝飾器其實(shí)也是一種閉包,其功能就是在不破壞目標(biāo)函數(shù)原有代碼和功能的前提下,為目標(biāo)函數(shù)增加新功能

理解:創(chuàng)建一個(gè)閉包函數(shù),在閉包函數(shù)內(nèi)調(diào)用目標(biāo)函數(shù),可以達(dá)到不改變目標(biāo)函數(shù)的同時(shí),增加額外功能

裝飾器原理

def sleep():
    import random
    import time
    print("睡眠中……")
    time.sleep(random.randint(1,5))

#為目標(biāo)函數(shù)增加功能(在原功能前加我睡覺(jué)了,功能后加我起床了)
def outer(func):
    def inner():
        print("我睡覺(jué)了")
        func()
        print("我起床了")
    return inner
fn=outer(sleep)
fn()
#我睡覺(jué)了
#睡眠中……
#我起床了

裝飾器寫(xiě)法

過(guò)程:使用@符號(hào)來(lái)@添加功能的函數(shù),并且將其定義在目標(biāo)函數(shù)上就會(huì)為目標(biāo)函數(shù)增添固定的功能

#為目標(biāo)函數(shù)增加功能(在原功能前加我睡覺(jué)了,功能后加我起床了)
def outer(func):
    def inner():
        print("我睡覺(jué)了")
        func()
        print("我起床了")
    return inner

#目標(biāo)函數(shù)
@outer
def sleep():
    import random
    import time
    print("睡眠中……")
    time.sleep(random.randint(1,5))

sleep()
# 我睡覺(jué)了
# 睡眠中……
# 我起床了

遞歸

含義:若在一個(gè)函數(shù)的函數(shù)體內(nèi)調(diào)用了該函數(shù)本身,那么這個(gè)函數(shù)就稱為遞歸函數(shù)

遞歸的組成部分:遞歸調(diào)用與遞歸終止條件

遞歸的調(diào)用過(guò)程

  • 每遞歸調(diào)用一次函數(shù),都會(huì)在棧內(nèi)存分配一個(gè)棧幀
  • 每執(zhí)行完一次函數(shù),都會(huì)釋放相應(yīng)的空間

遞歸的優(yōu)缺點(diǎn)

  • 優(yōu)點(diǎn):思路和代碼簡(jiǎn)單
  • 缺點(diǎn):占用內(nèi)存多,效率低下

用遞歸計(jì)算階乘

python高階技巧,python,python,開(kāi)發(fā)語(yǔ)言,數(shù)據(jù)庫(kù)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-627517.html

def fac(n):
    if n==1:
        return 1
    else:
        return n*fac(n-1)
#計(jì)算6的階乘
print(f"六的階乘為:{fac(6)}")#六的階乘為:720

到了這里,關(guān)于python高階技巧的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【Python開(kāi)發(fā)】FastAPI 10:SQL 數(shù)據(jù)庫(kù)操作

    【Python開(kāi)發(fā)】FastAPI 10:SQL 數(shù)據(jù)庫(kù)操作

    在 FastAPI 中使用 SQL 數(shù)據(jù)庫(kù)可以使用多個(gè) ORM 工具,例如 SQLAlchemy、Tortoise ORM 等,類(lèi)似 Java 的 Mybatis 。這些?ORM 工具可以幫助我們方便地與關(guān)系型數(shù)據(jù)庫(kù)進(jìn)行交互,如 MySQL 、PostgreSQL等。本篇文章將介紹如何使用 SQLAlchemy 來(lái)完成數(shù)據(jù)庫(kù)操作,以便讓我們?cè)?FastAPI 項(xiàng)目中方便地進(jìn)

    2024年02月14日
    瀏覽(25)
  • 〖Python 數(shù)據(jù)庫(kù)開(kāi)發(fā)實(shí)戰(zhàn) - MongoDB篇⑧〗- MongoDB的數(shù)據(jù)結(jié)構(gòu)

    訂閱 Python全棧白寶書(shū)-零基礎(chǔ)入門(mén)篇 可報(bào)銷(xiāo)! 白嫖入口-請(qǐng)點(diǎn)擊我。 推薦他人訂閱,可獲取扣除平臺(tái)費(fèi)用后的35%收益,文末名片加V! 說(shuō)明:該文屬于 Python全棧白寶書(shū)專欄, 免費(fèi)階段訂閱數(shù)量4300+ , 購(gòu)買(mǎi)任意白寶書(shū)體系化專欄可加入 TFS-CLUB 私域社區(qū)。 福利:加入社區(qū)的小伙

    2023年04月09日
    瀏覽(105)
  • Python Flask Web開(kāi)發(fā)二:數(shù)據(jù)庫(kù)創(chuàng)建和使用

    Python Flask Web開(kāi)發(fā)二:數(shù)據(jù)庫(kù)創(chuàng)建和使用

    數(shù)據(jù)庫(kù)在 Web 開(kāi)發(fā)中起著至關(guān)重要的作用。它不僅提供了數(shù)據(jù)的持久化存儲(chǔ)和管理功能,還支持?jǐn)?shù)據(jù)的關(guān)聯(lián)和連接,保證數(shù)據(jù)的一致性和安全性。通過(guò)合理地設(shè)計(jì)和使用數(shù)據(jù)庫(kù),開(kāi)發(fā)人員可以構(gòu)建強(qiáng)大、可靠的 Web 應(yīng)用程序,滿足用戶的需求。這里介紹:SQLAlchemy 安裝pymysql和

    2024年02月10日
    瀏覽(101)
  • python使用flask實(shí)現(xiàn)前后端分離&通過(guò)前端修改數(shù)據(jù)庫(kù)數(shù)據(jù)【全棧開(kāi)發(fā)基礎(chǔ)】

    python使用flask實(shí)現(xiàn)前后端分離&通過(guò)前端修改數(shù)據(jù)庫(kù)數(shù)據(jù)【全棧開(kāi)發(fā)基礎(chǔ)】

    完整代碼放到了最后,時(shí)間緊張的話直接拉到最后或點(diǎn)擊目錄【?? 完整代碼】看完整代碼 這里先提一下,我們運(yùn)行后端代碼之前需要先建立一個(gè)名字為 python 的數(shù)據(jù)庫(kù),而后在該數(shù)據(jù)庫(kù)下創(chuàng)建表 userinfo ,因?yàn)榭吹接械呐笥押蠖舜a拿過(guò)去后會(huì)運(yùn)行不起來(lái)或者就是直接報(bào)錯(cuò)了

    2023年04月09日
    瀏覽(23)
  • MongoDB 數(shù)據(jù)庫(kù)性能優(yōu)化技巧

    原文:MongoDB 數(shù)據(jù)庫(kù)性能優(yōu)化技巧 (techdatafuture.com) MongoDB 是一款靈活且可擴(kuò)展的NoSQL數(shù)據(jù)庫(kù),為了提高其性能,我們可以采取一些優(yōu)化技巧。本文將介紹一些MongoDB性能優(yōu)化的關(guān)鍵點(diǎn),包括索引的使用、查詢優(yōu)化、數(shù)據(jù)模型設(shè)計(jì)和硬件優(yōu)化等。 ?? ? ?? ?1.合理使用索引 ?? ?索

    2024年02月09日
    瀏覽(46)
  • MySQL數(shù)據(jù)庫(kù)性能優(yōu)化技巧介紹

    MySQL數(shù)據(jù)庫(kù)性能優(yōu)化技巧介紹

    MySQL是目前最流行和廣泛使用的開(kāi)源關(guān)系型數(shù)據(jù)庫(kù)之一,隨著數(shù)據(jù)量的增長(zhǎng)和訪問(wèn)負(fù)載的提高,優(yōu)化數(shù)據(jù)庫(kù)性能變得至關(guān)重要,以確保系統(tǒng)能夠高效地處理大量的并發(fā)請(qǐng)求。本文將記錄一些MySQL數(shù)據(jù)庫(kù)性能優(yōu)化的技巧,提高數(shù)據(jù)庫(kù)的運(yùn)行效率,提升系統(tǒng)性能。 對(duì)于MySQL,最簡(jiǎn)單

    2024年02月08日
    瀏覽(51)
  • 【Python使用】嘿馬頭條完整開(kāi)發(fā)md筆記第2篇:數(shù)據(jù)庫(kù),作用【附代碼文檔】

    【Python使用】嘿馬頭條完整開(kāi)發(fā)md筆記第2篇:數(shù)據(jù)庫(kù),作用【附代碼文檔】

    嘿馬頭條項(xiàng)目從到完整開(kāi)發(fā)筆記總結(jié)完整教程(附代碼資料)主要內(nèi)容講述:課程簡(jiǎn)介,ToutiaoWeb虛擬機(jī)使用說(shuō)明,Pycharm遠(yuǎn)程開(kāi)發(fā),產(chǎn)品與開(kāi)發(fā),數(shù)據(jù)庫(kù)1 產(chǎn)品介紹,2 原型圖與UI圖,3 技術(shù)架構(gòu),4 開(kāi)發(fā)。OSS對(duì)象存儲(chǔ),七牛云存儲(chǔ),CDN,緩存。緩存,緩存架構(gòu),緩存數(shù)據(jù),緩存有效

    2024年03月18日
    瀏覽(28)
  • Flutter必備技能:輕松掌握本地存儲(chǔ)與數(shù)據(jù)庫(kù)優(yōu)化技巧!

    正因?yàn)橛芯W(wǎng)絡(luò),App擁有與外界進(jìn)行信息交換的通道,也因此具備了更新數(shù)據(jù)的能力。不過(guò),經(jīng)過(guò)交換后的數(shù)據(jù)通常都保存在內(nèi)存中,而應(yīng)用一旦運(yùn)行結(jié)束,內(nèi)存就會(huì)被釋放,這些數(shù)據(jù)也就隨之消失了。 因此,我們需要把這些更新后的數(shù)據(jù)以一定的形式,通過(guò)一定的載體保存起

    2024年02月09日
    瀏覽(31)
  • Java開(kāi)發(fā)者的Python快速實(shí)戰(zhàn)指南:探索向量數(shù)據(jù)庫(kù)之圖像相似搜索-文字版

    Java開(kāi)發(fā)者的Python快速實(shí)戰(zhàn)指南:探索向量數(shù)據(jù)庫(kù)之圖像相似搜索-文字版

    首先,我要向大家道個(gè)歉。原本我計(jì)劃今天向大家展示如何將圖片和視頻等形式轉(zhuǎn)換為向量并存儲(chǔ)在向量數(shù)據(jù)庫(kù)中,但是當(dāng)我查看文檔時(shí)才發(fā)現(xiàn),騰訊的向量數(shù)據(jù)庫(kù)尚未完全開(kāi)發(fā)完成。因此,今天我將用文本形式來(lái)演示相似圖片搜索。如果您對(duì)騰訊的產(chǎn)品動(dòng)態(tài)不太了解,可以

    2024年02月05日
    瀏覽(101)
  • ????Java開(kāi)發(fā)者的Python快速實(shí)戰(zhàn)指南:探索向量數(shù)據(jù)庫(kù)之圖像相似搜索-文字版

    ????Java開(kāi)發(fā)者的Python快速實(shí)戰(zhàn)指南:探索向量數(shù)據(jù)庫(kù)之圖像相似搜索-文字版

    首先,我要向大家道個(gè)歉。原本我計(jì)劃今天向大家展示如何將圖片和視頻等形式轉(zhuǎn)換為向量并存儲(chǔ)在向量數(shù)據(jù)庫(kù)中,但是當(dāng)我查看文檔時(shí)才發(fā)現(xiàn),騰訊的向量數(shù)據(jù)庫(kù)尚未完全開(kāi)發(fā)完成。因此,今天我將用文本形式來(lái)演示相似圖片搜索。如果您對(duì)騰訊的產(chǎn)品動(dòng)態(tài)不太了解,可以

    2024年02月05日
    瀏覽(98)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包