【Python】趣学Python变量和赋值:大师兄和二师兄教的好~
公眾號:尤而小屋
作者:Peter
編輯:Peter
今天給大家帶來的是一篇關于Python變量與賦值的文章。其實Python中的賦值語句我們在之前的學習過程已經接觸了很多,比如a=1,就是將數值1賦值給變量a。
在正式介紹賦值語句之前,我們先了解下Python中的變量問題。
環境
有讀者反映建議Peter寫下文章的環境,這就安排了:
系統:MacOS
工具:jupyter notebook
Python版本:3.7.5
文檔編輯器:Typora
變量
深刻理解變量的內存地址
變量可以說是一個存放數據的容器。Python中在定義變量的時候,不需要聲明變量。當我們首次為變量賦值的時候,會自動創建變量并指定類型。
變量本身是沒有類型的,只是對象(賦值的數據)有類型
a?=?66 a66b?=?66 b66type(a)??#?查看數值類型為整型intinttype(b)??#?字符串類型int我們定義了兩個變量a和b,它們都是數字66。雖然名稱不同,但是在計算機中它們卻代表的是同一個元素,看看他們的內存地址。
就好比:豬八戒(數值66)這個人,我們可以稱之為“二師兄”(放在變量a),也可以稱之為“天蓬元帥”(放在變量b),但是本質上他們都是指豬八戒,只是換了個別名,本質相同
id(a)??#?a和b的內存地址相同4387310752id(b)4387310752我們再定義一個變量的賦值看看:
a?=?77 a77id(a)4387311104我們看到,之前我們把數值66賦值給變量a,內存地址是4430785696,然后我們又把數值77賦值為變量a,內存地址變成了4430786048。
為什么?其實,這兩數值66和77本質上在計算機就是兩個對象,只不過它們剛好有個相同的名字而已。好比說,西游記有個情節:真假美猴王
真美猴王(數值66)和假美猴王(數值77)雖然都被稱為美猴王(標簽a),但是他們實際上是兩只不同的猴子呀(就好像是:內存中分配了不同的地址)~假的最后不還是被如來給收服啦!
創建變量
通過賦值語句來實現變量的創建
x?=?99??#?數值型 language?=?"python"??#?字符串型 number?=?[1,3,5,7,9]??#?列表型print(x) print(language) print(number)99 python [1, 3, 5, 7, 9]變量名稱命名規則
python中變量的命名可以使用短名稱,比如上面的x、y、z、a、b等,也可以使用具有一定描述作用的名稱,比如age、name、sex,其他人看到就可以知道變量的含義。通常Python中的變量命名規則:
變量名必須以字母或下劃線字符開頭,不能以數字開頭
變量名只能包含字母數字字符和下劃線(A-z、0-9 和 _)
變量名稱區分大小寫(name、Name 和 NAME 就是三個不同的變量)
變量名不能和Python中的關鍵字沖突(相同),否則無效
下面我們看看Python中常見的賦值語句:
賦值語句
常規賦值
賦值:將Python的某個數據對象貼在某個變量上,好像給這個對象貼上了一個標簽。Python 使用等號=作為賦值運算符,具體格式為:
name?=?value#?變量?=?某個值list1?=?["python","java"]??#?列表賦值給變量b list1['python', 'java']list2?=?[1,2,["python","html"],(1,4,7)]??#?嵌套列表 list2[1, 2, ['python', 'html'], (1, 4, 7)]age?=?28??#?數值 age28information?=?"xiaoming?is?a?boy"??#?字符串 information'xiaoming is a boy'#?定義一個變量dic,字典類型dic?=?{"name":"xiaoming","age":20,"sex":"fale"} dic{'name': 'xiaoming', 'age': 20, 'sex': 'fale'}多變量賦值
同時賦值3個變量,這些變量可以是不同的數據類型:
m,?n,?o=?22,?"xiaoming","男"??#?同時賦值3個變量m22n'xiaoming'o'男'上面的例子表示22賦值給m,字符串對象"xiaoming"賦值給n,"男"賦值給變量o
name,?age?=?("Peter",20)??#?通過元組形式賦值name'Peter'age20上面的例子通過Python元組的形式進行了多變量賦值
鏈式賦值
x1?=?y1?=?33x133y133在上面的例子中我們通過鏈式賦值同時定義了兩個變量x1和y1。其實它們在內存中就是同一個對象,通過id查看內存地址:
id(x1)4387309696id(y1)4387309696其實就是同一個python對象貼上了不同的標簽而已,但是本質相同
變量互換
k,?j?=?9,?5上面的變量賦值等價于:
k=9 j=5print("k?=",k) print("j?=",j)k = 9 j = 5print("id(k):?",?id(k)) print("id(j):?",?id(j))id(k): 4387308928 id(j): 4387308800下面我們交換kj兩個變量的值:
k,?j?=?j,?k??#?變量值的交換上面語句的含義表示為:將變量j的值(已經賦值了5)再賦值給變量k;將變量的值(已經賦值了9)再賦值給變量j;
print("k?=",k) print("j?=",j)k = 5 j = 9print("id(k):?",?id(k)) print("id(j):?",?id(j))id(k): 4387308800 id(j): 4387308928通過對比交換前后兩個變量的內存地址,我們發現:內存地址交換了,也就是變量已經發生了交換
在其他編程語言中實現變量值的交換的操作是(假設已經定義了兩個變量a和b):
temp?=?a??#?a賦值中間變量temp a?=?b?????#?b的值賦給變量a b?=?temp??#?temp的值賦給變量b變量的相等和相同
首先,必須聲明的是Python中變量的相等和相同,是不同的兩個概念,舉例子說明
number1?=?88 number2?=?88id(number1)4387311456id(number2)4387311456判斷兩個變量是否相等:使用==
number1?==?number2True判斷兩個變量是否相同:使用is
number1?is?number2True結果都是True,說明number1和number2兩個變量就是同一個對象
list1?=?"hello?python"? list2?=?"hello?python"list1?==?list2??#?相等Truelist1?is?list2??#?不相同False上面的結果表明:list1和list2是相等,但是不相同。
id(list1)4444494000id(list2)4444495024通過查看二者的內存地址發現:它們的地址真的不同,所以肯定是不相同的兩個對象。
我們再看最后一個情況:
number3?=?1000 number4?=?1000number3?==?number4??#?相等Truenumber3?is?number4??#?居然不相等啦!False我們查看下二者的內存地址,發現它們的地址真的不同,所以肯定不是同一個對象啦~
id(number3)4444408880id(number4)4444409104這到底是為什么呢?以后揭曉答案~
往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習及深度學習筆記等資料打印機器學習在線手冊深度學習筆記專輯《統計學習方法》的代碼復現專輯 AI基礎下載機器學習的數學基礎專輯黃海廣老師《機器學習課程》視頻課本站qq群851320808,加入微信群請掃碼:
總結
以上是生活随笔為你收集整理的【Python】趣学Python变量和赋值:大师兄和二师兄教的好~的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 红碎茶的制作
- 下一篇: 一个坑爹的问题,js注释掉夹杂的el表达