Python 區域性變數和全域性變數 - Python零基礎入門教程
目錄
一.前言
零基礎 Python 學習路線推薦 : Python 學習目錄 >> Python 基礎入門
在 Python 開發中,變數也是有生命週期的,一旦週期結束,程式會自動清理暫用的空間,釋放記憶體,變數分為兩者,一種是區域性變數,一種是全域性變數,兩者具體有什麼區別呢……
二.Python 區域性變數
一般而言在函式內部或者類中宣告的變數預設都是區域性變數。一旦函式結束,變數的生命週期也會結束,佔用的空間會被自動釋放。
def func1():
# 在函式內部定義的變數預設都是區域性變數
a = 1
print(a)
# 函式結束,區域性變數a的生命週期結束
# 由於a是區域性變數,並且a的生命週期已經結束,外部再次呼叫區域性變數a,程式會產生異常,崩潰
print(a)
程式報錯:NameError: name ‘a’ is not defined ,原因:函式內部定義的區域性變數只能在函式內部使用。
三.Python 全域性變數
全域性變數和區域性變數相反,在函式外部或者類外部宣告的變數預設為全域性變數。全域性變數的生命週期直到程式結束才會結束,比區域性變數生命週期更長。
# !usr/bin/env python # !usr/bin/env python # -*- coding:utf-8 _*- """ @Author:猿說程式設計 @Blog(個人部落格地址): www.codersrc.com @File:python區域性變數和全域性變數.py @Time:2021/3/24 00:37 @Motto:不積跬步無以至千里,不積小流無以成江海,程式人生的精彩需要堅持不懈地積累! """ a = 2 def func1(): print(a) # 函式結束,區域性變數的生命週期結束 # 全域性變數直到程式結束,生命週期才結束 func1() # 輸出全域性變數a print(a) ''' 輸出結果: 2 2 '''
四.Python 區域性變數和全域性變數的區別
1.全域性變數的生命週期是直到程式結束,而區域性變數生命週期是函式結束;
2.如果需要在函式內部修改全域性變數的值,需要在函式內部為該全域性變數前面加上 global 關鍵字, 否則該變數預設為函式內部定義的區域性變數,示例程式碼如下:
# !usr/bin/env python
# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:猿說程式設計
@Blog(個人部落格地址): www.codersrc.com
@File:python區域性變數和全域性變數.py
@Time:2021/3/24 00:37
@Motto:不積跬步無以至千里,不積小流無以成江海,程式人生的精彩需要堅持不懈地積累!
"""
# 在函式內部定義的變數預設都是區域性變數
a = 2
def func1():
# global a # 宣告 a 是全域性變數,在該函式內部對a的操作就是對全域性變數a的操作
a = 1 # 如果沒有上一行程式碼,預設a就是函式內部的區域性變數,函式結束,生命週期結束
print(a)
# 函式結束,區域性變數的生命週期結束
func1()
# 輸出全域性變數a
print(a)
'''
輸出結果:
1
2
'''
是不上覺得很奇怪:為什麼最後一個值是 2 ,應該是 1 才對?
因為沒有第 17 行程式碼的話,預設 a 只是函式內部的一個普通區域性變數,所以函式內部的 print 函式輸出到控制檯是 1 ;函式結束,函式內部的區域性變數 a 值生命週期結束,執行 fun1 函式之後的 print 函式輸出的是全域性變數 a 的值 2 .
也就是說函式內部對 a 值得修改並沒有成功,只有在函式內部,為全域性變數加上關鍵字 global 宣告為全域性變數,才能修改成功,取消第 17 行得註釋,控制檯輸出:
1
1
五.重點總結
- 1.注意區域性變數和全域性變數的生命週期;
- 2.如果想在函式內部修改全域性變數的值,需要加上關鍵字 global ;
六.猜你喜歡
- Python 簡介
- Python Pycharm Anacanda 區別
- Python2.x 和 Python3.x,如何選擇?
- Python 配置環境
- Python Hello World 入門
- Python 程式碼註釋
- Python 中文編碼
- Anaconda 是什麼?Anconda 下載安裝教程
- Pycharm 提示:this license **** has been cancelled
- Pycharm 設定開發模板/字型大小/背景顏色
- Python 列表 list
- Python 元組 tuple
- Python 字典 dict
未經允許不得轉載:猿說程式設計 » Python 區域性變數和全域性變數
本文由部落格 - 猿說程式設計 猿說程式設計 釋出!