Python面經

文章目錄

  • Python
    • 基本概念
      • 1. Python是**解釋型**語言還是**編譯型**語言
      • 2. Python是**面向對象**語言還是面向過程語言
      • 3. Python基本數據類型
      • 4.append和 extend區別
      • 5.del、pop和remove區別
      • 6. sort和sorted區別
      • 介紹一下Python 中的字符串編碼
      • is 和 == 的區別
      • *arg 和**kwarg作用
      • 淺拷貝(Shallow Copy)&深拷貝(Deep Copy)
      • lambda

Python

持續更新中~

基本概念

1. Python是解釋型語言還是編譯型語言

解釋型解釋型是邊編譯邊執行。編譯型語言是把源程序全部編譯成二進制的可運行程序后再運行,如C/C++ 。

注:java程序不是直接編譯成機器語言,而是編譯成字節碼,然后用解釋方式執行字節碼。

2. Python是面向對象語言還是面向過程語言

面向對象。面向對象編程(OOP)的特點包括:

  • 封裝:將數據和操作這些數據的方法組合在一起。
  • 繼承:允許新創建的類(子類)繼承現有類(父類)的屬性和方法。
  • 多態:允許不同類的對象對同一消息做出響應,但具體的行為會根據對象的實際類型而有所不同。

面向過程編程的特點包括:

  • 將程序分解為一系列的過程或函數,每個過程或函數執行特定的任務。
  • 強調過程和函數的調用,而不是對象和類。

3. Python基本數據類型

  • Numbers(數字):3.7以后存儲字節數會根據數字大小變化(28+48(num/230))
  • List(列表):有序集合。多維列表本質就是列表里面疊列表
  • Tuple(元組):有序集合。元組是只讀的列表
  • Dictionary(字典):無序集合,由鍵值對(key-value)組成。
  • 集合(set):是一組 key 的集合,每個元素都是唯一不重復無序的。
  • a=(4),a的類型為整數

4.append和 extend區別

  • append()方法用于將一個對象添加到列表的末尾。當使用append()方法添加一個列表到另一個列表時,實際上是將整個列表作為一個單獨的元素添加到原列表中。

  • extend()方法用于將一個可迭代對象(如列表、元組、字符串等)的所有元素添加到列表的末尾。使用extend()方法添加一個列表到另一個列表時,實際上是將這個列表中的所有元素逐個添加到原列表中。

my_list = [1, 2, 3]
my_list.extend([4, 5])  # 結果: [1, 2, 3, 4, 5]
my_list.append([5, 6])  # 結果: [1, 2, 3, 4, [5, 6]]

5.del、pop和remove區別

  • del:根據下標進行刪除
  • pop:根據下標進行刪除并返回刪除值,默認刪除最后一個元素
  • remove:根據元素的值進行刪除
my_list = [1, 2, 3, 4, 5]
del my_list[2]  # my_list: [1, 2, 4, 5]
a=my_list.pop(0)  # my_list: [2, 4, 5], a: 0
my_list.remove(4)  # my_list: [2, 5]

6. sort和sorted區別

  • sorted()是一個內置函數,不會修改原始的序列,而是返回一個新的排序后的列表。不會修改原始的序列,而是返回一個新的排序后的列表。
  • sort()是列表(list)的一個方法,它直接修改原列表,按照指定的順序對列表中的元素進行排序。
my_list = [3, 1, 4, 1, 5]
my_list.sort()
print(my_list)  # 輸出: [1, 1, 3, 4, 5]
sorted_list = sorted(my_list, reverse=True)  # 設置reverse為True進行降序排序
print(my_list)  # 輸出: [1, 1, 3, 4, 5]
print(sorted_list)  # 輸出: [5, 4, 3, 1, 1]

reverse和reversed同理

my_list = [1, 2, 3, 4, 5]
reversed_iterator = reversed(my_list)
print(list(reversed_iterator))  # 輸出: [5, 4, 3, 2, 1]
print(my_list)  # 原始列表未被修改: [1, 2, 3, 4, 5]
my_list.reverse()
print(my_list)  # 輸出: [5, 4, 3, 2, 1]

介紹一下Python 中的字符串編碼

  1. ASCII (American Standard Code for Information Interchange):

    • 最早的字符編碼標準,使用7位二進制數表示128個字符,包括英文大小寫字母、數字和一些特殊符號。
    • 由于只支持英文字符,因此不適合表示其他語言。
  2. Unicode:

    • 為了解決ASCII編碼的局限性,Unicode提供了一種可以表示世界上幾乎所有文字的字符集。
  3. UTF-8 (8-bit Unicode Transformation Format):

    • 是Unicode的一種實現方式,可以根據字符的不同使用不同長度(1-4)的字節來表示一個字符。

    • UTF-8最大的特點是它對ASCII編碼是兼容的,即ASCII字符在UTF-8中用一個字節表示,與ASCII編碼相同。

  • str.encode(): 將字符串編碼為指定格式的字節串。
  • bytes.decode(): 將字節串解碼為字符串。

is 和 == 的區別

==是比較操作符,只是判斷對象的(value)是否一致,而 is 則判斷的是對象之間的身份(內存地址)是否一致。

對象的身份,可以通過 id() 方法來查看。

*arg 和**kwarg作用

  • *args代表可變數量的位置參數(arguments),它允許你將不定數量的位置參數傳遞給函數。這些參數被組織為一個元組(tuple),在函數內部可以通過索引來訪問。

  • **kwargs代表可變數量的關鍵字參數(keyword arguments),它允許你將不定數量的關鍵字參數傳遞給函數。這些參數被組織為一個字典(dictionary),在函數內部可以通過鍵來訪問。

def my_function(*args, **kwargs):for arg in args:print(arg)for key, value in kwargs.items():print(f"{key}: {value}")my_function(1, 2, name="Alice", age=25)
# 輸出: 1, 2, name: Alice, age: 25

淺拷貝(Shallow Copy)&深拷貝(Deep Copy)

  • 淺拷貝復制的是原始對象中包含的引用,而不是對象本身。
  • 深拷貝遞歸地復制了原始對象中的所有對象。這意味著深拷貝會創建原始對象的完整副本,包括所有嵌套的對象,修改原始對象不會影響深拷貝。
import copy
original_list = [[1, 2, 3], [4, 5, 6]]shallow_copied_list = copy.copy(original_list)
# 淺拷貝
original_list[0][0] = 'X'
print(shallow_copied_list)  # 輸出: [['X', 2, 3], [4, 5, 6]]
# 深拷貝
deep_copied_list = copy.deepcopy(original_list)
original_list[0][0] = 'X'
print(deep_copied_list)  # 輸出: [[1, 2, 3], [4, 5, 6]]

lambda

lambda是一個用于創建匿名函數的關鍵字。匿名函數是一種沒有名稱的函數,它們通常用于需要函數對象的地方,但又不想去定義一個完整的函數。

people = [("Alice", 30), ("Bob", 25), ("Charlie", 35)]
sorted_people = sorted(people, key=lambda person: person[1])
print(sorted_people)  # 輸出: [('Bob', 25), ('Alice', 30), ('Charlie', 35)]def num():return [lambda x:i*x for i in range(4)]
[m(1) for m in num()]  # 輸出: [3, 3, 3, 3]

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/45586.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/45586.shtml
英文地址,請注明出處:http://en.pswp.cn/web/45586.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Electron 進程間通信

文章目錄 渲染進程到主進程(單向)渲染進程到主進程(雙向)主進程到渲染進程 (單向,可模擬雙向) 渲染進程到主進程(單向) send (render 發送)on &a…

【Stable Diffusion】(基礎篇三)—— 圖生圖基礎

圖生圖基礎 本系列筆記主要參考B站nenly同學的視頻教程,傳送門:B站第一套系統的AI繪畫課!零基礎學會Stable Diffusion,這絕對是你看過的最容易上手的AI繪畫教程 | SD WebUI 保姆級攻略_嗶哩嗶哩_bilibili 本文主要講解如何使用S…

客戶端與服務端之間的通信連接

目錄 那什么是Socket? 什么是ServerSocket? 代碼展示: 代碼解析: 補充: 輸入流(InputStream): 輸出流(OutputStream): BufferedReader 是如何提高讀取效率的&a…

K8s集群初始化遇到的問題

kubectl describe pod coredns-545d6fc579-s9g5s -n kube-system 找到原因1:CoreDNS Pod 處于 Pending 狀態的原因是集群中的節點都帶有 node.kubernetes.io/not-ready 污點 journalctl -u kubelet -f 14:57:59.178592 3553 remote_image.go:114] "PullIma…

《簡歷寶典》12 - 簡歷中“項目經歷”,內功學習 - 下篇

這一小節呢,我們繼續說簡歷中 “項目經歷” 的一些內功心法。因為項目經歷比較核心,所以說完了,內功呢,我們會著重說一下 實戰部分。 目錄 1 所用技術的考慮 2 自我成長的突出 3 綜合使用STAR法則 4 小節 1 所用技術的考慮 …

如何評估AI模型:評估指標的分類、方法及案例解析

如何評估AI模型:評估指標的分類、方法及案例解析 引言第一部分:評估指標的分類第二部分:評估指標的數學基礎第三部分:評估指標的選擇與應用第四部分:評估指標的局限性第五部分:案例研究第六部分&#xff1a…

pear-admin-fast項目修改為集成PostgreSQL啟動

全局搜索代碼中的sysdate(),修改為now() 【前者是mysql特有的,后者是postgre特有的】修改application-dev.yml中的數據庫url使用DBeaver把mysql中的數據庫表導出csv,再從postgre中導入csv腳本轉換后出現了bpchar(xx)類型,那么一定…

用友U8存貨分類按層級取數SQL語句

SELECT cInvCCode 分類編碼, cInvCName 分類名稱, iInvCGrade 分類層級, ss.bInvCEnd 是否是末級, aa.* FROM InventoryClass ss LEFT JOIN ( SELECT * FROM ( SELECT cInvCCode AS 一級分類編碼, …

python數據可視化(6)——繪制散點圖

課程學習來源:b站up:【螞蟻學python】 【課程鏈接:【【數據可視化】Python數據圖表可視化入門到實戰】】 【課程資料鏈接:【鏈接】】 Python繪制散點圖查看BMI與保險費的關系 散點圖: 用兩組數據構成多個坐標點,考察…

如何降低老年人患帕金森病的風險?

降低老年人患帕金森病風險的方法 避免接觸有害物質:長期接觸某些化學物質、農藥或其他有害物質可能會增加患帕金森病的風險。應減少這些物質的暴露,例如在工作或生活中采取防護措施。 健康飲食:均衡飲食,多吃富含抗氧化劑的食物&a…

做了一個萬能搜索框

最近給網頁做了一個搜索框,現在搜索比以前更加方便了,下面簡單介紹一下如何使用 我們進入網頁版(app.zyjj.cc)點擊右上角的搜索就可以看到這個新版的搜索框了 目前支持中文、拼音、首字母等多種搜索方式,大家可以隨意…

【Python】Python-docx使用實例 科技檔案封面批量生成

使用背景 根據excel表中的信息,按照word模板格式,每條信息生成一個對應的模板及文件名。 我這里的情況是將科技檔案的封面格式按照案卷表的明細批量生成。 (單位的檔案軟件太雞肋了,沒有這個功能) 代碼整篇 工程檔…

【Linux】常見指令(下)

【Linux】常見指令(下) 通配符 *man指令cp指令echo指令cat指令(簡單介紹)cp指令 mv指令alias指令which ctrl ccat指令linux下一切皆文件 more指令less指令head指令tail指令管道 通配符 ‘*’ 通配符’ *‘,是可以匹配…

4 C 語言控制流與循環結構的深入解讀

目錄 1 復雜表達式的計算過程 2 if-else語句 2.1 基本結構及示例 2.2 if-else if 多分支 2.3 嵌套 if-else 2.4 懸空的 else 2.5 注意事項 2.5.1 if 后面不要加分號 2.5.2 省略 else 2.5.3 省略 {} 2.5.4 注意點 3 while 循環 3.1 一般形式 3.2 流程特點 3.3 注…

Dynamic多數據源

有時候我們在項目中,可能會遇到需要同時使用多個數據庫連接的情況,這個時候可以使用MyBatis-Plus的dynamic多數據源的配置。但其實MyBatis-Plus官方還提供了mybatis-mate組件,但是他是付費的企業組件。 官方文檔: 多數據源支持 …

識別視頻中的人數并統計出來

目的: 使用Python和pysimpleguil以及opencv寫一個統計人流量的軟件。要求:1 加載選定的視頻 2 通過形態學特征識別人,3統計人數并且在界面上顯示出來,4 保存識別出人數的信息。 步驟 1: 安裝必要的庫 首先,確保你已經安裝了Python。然后,安裝PySimpleGUI和OpenCV。你可…

數電基礎 - 可編程邏輯器件

目錄 ?編輯 一. 簡介 二. 現場可編程邏輯陣列 三. 可編程陣列邏輯 四. 通用陣列邏輯 五. 可擦除的可編程邏輯器件 六. 復雜的可編程邏輯器件 七. 現場可編程門陣列 一. 簡介 可編程邏輯器件(Programmable Logic Device,PLD)是一種用…

Gmsh用戶界面

主要指出幾何、網格、求解三個模塊. 幾何模塊分為基本實體和物理組兩個部分,主要對幾何體進行操作,并設置物理屬性 網格模塊主要定義了對網格的操作和對應的算法 求解主要指出了網格求解方法 所有的界面操作都是基于這三個方法的

半導體仿真文件傳輸面臨時間和經濟成本挑戰,一招就能解決

對于芯片設計企業來說,其面臨的最大考驗就是芯片設計質量和時間成本控制之間的矛盾,具體表現在芯片的設計、仿真驗證過程存在著較大的挑戰: 芯片設計過程包括了仿真驗證這一重要的一環,但芯片設計企業在仿真驗證這一環卻面臨著較…

數據結構--二叉樹遍歷

目錄 1.介紹 (1)前序遍歷 (2)定義結構體 (3)前序遍歷實現 (4)中序遍歷實現 (5)二叉樹的節點個數 (6)二叉樹樹葉節點個數 &…