python基礎知識點總結

来源:https://www.cnblogs.com/7758520lzy/archive/2019/12/30/12120142.html
-Advertisement-
Play Games

手寫一個完整的裝飾器模版 # 用於修複被裝飾對象的名稱空間 from functools import wrape def wrapper(func): @wraps(func) def inner(*args, **kwargs): # func執行之前的操作 res = func(*args, ...


手寫一個完整的裝飾器模版

# 用於修複被裝飾對象的名稱空間
from functools import wrape

def wrapper(func):
    @wraps(func)
    def inner(*args, **kwargs):
        # func執行之前的操作
        res = func(*args, **kwargs)
        # func執行之後的操作
        return res
    return inner

簡述面向對象三大特性及各自特點

'''
封裝:將屬性和方法放在類的內部,通過類的實例化出對象,用對象訪問屬性或方法,隱藏功能的實現細節,可設置訪問許可權
好處:提高了代碼的復用性,安全性,降低代碼的冗餘度

繼承:實現代碼的重用,也可以理解為讓類與類之間建立父子關係,使子類擁有父類的屬性和方法,並可衍生出自己獨有的屬性和方法。需要註意的是,在python中存在多繼承,這是其他編程語言沒有的一個特性
好處:減少代碼的重用,提高代碼的可讀性,規範編程模式

多態:同一個方法,不同對象調用,實現的功能不一樣。python中的多態不像其他編程語言,崇尚“鴨子類型”,即不用通過具體的繼承關係來約束其他類,只要這些不同的類具有相同的方法名,利用統一的方式來調用
好處:增加代碼的靈活度,調用方法,不會影響到類的內部設計
'''

簡述解釋性語言和編譯性的區別

'''
- 解釋型:每次執行程式都要重新編譯,降低了執行效率,但提供相應的解釋器後,跨平臺比較容易,調試方便,比如說Python,JavaScript、C#

- 編譯型:一次編譯,重覆執行,執行效率相對較高,但由於編譯成特定的機器碼,導致跨平臺性差,調試麻煩,比如C,C++,PHP

總結:
解釋型語言,執行速度慢、效率低;依靠解釋器、跨平臺性好
編譯型語言,執行速度快、效率高;依靠編譯器、跨平臺性較差

java語言(瞭解)
可以說是編譯型,所有的java代碼都要編譯,不經過編譯啥也沒有;
也可以說是解釋型,java代碼編譯後不能直接運行,在jvm上解釋運行
由於java對於多種不同的操作系統有不同的jvm,所以java實現了真正意義上的跨平臺
'''

列舉你所知道的python2與python3之間的區別

# 參照https://www.cnblogs.com/zengyi1995/p/10736673.html
# 參照https://www.cnblogs.com/xiaoyuanqujing/articles/11721989.html
'''
1.解釋器預設編碼
    python2:ASCII
    python3:utf-8
2.str(字元串)的區別
    python2:Unicode類型表示字元串序列,str類型表示位元組序列
    python3:str類型表示字元串序列,byte類型表示位元組序列
3.輸入
    python2:raw_input('請輸入用戶名:')
    python3:input('請輸入用戶名')  # 等價於python2中的raw_input
    ps:python2中的input()必須指定數據類型,否則會拋異常
4.輸出
    python2:
    print('hello', 'world')   # 結果:('hello','world')
    print '你好'  # 結果:你好
    python3:
    print('hello', 'world')   # 結果:hello world
    print('你好') # 結果:你好
5.數字的表示
    python2:64位機器,範圍-2^63~2^63-1;超出這個範圍,自動轉換成long(長整型)
    python3:所有整型都是int,沒有long(長整型)
6.整除:1/2的結果
    python2:0 只保留整數位
    python3:0.5 保留所有內容
7.range/xrange
    python2:
        range:在記憶體中立即把所有的值創建
        xrange:不會在記憶體中立即創建,邊迴圈邊創建
    python3:
        range:不會在記憶體中立即創建,邊迴圈邊創建,等價於python2中的xrange
        沒有xrange
8.dict(字典)的keys/values/items方法
    python2:返回列表,可通過索引取值
    python3:返回類,只能通過迴圈取值
9.新式類和經典類
    python2:沒有繼承Object類的類是經典類,繼承了Object類的類是新式類
    python3:預設所有類都繼承Object類,只有新式類,沒有經典類
    ps:
    新式類:廣度優先,遵循mro
    經典類:深度優先,不遵循mro
10.global和nonlocal
    python2:使用關鍵字global聲明某個變數為全局變數,但嵌套函數中,聲明某個變數為非局部變數無法實現
    python3:除了global關鍵字,新增了關鍵字nonlocal,實現了嵌套函數中,聲明某個變數為非局部變數
'''

什麼是匿名函數。匿名函數一般結合什麼一起使用,請列舉幾個常用的

'''
不用顯式定義的函數,即沒有函數名的函數,通過lambda關鍵字表示。本身沒有任何意義,就是一個表達式,一般結合內置函數使用,比如max,min,sorted,map,reduce,filter

ps:
max(可迭代對象, key=函數對象):根據函數對象返回結果為依據,返回可迭代對象中的最大值

min(可迭代對象, key=函數對象):根據函數對象返回結果為依據,返回可迭代對象中的最小值

sorted(可迭代對象, [key=函數對象], [reverse=True]):根據函數對象返回的結果作為依據(可選),對可迭代對象進行排序,預設為升序,reverse=True表示結果為降序(該參數可選)

map(函數對象,可迭代對象):將可迭代對象中的元素依次通過函數對象修改後,依次映射到map對象中,通過轉換成容器類型的數據展示,只能轉換一次

reduce(函數對象, 可迭代對象, [初始值]):使用前,導包→from functools import reduce;每次從可迭代對象中獲取兩個元素進行累積計算,即reduce(func,[1,2,3]) 等價於 func(func(1,2),3)。如果求和,初始值預設為0,求乘積時,初始值為1(該參數可選)

filter(函數對象, 可迭代對象)根據函數對象中的返回值是True還是False決定保留還是丟棄可迭代對象中的元素,如果該元素在函數對象中的結果為True,則添加到filter對象中,通過轉換成容器類型數據展示,只能轉換一次
'''

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本篇文章主要介紹了PHP組件、框架以及Composer,具有一定的學習價值,感興趣的朋友可以瞭解一下。 什麼是組件 組件是一組打包的代碼,是一系列相關的類、介面和Trait,用於幫助我們解決PHP應用中某個具體問題。例如,你的PHP應用需要收發HTTP請求,可以使用現成的組件如guzzle/guzz ...
  • Composer是一個非常流行的PHP包依賴管理工具,已經取代PEAR包管理器,對於PHP開發者來說掌握Composer是必須的. 對於使用者來說Composer非常的簡單,通過簡單的一條命令將需要的代碼包下載到vendor目錄下,然後開發者就可以引入包並使用了. 其中的關鍵在於你項目定義的comp ...
  • 原先在《演算法競賽入門經典》看過這題,當時沒想出來選擇百度。結果洛谷再次跳出來了。很尷尬,忘了做題方法的我繼續百度。重做了一遍,很慚愧 1 #include <stdio.h> 2 #include <string.h> 3 int main(void) 4 { 5 int a, b; 6 int s ...
  • 【編寫程式,輸人一個大於2的自然數,然後輸出小於該數字的所有素數組成的列表。】所謂素數,是指除了1和自身之外沒有其他因數的自然數,最小的素數是2,後面依次是3、5、7、11、13... c++代碼: #include<iostream> #include<bits/stdc++.h> #define ...
  • 本節通過硬體描述語言Verilog HDL對二十進位編碼器的描述,介紹Verilog HDL程式的基本結構及特點。 二十進位編碼器及Verilog HDL描述 二十進位編碼器是數字電路中常用的電路單元,它的輸入是代表0~9這10個輸入端的狀態信息。輸入信號為高電平時,輸出相應的BCD碼,因此也稱為1 ...
  • 官網提示是這樣的,對/e修飾符的支持已刪除。請改用preg_replace_callback()原因是/e 修正符使 preg_replace() 將 replacement 參數當作 PHP 代碼(在適當的逆向引用替換完之後),會被一句話後門使用 看看smarty中是也是這樣用的,也是存在問題$s ...
  • 上圖是官方文檔的介紹,總結一下講了兩個知識點 ①是否獲取匹配並保存匹配的值、②正向預查和反向預查。 1:解釋是否獲取匹配並保存匹配的值 ()表示捕獲分組,獲取匹配,()把每個分組裡的匹配的值保存起來 (?:)表示非捕獲分組,獲取匹配,非捕獲分組匹配的值不會保存起來,可以提高程式執行速度 (?=?!? ...
  • 音視頻剪裁命令 ffmpeg -i input.mp4 -ss 00:00:00 -t 10 out.ts -i : 指定視頻 -ss : 開始時間 -t : 指定裁剪的秒數 音視頻合併的命令 ffmpeg -f concat -i inputs.txt out.flv -f concat : 指定 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...