python局部變量和全局變量

在python開發中,變量也是有生命週期的,一旦週期結束,程序會自動清理暫用的空間,釋放內存,變量分爲二者,一種是局部變量,一種是全局變量,二者具體有什麼區別呢……python

 

沒聽清楚

 

一.局部變量

通常而言在函數內部或者類中聲明的變量默認都是局部變量。一旦函數結束,變量的生命週期也會結束,佔用的空間會被自動釋放。git

1github

2微信

3ide

4函數

5spa

63d

7code

8orm

def func1():

    # 在函數內部定義的變量默認都是局部變量

    a = 1

    print(a)

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

 

# 因爲a是局部變量,而且a的生命週期已經結束,外部再次調用局部變量a,程序會產生異常,崩潰

print(a)

程序報錯:NameError: name ‘a’ is not defined ,緣由:函數內部定義的局部變量只能在函數內部使用。

 

二.全局變量

全局變量和局部變量相反,在函數外部或者類外部聲明的變量默認爲全局變量。全局變量的生命週期直到程序結束纔會結束,比局部變量生命週期更長。

1

2

3

4

5

6

7

8

9

a = 2

def func1():

    print(a)

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

    # 全局變量直到程序結束,生命週期才結束

 

func1()

# 輸出全局變量a

print(a)

輸出結果:

1

2

2

2

 

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

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

2.若是須要在函數內部修改全局變量的值,須要在函數內部爲該全局變量前面加上 global 關鍵字 不然該變量默認爲函數內部定義的局部變量,示例代碼以下:

1

2

3

4

5

6

7

8

9

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:不積跬步無以致千里,不積小流無以成江海,程序人生的精彩須要堅持不懈地積累!

"""

# 在函數內部定義的變量默認都是局部變量

a = 2

def func1():

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

    a = 1      # 若是沒有上一行代碼,默認a就是函數內部的局部變量,函數結束,生命週期結束

    print(a)

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

 

 

func1()

# 輸出全局變量a

print(a)

輸出結果:

1

2

1

2

是不上以爲很奇怪:爲何最後一個值是2,應該是1纔對?

由於沒有第17行代碼的話,默認a只是函數內部的一個普通局部變量,因此函數內部的print函數輸出到控制檯是1;函數結束,函數內部的局部變量a值生命週期結束,執行fun1函數以後的print函數輸出的是全局變量a的值2.

也就是說函數內部對a值得修改並無成功,只有在函數內部,爲全局變量加上關鍵字global聲明爲全局變量,才能修改爲功,取消第17行得註釋,控制檯輸出:

1

2

1

1

 

思考

 

四.重點總結

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

2.若是想在函數內部修改全局變量的值,須要加上關鍵字global;

 

猜你喜歡:

1.python變量

2.pycharm設置頭文件模板

 

轉載請註明猿說Python » python局部變量和全局變量

相關文章
相關標籤/搜索