天天看點

python局部變量和全局變量

在python開發中,變量也是有生命周期的,一旦周期結束,程式會自動清理暫用的空間,釋放記憶體,變量分為兩者,一種是局部變量,一種是全局變量,兩者具體有什麼差別呢……

python局部變量和全局變量

一.局部變量

一般而言在函數内部或者類中聲明的變量預設都是局部變量。一旦函數結束,變量的生命周期也會結束,占用的空間會被自動釋放。

1

2

3

4

5

6

7

8

def func1():

    # 在函數内部定義的變量預設都是局部變量

    a = 1

    print(a)

    # 函數結束,局部變量a的生命周期結束

# 由于a是局部變量,并且a的生命周期已經結束,外部再次調用局部變量a,程式會産生異常,崩潰

print(a)

程式報錯:NameError: name ‘a’ is not defined ,原因:函數内部定義的局部變量隻能在函數内部使用。

二.全局變量

全局變量和局部變量相反,在函數外部或者類外部聲明的變量預設為全局變量。全局變量的生命周期直到程式結束才會結束,比局部變量生命周期更長。

9

a = 2

    # 函數結束,局部變量的生命周期結束

    # 全局變量直到程式結束,生命周期才結束

func1()

# 輸出全局變量a

輸出結果:

三.局部變量和全局變量的差別

1.全局變量的生命周期是直到程式結束,而局部變量生命周期是函數結束;

2.如果需要在函數内部修改全局變量的值,需要在函數内部為該全局變量前面加上 global 關鍵字, 否則該變量預設為函數内部定義的局部變量,示例代碼如下:

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

# !usr/bin/env python

# -*- coding:utf-8 _*-

"""

@Author:何以解憂

@Blog(個人部落格位址): shuopython.com

@WeChat Official Account(微信公衆号):猿說python

@Github:www.github.com

@File:python_global.py

@Time:2019/10/10 21:00

@Motto:不積跬步無以至千裡,不積小流無以成江海,程式人生的精彩需要堅持不懈地積累!

# 在函數内部定義的變量預設都是局部變量

    # global a # 聲明 a 是全局變量,在該函數内部對a的操作就是對全局變量a的操作

    a = 1      # 如果沒有上一行代碼,預設a就是函數内部的局部變量,函數結束,生命周期結束

輸出結果:

是不上覺得很奇怪:為什麼最後一個值是2,應該是1才對?

因為沒有第17行代碼的話,預設a隻是函數内部的一個普通局部變量,是以函數内部的print函數輸出到控制台是1;函數結束,函數内部的局部變量a值生命周期結束,執行fun1函數之後的print函數輸出的是全局變量a的值2.

也就是說函數内部對a值得修改并沒有成功,隻有在函數内部,為全局變量加上關鍵字global聲明為全局變量,才能修改成功,取消第17行得注釋,控制台輸出:

python局部變量和全局變量

四.重點總結

1.注意局部變量和全局變量的生命周期;

2.如果想在函數内部修改全局變量的值,需要加上關鍵字global;

猜你喜歡:

1.python變量

2.pycharm設定頭檔案模闆

繼續閱讀