變量的進階使用
- 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.程序執行的順序要清楚,老師每次說的時候大家都覺得很簡單,但是在關鍵時刻才知道平時積累的重要性.