Python編程:初入Python魔法世界

一、常量表達式

在編程中,常量指的是在程序執行期間其值不會改變的數據項。雖然 Python 并沒有專門的語法來定義常量(不像某些其他語言如 Java 中有 final 關鍵字),但在實踐中,我們通常通過約定俗成的方式來表示一個變量是一個“常量”:

示例:

# 算術表達式
a = 5 + 3 * 2  # 結果為 11,注意乘法優先于加法# 關系表達式
b = 10 > 5     # b 的值為 True# 邏輯表達式
c = (10 > 5) and (2 < 3)  # c 的值為 True
print(1 + 2 - 3)
print(1 + 2 * 3)
print(1 + 2 / 3)

  • 代碼里的print()?是 Python 中的一個內置函數,用于將內容輸出到終端(屏幕)上

它是我們最常用的調試工具之一,可以讓我們看到程序運行時的中間結果、變量值、提示信息等。這個我們后續詳談

  • 可以使用+-*/()等運算符進行算術運算,先算乘除后算加減
  • 運算符和數字之間,可以沒有空格,但是一般習慣上寫一個空格(比較美觀)
  1. 例如?1 + 2 - 3 這樣是算式,在編程語言中被稱為表達式,而運行后的結果,就是這個表達式的返回值
  2. 其中1,2,3這種被稱為字面值常量, +-*/ 這種被稱為運算符或者操作符

表達式的類型:

算術表達式:涉及數值及其運算符(如?+,?-,?*,?/)。

關系表達式:比較兩個值(如?==,?!=,?>,?<)。

邏輯表達式:結合多個條件(如?and,?or,?not)。

這里注意一下,我們發現第三個表達式計算出來后是 1.66666666665,而不是1。而我們熟悉了c或者java的兄弟可能覺得很奇怪,其實在Python中得到的結果則是一個小數,更符合日常使用的直覺

例如:給定四個分數,65.5 , 89.0 , 12.9 , 32.2 ,編寫代碼,求這四個分數的平均數

print((65.5 + 89.0 + 12.9 + 32.2) / 4)

二、變量和類型

2.1 變量是啥?

有的時候,我們需要進行的計算可能會復雜一點,計算過程中需要把一些中間結果保存起來,那么這個時候就是通過變量這個東西

就例如我們現在要計算一個方差

  • 給四個數, 67.5 , 89.0 , 12.9 , 32.2,編寫代碼,求這四個數的方差
  • 方差計算過程:取每一項,減去平均值,計算平方,再求和,最后除以(項數 - 1)
  1. 計算這四個數的平均值
  2. 取每一項,減去平均值,計算平方,再求和 ?把最后的值給total
  3. 把total除以(項數 - 1)
  4. 將結果打印出來
avg = (67.5 + 89.0 + 12.9 + 32.2)/4
total = (67.5 - avg) ** 2 + (89.0 - avg) ** 2 + (12.9 - avg) ** 2 + (32.2 - avg) ** 2
result = total / 3
print(result)

?注意:avg,total,result都是變量

**在python里面表示乘方運算。 **2就是平方

而變量可以視為是一塊可以存放數據的一個空間,而這個空間是開辟在內存中過地方的

?想象內存是一個大倉庫,有許多小格子,每個格子有唯一編號(地址)。當我們聲明一個變量?int avg?= 30;,計算機在倉庫中找到一個空閑格子,放進去30,并記下標簽“age”指向那個格子編號。(圖上一個存放50.400000000000006)

2.2 變量的語法?

2.2.1 變量的定義

a = 10
//a是變量名。
// 10是值。   
//變量名+賦值運算符+值

創建變量非常簡單:

  • a是變量名。當我們創建很多個變量的時候,大家的變量名要取一個有意義,例如你創建的變量是用來計數的,就可以取為count
  • = 為賦值運算符,表示把 = 右側的數據放到 = 左側空間中 ,注意,是由右向左

注意事項(規則):

  • 變量名由數字、字母、下劃線構成
  • 數字不能開頭
  • 變量名不能和“關鍵字重復”。例如:print?
  • 變量名大小寫敏感。num和Num是兩個不同的變量名

變量取名建議:

  • 變量名最好用有意義的單詞來表示,就是我剛剛說的
  • 駝峰命名法(CamelCase):首個單詞小寫,后續單詞首字母大寫,如 $userName$(常用于Java、JavaScript)。
  • 蛇形命名法(snake_case):單詞間用下劃線連接,如 $user_name$(常用于Python、Ruby)。
  • 常量命名:全大寫加下劃線,如 $MAX_VALUE$。

2.2.2 變量的使用

讀取變量的值:

a = 10
print(a)

?修改變量的值

a = 10
pritn(a)
#修改a
a = 20
print(a)

當然,我們也可以使用其他的變量來修改需要修改的值

a = 10
b = 20
a = b
print(a)
print(b)

一開始對變量a和b進行初始化,隨后 a = b,將b的值賦給a,這樣就把a的值給改變了!!!?

2.2.3 變量的類型?

變量里面存儲的不僅僅是數字,還可以存儲其他種類的數據,未來區分不同種類的數據,我們引入了“類型”這一概念。

注意:Python和C++/java等語言不同,Python的變量類型是不需要顯示指定的,而是在賦值的時候確定的

例如c++和java

//在 C++ 和 Java 中,變量類型必須在定義時明確寫出,否則編譯器會報錯int age = 20;         // 必須顯式指定類型
string name = "Tom";

而Python:?

x = 10          # x 是整數
x = "Hello"     # x 變成字符串
x = [1, 2, 3]   # x 變成列表
2.2.3.1?整數
a = 10
print(type(a))

PS:pyte和print類似,也是Python內置的函數,pyte可以來查看一個變量的類型

這里注意一個點:Python的int類型變量,所表示的不是四個字節,而是?沒有上限?的,只要內存足夠大,理論上就可以表示無限大小的數組

2.2.3.2 浮點數
a = 0.5
print(type(a))

字符串需要用 ' (單引號)或者 " (雙引號) ,被這兩個符號所包圍起來的就被稱為字符串。可以用來表示文本

注意'hello'和"hello"是等價的

可以使用 len 函數來計算一個字符串的長度

a = 'hello'
print(len(a))

?

可以使用+針對兩個字符串的拼接

a = "hello"
b = " world"
print(a+b)

a = "hello"
b = 1
print(a+b)

此處只是字符串相加,不能拿字符串和其他類型相加?

2.2.3.4 布爾

布爾類型是一個特殊的類型(用于邏輯判斷),取值只有兩種:True(真)和False(假)

PS:這里True(真)和False(假)必須是首字母大寫的

而真假是什么?

例如:

女生每月會有生理期(真)

男士每月會有生理期(假)

a = True
print(type(a))
b = False
print(type(b))

?三、變量類型的意義

類型決定了數據在內存中占據多大內存空間

  • float類型在內存中占據8個字節
  • int 動態擴容
  • bool為一個字節

類型約定了能對這個變量做了什么樣的工作

  • 例如int / float 類型的變量,可以進行+ - * / 等操作
  • 而str類型的變量,只能進行+(并且行為是字符串拼接),不能進行 - * / ,但是還能使用len等其他操作?

四、動態類型特性?

在Python中,一個變量是什么類型,是可以在"程序運行"過程中發生變化的(也就是變量類型是可以改變的)。這個特性稱為“動態類型”

a = 10
print(type(a))
a = 'hello'
print(type(a))

大家注意,程序執行過程中,a的類型從int變為str了,而這是在c++/Java中是不行的

  • 靜態類型

程序運行時,變量的類型始終不變

  • 動態類型

程序運行時,變量的類型是可以改變的

一個編程語言,是否為動態類型,只取決于運行時,類型是否發生改變,不取決于變量定義的時候是否聲明類型

當然了,動態類型是一把雙刃劍

  • 對于中小型程序,他能大大節約代碼量?
  • 對于大型程序,則提高了模塊之間交互的成本(A提供的代碼很難被B看懂)

其實這就是為什么很多公司一開始使用Python語言來完成項目,而后期又要針對原來的代碼用其他語言重構

?五、注釋

在編程中,注釋就是寫在代碼中、給程序員看的“說明文字”。它不會被 Python 解釋器執行,也就是說,計算機不會運行注釋里的內容,但它是寫給人看的

5.1 注釋的作用

注釋的作用

  • 解釋代碼:讓別人(或未來的你)更容易理解代碼的意圖。
  • 調試代碼:暫時屏蔽某段代碼,方便調試。
  • 文檔說明:在大型項目中,注釋可以作為文檔的一部分,說明函數、類或模塊的功能。
  • 協作溝通:多人協作時,注釋可以說明你為什么這樣寫代碼。

5.2 注釋的方式

5.2.1.單行注釋

使用 # 符號,從 # 開始到這一行的末尾都會被當作注釋。

# 這是一個打印語句,輸出“你好,Python!”
print("你好,Python!")

5.2.2?多行注釋(塊注釋)

雖然 Python 沒有專門的多行注釋語法,但我們可以使用三引號 '''""" 來實現多行注釋:

'''
這是一個多行注釋的例子。
你可以在這里寫很多行說明。
這些內容不會被執行。
'''
print("多行注釋演示")

注意:嚴格來說,三引號是字符串,如果它沒有被賦值給變量,也不會被運行,因此可以當作注釋使用。但在某些上下文中,它可能作為文檔字符串(docstring)使用,我們后面會專門講解。

5.2.3 注釋的使用規范?

?注釋的使用規范(建議):

類型寫法示例
單行注釋# 注釋內容# 計算兩個數的和
行末注釋代碼 # 注釋x = 5 # 設置初始值
多行注釋''' 注釋內容 '''?或?""" 注釋內容 """
"""
這是一個函數說明:
輸入兩個參數,返回它們的和。
"""

5.2.4 優秀注釋的例子?

注釋寫得好,代碼更清晰!

# 定義兩個變量
a = 3
b = 4# 計算平方和
c = a**2 + b**2# 輸出結果
print(c)

對比沒有注釋的版本:?

a = 3
b = 4
c = a**2 + b**2
print(c)

你覺得哪種更容易理解呢?沒錯,加上注釋之后,即使是一個新接觸這段代碼的人,也能迅速理解每一行代碼的目的。

六、輸入輸出

6.1 和用戶交用

  • 用戶把消息傳遞給程序的過程,稱為"輸入"
  • 用戶把結果展示給用戶的過程,稱為"輸出"

輸入輸出的最基本方法就是控制臺:用戶通過控制臺輸入一些字符串,程序再通過控制臺打印一些字符串

vs code運行程序的時候,下方彈出的窗口就是控制臺

Mac OS自帶的終端,也可以視為控制臺

輸入輸出的最常見方法是圖形化界面。我們平常對于電腦的操作基本都是圖形化界面?

6.2 通過控制臺輸出

Python使用print函數輸出到控制臺

print('hello')

不僅可以輸出一個字符串,還可以輸出一個其他類型的變量

a = 10
print(a)
b = True
print(b)

??

更多的時候,我們希望能夠輸出的內容是混合了字符串的變量

例如:輸出num = 10

num = 10
print(f'num = {num}')

? 注意:這里的?f'num = {num}'?是一種格式化字符串,使用{}來嵌入變量或表達式

例如:

#格式化字符串
a = 10
#希望數字和字符串混在一起
print(f'a = {a + 10}')

6.3 通過控制臺輸入

Python使用input函數輸入,從控制臺讀取用戶的輸入

# 通過控制臺輸入
num = 0
num = input('請輸入一個整數:')
print(f'你輸入的整數是{num}')

當我們在控制臺輸入10,再按回車,就運行完成

注意:

  • input的參數相當于一個"提示信息",也可以沒有
  • input的返回值就是用戶輸入的內容,是字符串類型?

?下面這個代碼大家想想會輸出什么?兩數相加嗎?

a = input('請輸入一個整數:')
b = input('請輸入二個整數:')print(f'a + b = {a + b}')

答案顯而易見:此處的結果是字符串的連接而不是算術運算

那我們該怎么進行算術運算呢:轉換類型

a = input('請輸入一個整數:')
b = input('請輸入二個整數:')a = int(a)
b = int(b)print(f'a + b = {a + b}')

小練習:輸入5個小數,求5個小數的平均值

a = input('請輸入一個整數:')
b = input('請輸入二個整數:')
c = input('請輸入三個整數:')
d = input('請輸入四個整數:')
e = input('請輸入五個整數:')a = int(a)
b = int(b)
c = int(c)
d = int(d)
e = int(e)avg = (a + b + c + d + e)/5
print(f'平均值: {avg}')


七、運算符

7.1 算術運算符

+ - * / % ** // 這種進行算術運算的運算符,稱為算術運算符

算術規則:先算乘方,然后是乘除,最后是加減。如果運算過程中想修改默認的運行程序,就需要加上“()”

注意1:/中不能用0作為除數。否則會拋出異常

print(10/0)

?注意2?:整數/整數結果可能是小數,而不會截斷

print(1/2)

?注意3:%不是“百分數”,而是求余數

print(7%2)

?關于求余數,有些同學容易蒙,其實這個就是我們小學學過的

7除以2,商3余1

注意4: **是乘方,不光能算整數次方,還可以算小數次方

print(4 ** 2)
print(4 ** 0.5)

注意5: ?//是取整除法(也叫地板除)整數除以整數,結果還是整數(舍棄小數部分,并向下取整,不是四舍五入)

print(7 // 2)
print(-7 // 2)

7.2 關系運算符?

< ?<= ?> ?>= ? == ? != ?這一系列的運算符被稱為關系運算符

  • <= 是"小于等于"
  • >= 是"大于等于"
  • == 是"等于"
  • != 是"不等于"

7.2.1 如果關系符合,則返回Ture,如果不符合,返回False

a = 10
b = 20
print(a < b)
print(a <= b)
print(a < b)
print(a >= b)
print(a == b)
print(a != b)

7.2.2 關系運算符不光針對整數/浮點數進行比較,還能針對字符串進行比較

a = 'hello'
b = 'world'
print(a < b)
print(a <= b)
print(a < b)
print(a >= b)
print(a == b)
print(a != b)

注意:?

  • 直接使用 == 或者 != 即可對字符串內容判斷是否相等
  • 字符串比較大小,規則是“字典序”

字典序:

一個隨意單詞,例如absorb,這個單詞再字典里都是按照字母順序排列,如果首個字母相同,就比較第二個字母

我們認為一個單詞再字典上越靠前,就越小,越靠后,就越大

7.2.3 對于浮點數來說,不要使用==判斷相等

print(0.1 + 0.2 = 0.3)

浮點數在計算機中的表示并不是精確的!在計算過程中,就很容易出現非常小的誤差

print(0.1)
print(0.2)
print(0.3)
print(0.1 + 0.2)

可以看到 0.1+0.2 其實不是0.3,而是一個和0.3極其接近的0.30000000004

那么該如何操作來得到我們理想的0.3呢:做差來判定差值小于允許的誤差范圍

a = 0.1 + 0.2
b = 0.3
print(-0.000001 < (a - b) < 0.0000001)

八、邏輯運算符?

8.1 and ?or ?not

?像 and、or、not 這一系列的運算符被稱為 邏輯運算符

  • and:表并且,兩側操作數均為Ture,最終結果為Ture,否則為False(一假則假)
  • or:表或者,兩側操作數均為False,最終結果為False,否則為Ture(一真則真)
  • not:邏輯取反,操作數本身為Ture,則返回False,則返回Ture

a = 10
b = 20
c = 30print(a < b and b < c)
print(a < b and b > c)print(a > b or b > c)
print(a < b or b > c)print(not a < b)
print(not a > b)

另一種寫法:我們可以把??print(a < b and b < c) ?等價于 a < b < c

8.2 短路求值

和其他編程語言類似,Python也存在短路求值的規則

  • 關于and,如果左側表達式為False,則整體一定為False,右側表達式不再執行
  • 對于or , 如果左側表達式為Ture,則整體一定為Ture,右側表達式不再執行
print(10 > 20 and 10 / 0 == 1)
print(10 < 20 or 10 / 0 == 1)

?九、賦值運算符

9.1 = 的使用

= 表示賦值,這個我們已經用過很多次了

=除了基本的用法外,還可以同時針對多個變量進行復制

9.1.1 鏈式賦值

a = b = 10

9.1.2 多元賦值

a, b = 10, 20

9.1.3 小案例:交換兩個變量

基于鏈式復制(基礎寫法):

a = 10
b = 20tmp = a
a = b
b = tmp
  • 先定義兩個變量a,b
  • 將a的值賦給一個空變量
  • 再見b的值賦給a
  • 最后把空變量(這是存放的是a的值)賦給b

舉個小例子:我們要將醬油和醋換一下,那這時候就一定要有個開瓶子暫時存放,讓其中一個空出來,就例如讓醬油空出來(醬油倒入tmp),這時候就可以把醋倒入醬油內

?

基于多元賦值:

a = 10
b = 20a , b = b , a

9.2 復合賦值運算符

Python還有一些 復合賦值運算符?,例如:+= ? -= ? *= ? /= ? %=

a = 10
a = a+1
a += 1
print(a)

?a += 1 等價于 a = a+1


本節完?

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

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

相關文章

Android WorkManager 詳解:高效管理后臺任務

引言在現代移動應用開發中&#xff0c;后臺任務處理是一個至關重要的功能。從同步數據到定期備份&#xff0c;從發送通知到處理耗時操作&#xff0c;后臺任務無處不在。然而&#xff0c;Android系統對后臺任務的限制越來越嚴格&#xff0c;開發者需要找到既高效又符合系統規范的…

MCU(微控制器)中的高電平與低電平?

MCU&#xff08;微控制器&#xff09;中的高電平與低電平&#xff1f; 在數字電路和MCU&#xff08;微控制器&#xff09;中&#xff0c;**高電平&#xff08;High Level&#xff09;和低電平&#xff08;Low Level&#xff09;**是兩種基本的邏輯狀態&#xff0c;用于表示二進…

前端項目下載發票pdf文件要求改文件名筆記

1、a鏈接&#xff08;修改失敗&#xff0c;存在跨域&#xff09;<el-table-columnalignrightlabel"下載地址"width"200"><template slot-scope"{row}"><a :href"row.dataUrl" download"文件名">下載</…

Kotlin 數據容器 - List(List 概述、創建 List、List 核心特性、List 元素訪問、List 遍歷)

一、List 概述List 是一個不可變的有序集合&#xff0c;一旦創建就不能修改其內容&#xff0c;即不能添加、刪除、更改元素List 提供了豐富的操作函數來處理數據二、創建 List 1、基礎創建 通過 listOf 函數創建&#xff08;推薦&#xff09; // 創建一個 List&#xff0c;包含…

HarmonyOS NEXT 系列之規范開發三方共享包

規范開發三方共享包〇、前言一、了解評分規則二、規范開發共享包1、規范開源協議名稱寫法2、將 oh-package.json5 文件補充完整3、補充 example 目錄4、基本的 README 和 CHANGELOG三、ohpm 包的源碼隔離特性〇、前言 對于開發者來說&#xff0c;對外發布代碼制品&#xff0c;…

[電網備考]計算機組成與原理

計算機系統概述 計算機發展歷程 從數據表示: 計算機可以分為數字計算機與模擬計算機 1946 第一臺電子數字計算機 ENIAC 在賓夕法尼亞大學誕生,標志進入電子計算機時代時間計算機發展階段1946-1958電子管計算機時代1958-1964晶體管計算機時代1964-1971集成電路計算機時代1971-至…

8.c語言指針

內存管理C語言中&#xff0c;棧內存&#xff08;局部變量&#xff09;自動分配/釋放&#xff0c;靜態區&#xff08;全局、靜態變量&#xff09;編譯時分配&#xff1b;堆內存需手動分配/釋放&#xff0c;核心函數有3個&#xff1a;malloc函數原型&#xff1a;void* malloc(siz…

使用GPU訓練模型

本文代碼詳解參考&#xff1a; 模型訓練基礎流程-CSDN博客 目錄 為什么要用GPU訓練模型 什么是CUDA 利用GPU訓練—方式一(.cuda()) 利用GPU訓練—方式二 (.to()) Google Colaboratory 為什么要用GPU訓練模型 用 GPU 訓練模型的核心原因是GPU 的硬件架構和計算特性&#…

Matlab學習筆記:自定義函數

MATLAB 學習筆記&#xff1a;自定義函數自定義函數是MATLAB編程的基礎&#xff0c;它允許你將重復代碼封裝成可重用的模塊&#xff0c;提高代碼的可讀性和效率。本筆記將覆蓋所有重點知識點&#xff0c;包括語法細節、輸入輸出處理、函數文件管理、錯誤處理等。我會用自然易懂的…

【數學建模 | Matlab】二維繪圖 和 三維繪圖

- 第 115 篇 - Date: 2025 - 07 - 23 Author: 鄭龍浩&#xff08;仟墨&#xff09; 續寫上一篇&#xff0c;如下文章&#xff1a; 【數學建模|Matlab】Matlab「基礎知識」和「基礎操作」 五 二維繪圖 1 舉例 % 二維平面繪圖&#xff08;擴展至 -2π 到 2π&#xff09; x …

MCP (Model Context Protocol) 與 HTTP API:大模型時代的通信新范式

MCP (Model Context Protocol) 與 HTTP API&#xff1a;大模型時代的通信新范式在數字世界的兩端&#xff0c;API 扮演著不可或缺的橋梁角色。我們熟知的 HTTP API 是 Web 互聯互通的基石&#xff0c;驅動著無數應用程序的交互。然而&#xff0c;隨著大型語言模型&#xff08;L…

CentOS 搭建 Docker 私有鏡像倉庫

CentOS 搭建 Docker 私有鏡像倉庫 搭建 Docker 私有鏡像倉庫能為團隊提供高效、安全的鏡像管理方案。下面將詳細介紹每個步驟的操作細節&#xff0c;其中命令部分均用代碼塊展示。 一、環境準備 要搭建 Docker 私有鏡像倉庫&#xff0c;首先得確保服務器環境符合要求&#xff0…

Zookeeper的簡單了解

Zookeeper的簡單了解 Zookeeper是一個為分布式應用程序提供協調服務的中間件。 主要作用有三點&#xff1a;分布式鎖、注冊中心、配置管理、。 特點有讀寫速度快&#xff08;內存存儲&#xff09;、有監聽機制&#xff08;用于發布訂閱&#xff09;、保證了順序一致性&#xff…

Android Fragment 全解析

在 Android 開發中&#xff0c;Fragment 是構建靈活界面的核心組件 —— 它既能像 “迷你 Activity” 一樣包含布局和邏輯&#xff0c;又能靈活地嵌入到不同 Activity 中復用。無論是平板的多面板布局&#xff0c;還是手機的單頁切換&#xff0c;Fragment 都能讓界面適配更高效…

0-1BFS(雙端隊列,洛谷P4667 [BalticOI 2011] Switch the Lamp On 電路維修 (Day1)題解)

對于權重為0或1的路徑搜索中&#xff0c;使用雙端隊列可以對最短路問題進行時間復雜度的優化&#xff0c;由于優先隊列的O(longn)級別的插入時間&#xff0c;對于雙端隊列O(1)插入可以將時間復雜度減少至O(M); https://www.luogu.com.cn/problem/P4667 #include<bits/stdc…

基于LNMP架構的分布式個人博客搭建

1.運行環境主機主機名系統服務192.168.75.154Server-WebLinuxWeb192.168.75.155Server-NFS-DNSLinuxNFS/DNS2.基礎配置配置主機名&#xff0c;靜態IP地址開啟防火墻并配置部分開啟SElinux并配置服務器之間使用同ntp.aliyun.com進行時間同步服務器之間使用用ntp.aliyun.com進行時…

基于開源AI智能名片鏈動2+1模式S2B2C商城小程序的人格品牌化實現路徑研究

摘要&#xff1a;在數字化消費時代&#xff0c;人格品牌化已成為企業突破同質化競爭的核心策略。本文以開源AI智能名片、鏈動21模式與S2B2C商城小程序的融合為切入點&#xff0c;構建“技術賦能-關系重構-價值共生”的人格品牌化理論框架。通過分析用戶觸達、信任裂變與價值沉淀…

設計模式十一:享元模式(Flyweight Pattern)

享元模式是一種結構型設計模式&#xff0c;它通過共享對象來最小化內存使用或計算開銷。這種模式適用于大量相似對象的情況&#xff0c;通過共享這些對象的公共部分來減少資源消耗。基本概念享元模式的核心思想是將對象的內在狀態&#xff08;不變的部分&#xff09;和外在狀態…

Webpack/Vite 終極指南:前端開發的“渦輪增壓引擎“

開篇:當你的項目變成"俄羅斯套娃" "我的index.js怎么引入了87個文件?!" —— 這是每個前端開發者第一次面對復雜項目依賴時的真實反應。別擔心,今天我要帶你認識兩位"打包俠":老牌勁旅Webpack和新銳黑馬Vite 一、構建工具:前端世界的&qu…

Windows 下配置 GPU 用于深度學習(PyTorch)的完整流程

1. 安裝 NVIDIA 顯卡驅動 前往 NVIDIA官網 下載并安裝適合你顯卡型號&#xff08;如 5070Ti&#xff09;的最新版驅動。下載 NVIDIA 官方驅動 | NVIDIA安裝完成后建議重啟電腦。 2. 安裝 CUDA Toolkit 前往 CUDA Toolkit 下載頁。 選擇 Windows、x86_64、你的系統版本&#…