從零開始的python學習——常量與變量

? ? ? ? ?

づ?ど

?🎉?歡迎點贊支持🎉

個人主頁:勵志不掉頭發的內向程序員;

專欄主頁:python學習專欄;


文章目錄

前言

一、常量和表達式

二、變量類型

2.1、什么是變量

2.2、變量語法

(1)定義變量

(2)使用變量

2.3、變量類型

(1)整數

(2)浮點數

(3)字符串

(4)布爾

(5)其他

2.4、為什么有這么多類型

2.5、動態類型特性

總結


前言

變量是我們不管學習什么編程語言都沒法繞開的話題,是我們學習路上的一塊重要的基石,有助于我們理解以后的內容,我們一起來學習學習吧。


一、常量和表達式

我們可以把Python當作一個計算器來進行一些算術運算。

print(1 + 2 - 3)
print(1 + 2 * 3)
print(1 + 2 / 3)

我們點鼠標右鍵然后點擊運行就可出現以下的信息。

注:

  • print 是一個 Python 內置的 函數(會用即可,后面會講)
  • 可以使用+、-、*、/、()等運算符進行算術運算,先算乘除,后算加減,有括號先算括號。
  • 運算符和數字之間,可以沒有空格,也可以有多個空格,但是一般習慣上寫一個空格(比較美觀)。

在 print 中 1 + 2 - 3 這樣的一個算式,在編程語言中稱為表達式,算式的運算結果,稱為表達式的返回值

其中 1,2,3 這種稱為字面值常量,+ - * / 這種稱為運算符或者操作符

我們第一串代碼就是輸出一個 1 + 2 - 3的表達式的返回值,所以是0。第二串同理,先乘除后加減,所以先2 * 3 后 6 + 1 所以返回值是7。最后一個同理,但是有人可能學了C語言或者Java會認為等于0。實際上Python會自動識別類型,所以不會有這種情況。而且編程中一般沒有“四舍五入”這樣的規則,所以最后是5而不是7,浮點數主要遵循IEEE754標準,在這套規則下,在內存中表示浮點數的時候,可能會存在細微的誤差。

我們可以嘗試用代碼求 65.3,78.8,95.3,58.1 這四個分數的平均值。

print((65.3 + 78.8 + 95.3 + 58.1) / 4)

這里我們要先求加法再求除法所以就得用括號改變優先級。

代碼美觀這個問題,有人會覺得只要能運行正確不就行了,美觀不美觀有什么意義。但其實并非如此,我們的代碼并不是只是單單給自己使用的,可能還得給別人去看去使用,如果你寫的代碼只有你和上帝才看的懂,過幾天后只有上帝才看的懂的話,那很耽誤事情。

二、變量類型

2.1、什么是變量

有的時候我們需要進行的計算可能更復雜一點,需要把一些計算的中間結果保存起來,這個時候就需要用到變量。

我們可以用代碼來試著求 65.3,78.8,95.3,58.1 的方差。

因為我們方差要取每一項減去平均值,然后再計算平方,再求和后除以(項數-1)。如果我們還像上面那樣求平均值就很麻煩,我們就可以用變量把它保存起來,以供后面反復使用。

avg = (65.3 + 78.8 + 95.3 + 58.1) / 4
total = (65.3 - avg) ** 2 + (78.8 - avg) ** 2 + (95.3 - avg) ** 2 + (58.1 - avg) ** 2
result = total / 3
print(result)

這里的avg、total、result均為變量,而這里的 ** 在 Python 中表示乘方運算 **2 即為求平方。

變量存在的意義就在于把我們中間結果保存起來。變量可以視為是一塊能夠容納數據的空間,而這個空間往往對應到 “內存” 這個硬件設備上。

我們可以把內存就當成一個可以按照不同需求分配的宿舍樓,當我們數據或者變量去宿舍樓時就會按照它的高矮胖瘦分配不同大小的房間。

2.2、變量語法

(1)定義變量

創建變量的語句相當簡單

a = 10
  • a為變量名,創建很多變量時,就可以用這些名字來區分。
  • = 為賦值運算符,表示把 = 右側的數據復制一份放到 = 左側的空間中。

這樣就可以定義一個變量了,它的含義就相當于把 10 這個數據放到我們創建出來的變量 a 的空間中。當然我的定義時 = 右側不是一定得是字面值常量,也可以是別的變量。

a = 10
b = a

變量的名字不是隨便亂取的,它有一定的規則,在這些規則中包含了一定得遵守的硬規則和建議遵守的軟規則。

硬規則:

  • 變量名必須由數字、字面、下劃線構成,不能包含特殊符號(如a*a,a@a等都是非法的)。
  • 數字不能開頭。
  • 變量名不能和 Python 的“關鍵字”重復(及if、else等在語法中有特殊含義的單詞)。
  • Python 中的變量名是大小寫敏感的,區分大小寫(num和Num是兩個不同的變量)。

若不遵守以上的規則,我們程序就會報錯,像下面的紅色波浪號就是有問題,把光標放到上面就能顯示錯誤的原因。有錯誤程序肯定是運行不了的。

除了必須要遵守的硬規則,還有各種程序猿在不斷探索和嘗試所提出的一些可以提升代碼的美觀度、可讀性、方便性的一些軟規則。

軟規則:

  • 給變量命名時,盡量使用描述性的單詞來表示(盡量通過名字來表現出變量的作用,如count表示計數、personInfo表示人的信息)。
  • 當我們使用一個單詞描述不清楚時,可以使用多個單詞來命名(不怕名字長,而怕含義表達不清)。

包含多個單詞時,命名有多種規范

駝峰命名:除了第一個單詞的首字母之外,后續每個單詞的首字母都大寫。

如:personInfo、totalCount

蛇形命名:單詞之間使用下劃線 _ 來進行分割。

如:person_info、total_count

具體使用哪種程序,我們任選即可。以后到公司中,一般都會有明確的編程規范,我們聽從即可。

(2)使用變量

當我們明白如何創建變量時,我們就可以去使用變量了。

我們一般使用變量就2件事情:

讀取變量的值:

a = 10
print(a)

修改變量的值:

a = 10
a = 20

在Python中,修改變量也是使用 = 運算,看起來和定義變量沒有任何區別。

當然也可以用一個變量去修改另一個變量。

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

我們首先對 a 使用 = 的過程是創建變量(初始化),后續再對 a 使用 = 的過程是修改 a 的內容(賦值)。

2.3、變量類型

變量中存儲的不僅僅是數字,還可以存儲其他種類的數據,為了區分不同種類的數據,我們便引入了 “類型” 這樣的概念。

要想去查看一個變量的類型,我們可以使用

type(變量名);

和print類似,也是Python 的內置函數,作用就是查看一個變量的類型。

(1)整數

a = 10
print(type(a))

在 Python 中的變量類型,不需要在定義變量的時候顯示聲明,而只是依靠初始化語句,根據初始化的值的類型來進行確定。

我們可以看到,表示一個整數的變量是 int ,我們管 int 叫做整型。在 Python 中,int 能夠表示的數據范圍是 “無窮” 的,沒有上限和下限。所以學過其他編程語言的同學,在 Python中就不存在 long 這樣的類型了,像 byte,short 這些類型也不存在。

(2)浮點數

a = 1.1
print(type(a))

浮點數,就是我們所謂的小數,它的類型是float,我們管它叫做浮點型。

在我們 C++/Java 中,float 是四個字節的,也叫做 “單精度浮點數”。而還有一個類型是 double 是八個字節的,也叫做 “雙精度浮點數”。

而我們 Python 中的 float 就是雙精度浮點數了,等同于 C++/Java 中的 double。

我們把一個二進制位稱為一比特(bit),而8個 bit 放在一起,就稱為一字節,是計算機常用單位。

我們在這里就可以隱約看出 Python 的設計哲學:解決一個問題,只提供一種方案。所以它就沒有給我們提供繁多的類型,像 C++ 我們還得思考用整型時是用 int 還是 long,麻煩不說還容易錯。

(3)字符串

字符串就和羊肉串一樣,就是把一個個字符放(串)在一起。那什么又是字符呢?

像我們英文字母、阿拉伯數字、標點符號等,甚至漢字符號,都可以認為是 “字符”;

如:a、8、+ 等都是我們的字符。

而把這些字符放到一起,那便是字符串了。我們 Python 規定使用引號把一系列字符引起來就構成了字符串,單雙引號都是可以的(所有的標點符號都得是英文的,不能是中文的)。

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

這就是字符串類型了,字符串這個單詞的全拼是 string,它的縮寫就是 str 了。當然雙引號也是可以的。

a = "hello"
print(type(a))

為什么要支持兩種引號呢,廢掉一種行不行?其實這兩種引號的結合還是有妙用的。比如我們想打印這樣一句話:

My name is "ChengXvYuan"

我們輸入的時候就會出問題。

這是因為我們對名字的雙引號給Python的編譯器解釋為前面一個字符串 + ChengXvYuan + 后面一個字符串,而中間的 ChengXvYuan 編譯器不認識,所以就會出問題。

而解決辦法也很簡單,我們不是有兩種引號可以使用嗎,我們可以把外面的雙引號變成單引號即可。

a = 'My name is "ChengXvYuan"'
print(a)

因此,如果我們字符串中包含了雙引號,表示字符串就可以用單引號引起來,反之亦然。當然如果里面有單引號也有雙引號,表示字符串就可以用三引號(三個單引號)引起來。

a = '''My 'name' is "ChengXvYuan"'''
print(a)

這些引號都是等價的關系,你覺得哪個方便,哪個好用都可以。沒有實際的影響。

我們字符串還有一些別的操作,就比如用 len 函數來查看字符串的長度,這也是 Python 的一個內置函數,是而字符串長度就是字符的個數。

a = '''My 'name' is "ChengXvYuan"'''
print(a)
print(len(a))

大家要注意我們的標點符號和空格也是字符哦。

我們字符串還支持拼接,就是把兩個字符串拼在一起。

a1 = 'hello'
a2 = 'world'print(a1 + a2)

我們字符串相加就相當于拼接。此處就相當于把 a2 字符串拼接到 a1 末尾形成一個新的字符串。

拼接后對我們 a1 和 a2 是沒有影響的。

當然我們字符串和數字是不同類型的,我們不能夠將字符串和它們相加,不然運行時會出錯。

a = 'hello'
b = 10print(a + b)

注在 Python 中,報錯有兩種情況:

  • 語法錯誤:在程序運行前,Python 解釋器就能把錯誤識別出來。
  • 運行錯誤:在程序運行之前識別不了,必須執行到對應行代碼才能發現問題。

(4)布爾

布爾類型是一種特殊的類型,取值只有兩種,True(真)和 False(假)。它的主要用于邏輯判斷。在Python中真就是 True;假為 False,首字母得大寫。

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

這就是布爾類型了。布爾類型在我們后續進行邏輯判斷時是非常有用的。

(5)其他

除了上述類型之外,Python 中還有 list、tuple、dict、自定義類型 等,我們后續再介紹。

2.4、為什么有這么多類型

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

例如 float 類型在內存空間中占8個字節;而 int 默認占4個字節,超了就動態擴容;bool類型一個字節就足以。

(2)類型其實約定了能對這個變量做什么樣的操作

例如 int/float 類型的變量可以進行 +、-、*、/等操作。

而 str 類型的變量,只能進行 +(并且行為和 int 還不同,是字符串拼接),不能進行 -、*、/,但是卻能使用 len 等其他操作。

總的來說,類型系統其實是在對變量進行 “歸類”,相同類型的變量(數據)往往具有類似的特性和使用規則。

2.5、動態類型特性

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

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

在程序執行過程中,a 的類型剛開始是 int,后面就變化為 str 了。

在 C++/Java 中就不支持這樣做,一旦我們的變量創建成功就不能夠更改類型了,稱之為靜態類型。

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

動態類型寫法是比較靈活的,它提高了語言的表達能力。但是在編程中,“靈活” 這個詞往往是 “貶義” 的,因為往往更容易出錯。相比之下,靜態類型往往還是更好一點的,尤其是在大型程序中,多人協作開發時更能體現。


總結

以上便是 Python 中常見的變量類型,我們應該仔細學習,只有基礎鞏固了才能在后期發揮更多的可能,大家加油。

🎇堅持到這里已經很厲害啦,辛苦啦🎇

? ? ? ? ?

づ?ど

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

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

相關文章

基于51單片機環境監測設計 光照 PM2.5粉塵 溫濕度 2.4G無線通信

1 系統功能介紹 本設計是一套 基于51單片機的環境監測系統,能夠實時采集環境光照、PM2.5、溫濕度等參數,并通過 2.4G無線模塊 NRF24L01 實現數據傳輸。系統具備本地顯示與報警功能,可通過按鍵設置各類閾值和時間,方便用戶進行環境…

【Flask】測試平臺開發,產品管理實現添加功能-第五篇

概述在前面的幾篇開發文章中,我們只是讓數據在界面上進行了展示,但是沒有添加按鈕的功能,接下來我們需要開發一個添加的按鈕,用戶產品功能的創建和添加抽公共數據鏈接方法添加接口掌握post實現和請求數據處理前端掌握Button\Dilog…

循環高級(2)

6.練習3 打印九九乘法表7.練習3 制表符詳解對齊不了原因:name補到8zhangsan本身就是8,補完就變成16解決辦法:1.去掉zhangsan\t,這樣前后都是82.name后面加2個\t加一個\t,name\t就是占8個,再加一個\t,就變成…

盒馬生鮮 小程序 逆向分析

聲明 本文章中所有內容僅供學習交流使用,不用于其他任何目的,抓包內容、敏感網址、數據接口等均已做脫敏處理,嚴禁用于商業用途和非法用途,否則由此產生的一切后果均與作者無關! 逆向分析 部分python代碼 params {&…

【Linux系統】線程控制

1. POSIX線程庫 (pthreads)POSIX線程(通常稱為pthreads)是IEEE制定的操作系統線程API標準。Linux系統通過glibc庫實現了這個標準,提供了創建和管理線程的一系列函數。核心特性命名約定:絕大多數函數都以 pthread_ 開頭&#xff0c…

【Spring Cloud Alibaba】前置知識

【Spring Cloud Alibaba】前置知識1. 微服務介紹1.1 系統架構的演變1.1.1 單體應用架構1.1.2 垂直應用架構1.1.3 分布式架構1.1.3.1 SOA架構1.1.4 微服務架構1. 微服務介紹 1.1 系統架構的演變 隨著互聯網的發展,網站應用的規模也在不斷的擴大,進而導致…

2025互聯網大廠Java面試1000道題目及參考答案

Java學到什么程度可以面試工作? 要達到能夠面試Java開發工作的水平,需要掌握以下幾個方面的知識和技能: 1. 基礎扎實:熟悉Java語法、面向對象編程概念、異常處理、I/O流等基礎知識。這是所有Java開發者必備的基礎,也…

記錄:HSD部署(未完成)

建數據庫 相關文檔:Confluence準備:CA文件和備份用的aws key。 CA文件:在namespace添加trust-injectionenabled的標簽,會自動生成。 aws key:生成cnpg-backup-creds的secret。安裝: 從git倉庫獲取values模…

【AI】提示詞與自然語言處理:從NLP視角看提示詞的作用機制

提示詞與自然語言處理:從 NLP 視角看提示詞的作用機制在人工智能快速發展的今天,大模型成為了人們關注的焦點。而要讓大模型更好地理解人類意圖、完成各種任務,提示詞扮演著關鍵角色。從自然語言處理(NLP)的角度來看&a…

2025.8.29機械臂實戰項目

好久沒給大家更新了,上周末大學大四開學,所以停更了幾天,回來后在做項目,接下來的幾篇文章,給大家帶來幾個項目,第一個介紹的是機械臂操作,說是機械臂操作,簡單來說,就是…

【機器學習基礎】機器學習的要素:任務T、性能度量P和經驗E

第一章 機器學習的本質與理論框架 機器學習作為人工智能領域的核心支柱,其理論基礎可以追溯到20世紀中葉的統計學習理論。Tom Mitchell在其1997年的經典著作《Machine Learning》中給出了一個至今仍被廣泛引用的學習定義:"對于某類任務T和性能度量P,一個計算機程序被認…

wav音頻轉C語言樣點數組

WAV to C Header Converter 將WAV音頻文件轉換為C語言頭文件的Python腳本,支持將音頻數據嵌入到C/C項目中。 功能特性 音頻格式支持 PCM格式:支持8位、16位、24位、32位PCM音頻IEEE Float格式:支持32位浮點音頻多聲道:支持單聲道、…

01.《基礎入門:了解網絡的基本概念》

網絡基礎 文章目錄網絡基礎網絡通信核心原理網絡通信定義信息傳遞過程關鍵術語解釋網絡的分類網絡參考模型OSI 參考模型各層核心工作分層核心原則TCP/IP 參考模型(4 層 / 5 層,實際應用模型)TCP/IP 與 OSI 模型的對應關系傳輸層核心協議&…

基于vue駕校管理系統的設計與實現5hl93(程序+源碼+數據庫+調試部署+開發環境)帶論文文檔1萬字以上,文末可獲取,系統界面在最后面。

系統程序文件列表:項目功能:學員,教練,教練信息,預約信息,場地信息,時間安排,車輛信息,預約練車,時間段,駕校場地信息,駕校車輛信息,預約報名開題報告內容:一、選題背景與意義背景隨著汽車保有量持續增長,駕校行業規模不斷擴大&am…

灰度思維:解鎖世界原有本色的密碼

摘要本文深入探討灰度思維的概念內涵及其在處理他人評價中的應用價值。研究指出,灰度思維作為一種超越非黑即白的思維方式,能夠幫助個體以更客觀、全面的態度接受他人評價的片面性,從而促進個人成長和人際關系和諧。文章分析了他人評價片面性…

動態規劃--Day03--打家劫舍--198. 打家劫舍,213. 打家劫舍 II,2320. 統計放置房子的方式數

動態規劃–Day03–打家劫舍–198. 打家劫舍,213. 打家劫舍 II,2320. 統計放置房子的方式數 今天要訓練的題目類型是:【打家劫舍】,題單來自靈艾山茶府。 掌握動態規劃(DP)是沒有捷徑的,咱們唯一…

Nuxt.js@4 中管理 HTML <head> 標簽

可以在 nuxt.config.ts 中配置全局的 HTML 標簽,也可以在指定 index.vue 頁面中配置指定的 HTML 標簽。 在 nuxt.config.ts 中配置 HTML 標簽 export default defineNuxtConfig({compatibilityDate: 2025-07-15,devtools: { enabled: true },app: {head: {charse…

UCIE Specification詳解(十)

文章目錄4.5.3.7 PHYRETRAIN(物理層重訓練)4.5.3.7.1 Adapter initiated PHY retrain4.5.3.7.2 PHY initiated PHY retrain4.5.3.7.3 Remote Die requested PHY retrain4.5.3.8 TRAIN ERROR4.5.3.9 L1/L24.6 Runtime Recalibration4.7 Multi-module Link…

電商數據的獲取方式:API、爬蟲、第三方服務及更多

在競爭激烈的電商領域,數據是驅動業務增長的關鍵。準確、及時地獲取電商數據,并進行深入分析,能夠幫助企業洞察市場趨勢、優化運營策略、提升用戶體驗。本文將全面介紹電商數據的獲取方式,涵蓋API接口、網絡爬蟲技術、第三方數據服…

《WINDOWS 環境下32位匯編語言程序設計》第8章 通用對話框

Windows操作系統為一些常用功能提供了一些通用對話框(Common Dialog Box),比如,在不同的應用程序中進行打開文件、選擇字體、選擇顏色等操作時,不同程序顯示的對話框的模樣都是一樣的。另外,把同樣的應用程…