python進階教程之變量

2021-01-07 python大蛇

變量進階目標01. 變量的引用1.1 引用的概念

在 Python中

注意:如果變量已經被定義,當給一個變量賦值的時候,本質上是 修改了數據的引用

變量 不再 對之前的數據引用

變量 改為 對新賦值的數據引用

1.2

變量引用 的示例

在 Python中,變量的名字類似於 便籤紙 貼在 數據

a = 1

a=1

a = 2

a=2

b = a

b=a

變量 b是第 2 個貼在數字 2上的標籤

1.3 函數的參數和返回值的傳遞

在 Python中,函數的 實參/返回值 都是是靠 引用 來傳遞來的

python def test(num):

print("-" * 50)

print("%d 在函數內的內存地址是 %x" % (num, id(num)))

result = 100

print("返回值 %d 在內存中的地址是 %x" % (result, id(result)))

print("-" * 50)

return result

a = 10 print("調用函數前 內存地址是 %x" % id(a))

r = test(a)

print("調用函數後 實參內存地址是 %x" % id(a))

print("調用函數後 返回值內存地址是 %x" % id(r))


02. 可變和不可變類型

不可變類型,內存中的數據不允許被修改:

數字類型

int, bool, float, complex, long(2.x),字符串 ,str元組 ,tuple

可變類型,內存中的數據可以被修改:

列表

list

字典

dict


python a = 1

a = "hello"

a = [1, 2, 3]

a = [3, 2, 1]

python demo_list = [1, 2, 3]

print("定義列表後的內存地址 %d" % id(demo_list))

demolist.append(999) demolist.pop(0) demolist.remove(2) demolist[0] = 10

print("修改數據後的內存地址 %d" % id(demo_list))

demo_dict = {"name": "小明"}

print("定義字典後的內存地址 %d" % id(demo_dict))

demodict["age"] = 18 demodict.pop("name") demo_dict["name"] = "老王"

print("修改數據後的內存地址 %d" % id(demo_dict))

```

注意:字典的 key只能使用不可變類型的數據

注意

可變類型的數據變化,是通過 方法 來實現的

如果給一個可變類型的變量,賦值了一個新的數據,引用會修改

變量 不再 對之前的數據引用

變量 改為 對新賦值的數據引用

哈希

(hash)

Python 中內置有一個名字叫做 hash(o)的函數

接收一個 不可變類型 的數據作為 參數

返回 結果是一個 整數

哈希

是一種 算法,其作用就是提取數據的 特徵碼(指紋)

相同的內容 得到 相同的結果

不同的內容 得到 不同的結果

在 Python 中,設置字典的 鍵值對 時,會首先對 key 進行 hash 已決定如何在內存中保存字典的數據,以方便 後續 對字典的操作:增、刪、改、查

鍵值對的 key必須是不可變類型數據鍵值對的 value可以是任意類型的數據

03. 局部變量和全局變量

提示:在其他的開發語言中,大多 不推薦使用全局變量 —— 可變範圍太大,導致程序不好維護!

3.1 局部變量局部變量的作用

```python def demo1():


num = 10 print(num) num = 20 print("修改後 %d" % num)

def demo2():


num = 100 print(num)

demo1() demo2()

print("over")

```

局部變量的生命周期3.2 全局變量

```python

定義一個全局變量

num = 10

def demo1():


print(num)

def demo2():


print(num)

demo1() demo2()

print("over")

```

注意:函數執行時,需要處理變量時 會:

首先 查找 函數內部 是否存在 指定名稱 的局部變量如果有,直接使用

如果沒有,查找 函數外部 是否存在 指定名稱 的全局變量如果有,直接使用

如果還沒有,程序報錯!

1) 函數不能直接修改

全局變量的引用

提示:在其他的開發語言中,大多 不推薦使用全局變量 —— 可變範圍太大,導致程序不好維護!

```python num = 10

def demo1():

print("demo1" + "-" * 50) # 只是定義了一個局部變量,不會修改到全局變量,只是變量名相同而已 num = 100 print(num)

def demo2():

print("demo2" + "-" * 50) print(num)

demo1() demo2()

print("over")

```

注意:只是在函數內部定義了一個局部變量而已,只是變量名相同 —— 在函數內部不能直接修改全局變量的值

2) 在函數內部修改全局變量的值

```python num = 10

def demo1():


print("demo1" + "-" * 50) # global 關鍵字,告訴 Python 解釋器 num 是一個全局變量 global num # 只是定義了一個局部變量,不會修改到全局變量,只是變量名相同而已 num = 100 print(num)

def demo2():

print("demo2" + "-" * 50) print(num)

demo1() demo2()

print("over")

```

3) 全局變量定義的位置

```python a = 10

def demo():

print("%d" % a)

print("%d" % b)

print("%d" % c)

b = 20

demo()

c = 30

```

注意

代碼結構示意圖如下

4) 全局變量命名的建議

提示:具體的要求格式,各公司要求可能會有些差異


相關焦點

  • python進階教程之閉包
    什麼是閉包#定義一個函數def test(number):#在函數內部再定義一個函數,並且這個函數用到了外邊函數的變量,那麼將這個函數以及用到的一些變量稱之為閉包def test_in(number_in):print("in test_in 函數, number_in is %d"%number_in)return
  • 書聲琅琅:好的Python入門教程
    好的Python入門教程,書聲琅琅教育番茄老師微信pykf20介紹,python語言現在應用非常廣泛,不管是大數據還是人工智慧,應用最多的語言還是python,因此對於許多小白來講,看到python從業者的高薪資,想要轉行,或者致力於python開發的朋友,如果要學習python,從零基礎開始,一定需要一套完整的學習路線。
  • python教程
    開發知識體系序號教程名稱400301-Python快速入門連結: 400402-Python初級課程連結:400503- Python 定向爬蟲入門400604-Linux從入門到精通400705-Linux從入門到精通400806-Python資料庫操作400907-Apache
  • Win7怎麼配置python環境變量?win7系統攻略
    本文教程小編和大家分享win7系統配置python環境變量的方法,環境變量是在作業系統中一個具有特定名字的對象,它包含了一個或者多個應用程式所將使用到的信息。比如Windows和DOS作業系統中的path環境變量,那麼 Win7純淨版 下怎麼配置python環境變量?下面小編分享一種簡單的設置方法。
  • Linux下初學python之變量類型
    前言前面三篇文章我們和大家一起系統的學習了python的基本語法,包括:注釋、空行、列印、多行連字符等。今天我和大家一起學習python裡面的變量類型。python的變量類型1.變量的聲明和賦值在python中,變量是不需要聲明類型的。
  • Python視頻教程網課編程零基礎入門數據分析網絡爬蟲全套Python...
    教程大合集,包含python所有就業方向,每套課程均來自市面上主流培訓機構的原版教程,價值都在數百元以上 每套課程均包含:視頻課程+課件+原始碼 重要:建議根據自己工作方向和需求,重點選擇2到3套課程學精,吃透,然後在工作 重要:零基礎小白建議先選擇零基礎全能篇的一套課程學精,然後再根據自 己的需求和規劃選擇學習其他方向課程,學完後一定要多實踐
  • Python語言基本語法元素之變量,變量的含義及命名規則
    筆者希望給python初學者提供幫助。上一篇文章寫了Python語言基本語法元素之格式框架:注釋、縮進、續行符這裡繼續,Python語言基本語法元素之變量。筆者英文稍微好一點,把匯率的變量命名為rate,村口大牛拼音熟悉一些,他用拼音 huilv 來命名匯率變量,也是可以的。變量命名規則python採用 大寫字母、小寫字母、數字、下劃線和漢字 等字符及其組合進行命名。(Ab3_哈,是一個合法變量。但通常不建議用漢字,因為存在兼容性問題。)
  • 詳解python 局部變量與全局變量
    一旦本文將詳細分析python的全局變量與局部變量,學過php的人都知道,php裡面的全局變量是無法在function裡面去使用的,只有超全局變量才可以
  • Python教程基礎語法、變量基本使用和算術運算符
    python 變量名 = 值變量定義之後,後續就可以直接使用了1) 變量演練1 —— iPython```python定義 qq_number 的變量用來保存 qq 號碼PyCharm```python定義 qq 號碼變量qq_number = "1234567"定義 qq 密碼變量qq_password = "123"在程序中,
  • 我要悄悄學Python之變量與數據類型
    python world在上面的代碼中,我們添加了一個名為message的變量。每個變量都關聯一個值——與該變量相關聯的信息。在這裡,message指向值為"Hello python world"的文本。Python允許隨時修改變量的值,且始終保持記錄最新的結果。
  • python教程之python數學運算
    存儲數據變量#兩個變量交換值,通過第三個參數實現print('兩個變量交換值,通過第三個參數實現'); #第一種方法是通過第三個參數實現x=5;#變量賦值y=11; #變量賦值中進行分數(fraction)運算分數運算是python中的一個模塊(module)。
  • Python安裝教程之anaconda篇
    那麼對於迫切想學習Python的新手同學來說,第一件事情可能需要了解python是什麼?能用來做什麼?語法結構是怎樣的?這些我們幾句話很難介紹清楚,後續會陸續出python入門教程來為大家一一介紹。為了方便了解python是什麼,我想首先把python安裝到自己的電腦中也是很重要的步驟。本文將手把手教你如何安裝python.
  • Python機器學習·微教程
    該教程共分為11小節。在這個教程裡,你將學會:如何處理數據集,並構建精確的預測模型使用Python完成真實的機器學習項目這是一個非常簡潔且實用的教程,希望你能收藏,以備後面複習!接下來進入正題~這個微課程適合誰學習?如果你不符合以下幾點,也沒關係,只要花點額外時間搞清楚知識盲點就能跟上。
  • 技術性教程——Python(十二)
    我這教程也有小半年沒有更新了!最近發現微信推出了一個叫做標籤的功能,可以將我寫過的特定文章,這對於教程式的文章是極好的,希望大家可以多多運用!廢話也不多說了,拿出那已經積灰的參考書,讓我們繼續講!(前面忘了的可以回顧一下)上一期說過了,我們這一期是要講「元組」,元組和這個列表差不多,都是python中的yi8zhogn序列結構,所謂的序列結構,您就可以將它理解成一種複式的儲存方法。
  • Github標星5.6k的《Python進階》中文版下載
    今天就給大家分享一本進階向的Python書籍:《Python進階》。它是《Intermediate Python》的中文譯本,內容精練,難度差不多相當於學完本教室入門教程的程度。適合已經學完基礎的同學。
  • python高級進階 002第一個pyqt5程序
    瀏覽器版本過低,暫不支持視頻播放以下開始文字講解:在上一節的教程中,我們已經將圖形化界面開發的基本環境已經搭建完畢,本節,我們繼續使用pyqt5開發程序。app.exec_()主要作用是用死循環來監聽界面的關閉按鈕等界面控制項等事件__name__在本文件運行的時候,結果就是__main__使用__name__==『__main__『來模擬python程序主入口為了使得我們能夠對qtdesigner設計後生成的代碼更加熟悉,我們今後會更多直接使用純pyqt5代碼來編寫程序,當然,在熟悉以後,我們可以直接使用qtdesigner直接快速圖形化開發界面
  • Python每天一分鐘:類定義進階/炫技—使用type函數動態創建類
    Python中的type函數是常用於查看變量類型,在調試python代碼和bug修復過程中都是非常有效的工具。然而,type函數的強大功能並非只能用於查看變量類型,在Python中完全允許使用 type()函數來動態創建類,或者說定義類,這也是python類編程中的進階用法!
  • 二、Python基礎數據類型、變量、常量
    二、Python基礎數據類型、變量、常量1.變量:把程序運行的中間結果臨時的存在內存中,以便後續的代碼調用變量不僅可以是數組,還可以是任意數據類型。在程序中,變量就是用一個變量名表示,變量名必須是大小寫英文、數字、和『_』下劃線組合,並且不能以數字開頭。
  • Micropython之LED1
    我個人觀點是,使用掌控板來學習Micropython是一個很不錯的途徑。         首先,學習使用Micropython去做一些小項目(創客小製作)是圖形化編程的進階之路。因為現在大多數學校信息技術課上教的源碼程序,選擇的是python,因為普遍認為python是現在最接近人類語言的程式語言。
  • python入門第二課:變量和數據類型
    本教程使用的課本是《Python編程:從入門到實踐》,作者:[美] Eric Matthes在Python中,變量可以理解為抽屜,數據就是一個蘋果、香蕉、書本等可以放進抽屜的東西,變量是用來存儲數據的。我們對上一節課的hello world代碼稍加改動,改成下面的代碼,看看會輸出什麼?