Python(21)--變量進階

變量的進階使用

  • 1變量引用
  • 2可變、不可變數據類型
  • 3局部變量和全局變量
  • 4.Tips

本系列博文來自學習《Python基礎視頻教程》筆記整理,視屏教程連接地址:http://yun.itheima.com/course/273.html
在博文:https://blog.csdn.net/sinat_40624829/article/details/89555165中簡單的介紹了變量的使用之后,本博文主要總結變量的進階使用。

1變量引用

變量和數據保存在內存,兩者分開保存。

數據保存在內存中的一個位置,變量中保存著數據在內存中的地址。

變量中記錄著數據的地址,這就叫做引用。

使用id()查看變量中保存的數據在內存中的地址。

在這里插入圖片描述
在這里插入圖片描述
實參通過引用調用,調用函數時,本質上保存的是:實參保存數據的引用(地址),而不是實參保存的數據。

函數的返回值傳遞引用(地址)

2可變、不可變數據類型

不可變數據類型:數字,字符串,元組
可變數據類型:列表、字典

a=1

一旦在某一個內存單元中指定了一個數字,這個單元中的數字就不能變了,但是a可以指向不同的地址,就好像a代表的數字在變一樣。

a=“hello”

不可變

a=[1,2,3]

可變,可以通過方法A.append/A.pop來修改列表內容。

a=[3,2,1]

不是在修改原來的列表,而是新建了一個列表

對列表和字典操作:賦值語句會修改變量的引用

在這里插入圖片描述)
在這里插入圖片描述)
字典的Key不能是可變類型:s數字、元素、字符串可以作為鍵,列表字典不行,否則會報錯。
在這里插入圖片描述)
在這里插入圖片描述)

報錯信息:unhashable
哈希:看做一個函數,傳入一個不可變數據類型,并且返回一個結果,提取數據的特征碼,如果傳遞的內容是相同的,就能夠返回相同的結果,如果傳遞的內容是不同的能夠返回不同的結果。Hash函數只能接受一個不可變數據類型作為參數,不能接受可變類型參數。
在這里插入圖片描述
在python設置字典鍵值時,為了后續增刪查改的方便,解釋器會對key進行hash操作,以決定如何在內存中保存字典數據。

3局部變量和全局變量

局部變量:函數內部定義的變量,只能在定義它的函數中使用
全局變量:函數定義的變量,能夠在所有函數中都使用

溫馨提示;在其他編程語言中,不推薦使用全局變量,–可變范圍大,導致函數不好維護,
在Python中有特定的設置,來避免一些問題。函數中要使用變量的時候,就近查找原則,找到就用。

3.1局部變量:臨時保存一個函數內部使用的數據。
1.生命周期:創建到消亡,生命周期內才能使用變量。
2.使用細節:不同的函數內部,定義了相同名字變量,相互之間使用互不干擾。

3.2全局變量:
1.使用細節: 在函數內部,可以通過變量的引用獲取對應的數據,但是不允許直接修改全局變量的引用。也就是只能用,不能對其使用賦值操作。

num=10
def demo_one():# 希望修改全局變量的值# 在python函數中不允許修改全局變量的值# 如果使用賦值語句,會在函數內部定義一個局部變量num = 99print("demo_one =>%d" %num)
def demo_two():print("demo_two=>%d" % num)
demo_one()
demo_two()

輸出:

demo_one =>99
demo_two=>10

2.在函數內部來修改全局變量的值:global聲明全局變量

num=10
def demo_one():# 希望修改全局變量的值# 在python函數中不允許修改全局變量的值# 如果使用賦值語句,會在函數內部定義一個局部變量# 聲明一下,就能夠說后面的變量是全局變量,就不會創建一個局部變量global numnum = 99print("demo_one =>%d" %num)
def demo_two():print("demo_two=>%d" % num)
demo_one()
demo_two()

輸出:

demo_one =>99
demo_two=>99

3.全局變量定義的位置:在開發時,把所有的全局變量定義所有函數的上方,就可以保證所有的函數都能正常訪訪問所有的全局變量。

4.全局變量命名:不同公司對于全局變量的標記有不同的規則;在變量名前面增加gl_或者g_(到新的公司工作,可以問一下,領導全局變量的命名規則,可以顯得你有開發經驗)

4.Tips

1.Pycharm調試的小技巧:左下角的調試模塊跳轉。
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
2.Python代碼結構:

shebang
import
全局變量
函數定義
執行代碼

3.程序執行的順序要清楚,老師每次說的時候大家都覺得很簡單,但是在關鍵時刻才知道平時積累的重要性.

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

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

相關文章

HTTP 響應代碼全集

HTTP 響應狀態代碼指示特定 http 請求是否已成功完成。響應分為五類:信息響應(100–199),成功響應(200–299),重定向(300–399),客戶端錯誤(400–499)和服務器錯誤 (500–599)。狀態代碼由 section 10 of RFC 2616定義 信息響應 …

機器學習知識總結系列-機器學習中的數學-矩陣(1-3-2)

矩陣 SVD 矩陣的乘法狀態轉移矩陣狀態轉移矩陣特征值和特征向量 對稱陣 正交陣 正定陣數據白化矩陣求導 向量對向量求導 標量對向量求導 標量對矩陣求導一.矩陣1.1 SVD奇異值分解(Singular Value Decomposition),假設A是一個mn階矩陣&#xf…

阿里Java編程規約(注釋)提煉

【強制】類、類屬性、類方法的注釋必須使用 Javadoc 規范,使用/**內容*/格式,不得使用 // xxx 方式。 說明:在 IDE 編輯窗口中,Javadoc 方式會提示相關注釋,生成 Javadoc 可以正確輸出相應注釋;在 IDE 中…

Python面試題-交換兩個數字的三種方法

Python實現兩個數字交換解法1解法2解法3a6 b100 解法1 使用其他變量,最通用的方法 ca ab bc 解法2 不使用其他變量,利算法節省內存空間 aab ba-b aa-b 解法3 python 專有 a,b(b,a) #等號右邊是一個元組 或者可以寫為: a,bb,a print(a,b)

面試中海量數據處理總結

教你如何迅速秒殺掉:99%的海量數據處理面試題 前言 一般而言,標題含有“秒殺”,“99%”,“史上最全/最強”等詞匯的往往都脫不了嘩眾取寵之嫌,但進一步來講,如果讀者讀罷此文,卻無任何收獲&…

redis——舊版復制

Redis 的復制功能分為同步(sync)和命令傳播(command propagate)兩個操作: 同步操作用于將從服務器的數據庫狀態更新至主服務器當前所處的數據庫狀態。命令傳播操作用于在主服務器的數據庫狀態被修改, 導致…

Linux(3)-網-ifconfig,ping,ssh

終端命令網-ping,ssh1. ifconfig -a2. ping3. ssh3.1安裝3.2 連接3.3 配置登入別名防火墻端口號,todo1. ifconfig -a 查看IP地址, 還可以用于配置網口。 ifconfig -a 2. ping ping命令: 檢測到IP地址的連接是否正常。命令開始后由本機發送數據包a&…

redis——相關問題匯總

什么是redis? Redis 本質上是一個 Key-Value 類型的內存數據庫, 整個數據庫加載在內存當中進行操作, 定期通過異步操作把數據庫數據 flush 到硬盤上進行保存。 因為是純內存操作, Redis 的性能非常出色, 每秒可以處理…

一文搞定面試中的二叉樹問題

一文搞定面試中的二叉樹問題 版權所有,轉載請注明出處,謝謝! http://blog.csdn.net/walkinginthewind/article/details/7518888 樹是一種比較重要的數據結構,尤其是二叉樹。二叉樹是一種特殊的樹,在二叉樹中每個節點…

無數踩坑系列(1)--Brightness Controller

Brightness Controller1.嘗試找回系統自帶亮度調節條1.1 配置grub文件,無效1.2 使用命令調節屏幕亮度,無效2.安裝應用程序Brightness Controller2.1許多博文都寫出了如下方案,無效:2.2 github 手動安裝https://github.com/LordAmi…

springboot2——MyBatis入門

原生缺陷: 數據庫dao層操作缺陷: ①jdbc的增刪改查代碼的冗余過大,查詢的時候需要遍歷。 ②Sql語句和數據庫相關參數和代碼的耦合性過高。 解決:使用Mybatis 業務層缺陷: ①業務層和數據…

面試--Linux命令總結

顯示目錄和文件的命令 Ls:用于查看所有文件夾的命令。 Dir:用于顯示指定文件夾和目錄的命令 Tree: 以樹狀圖列出目錄內容 Du:顯示目錄或文件大小 修改目錄,文件權限和屬主及數組命令 Chmod:用于改變指定…

Linux(4)-資源-du,top,free,gnome

Linux終端命令1.磁盤資源1.1 df -hl1.2 du1.3 統計文件數量2.緩存資源2.1 top2.2 free -m3.Gnome3.1系統監視器-gnome-system-monitor3.2 截屏--screenshot查看文件系統資源的一些命令1.磁盤資源 1.1 df -hl 查看分區磁盤使情況 硬盤空間不夠時,跑程序會報錯&…

redis——Java整合

redis官網 微軟寫的windows下的redis 我們下載第一個 額案后基本一路默認就行了 安裝后&#xff0c;服務自動啟動&#xff0c;以后也不用自動啟動。 出現這個表示我們連接上了。 redis命令參考鏈接 Spring整合Redis 引入依賴 - spring-boot-starter-data-redis <depend…

無限踩坑系列(4)-遠程登入服務器

遠程操作服務器1.遠程上傳/下載命令&#xff08;文件夾/文件&#xff09;2.文本編輯vim3.一直保持服務器登入狀態4.虛擬終端screenssh遠程登入服務器&#xff0c;沒有圖形界面&#xff0c;只能在終端中操作文件與文件夾。本文總結了遠程登入服務器過程中用到的一些命令。1.遠程…

程序員不成熟的若干個特征

做我們這個項目也是一樣&#xff0c;很多人來做這個生意&#xff0c;開始沒有什么成績&#xff0c;就想著要放棄&#xff0c;有的人一個月放棄&#xff0c;有的人三個月放棄&#xff0c;有的人半年放棄&#xff0c;有的人一年放 棄&#xff0c;我不明白人們為什么輕易放棄這個趨…

一文理解KMP算法

一文理解KMP算法 作者&#xff1a;July 時間&#xff1a;最初寫于2011年12月&#xff0c;2014年7月21日晚10點 全部刪除重寫成此文&#xff0c;隨后的半個多月不斷反復改進。后收錄于新書《編程之法&#xff1a;面試和算法心得》第4.4節中。 1. 引言 本KMP原文最初寫于2年多前的…

小貓的java基礎知識點匯總(下)

1、線程和進程有什么區別&#xff1f; 進程是操作系統資源分配的基本單位&#xff0c;而線程是任務調度和執行的基本單位 線程是進程的子集&#xff0c;一個進程可以有很多線程&#xff0c;每條線程并行執行不同的任務。 不同的進程使用不同的內存空間&#xff0c;而所有的線…

無數踩坑系列(3)-配置pytorch

配置pytorch環境1. 命令一鍵式安裝2.源碼安裝問題1問題2問題3問題43.克隆一個已有環境&#xff0c;帶pytorch4.GPU驅動版本不對在實際開發中&#xff0c;想要在自己的機子上跑別人的代碼&#xff1b;或者&#xff0c;在新的機子上跑自己的代碼&#xff0c;總是面臨著環境配置的…

小貓的java基礎知識點匯總(上)

1、一個".java"源文件中是否可以包括多個類&#xff08;不是內部類&#xff09;&#xff1f;有什么限制&#xff1f; 可以有多個類&#xff0c;但只能有一個public的類&#xff0c;并且public的類名必須與文件名相一致。 2、short s1 1; s1 s11; 有沒有錯&#xff…