puthon 變數(區域性變數與全域性變數)

2022-05-21 04:35:34 字數 3297 閱讀 5348

區域性變數 區域性變數的作用範圍為函式內部
1

deftest1():

2 a = 200 #

區域性變數只能在該函式中使用(它的作用範圍在該函式裡面)

3 a+=1

4print('

a的值為%s

'%a)56

test1()

7print

(a)8

#nameerror: name 'a' is not defined

全域性變數與區域性變數全域性變數能在後面的**中使用
a = 400

deftest1():

a = 200 #

區域性變數只能在該函式中使用(它的作用範圍在該函式裡面)

a+=1

print('

a的值為%s

'%a)

deftest2():

#a = 300 注意這裡的a+=1出現會報錯,因為區域性變數a在引用前沒有被定義

print('

a的值為%s

'%a)

test1()

#a的值為201

print(a)#

400test2() #

a的值為400 全域性變數,可以在後面的**中使用

全域性變數與區域性變數在引數傳遞中的存在的問題

1 a=400

2def

test1():

3 a = 200 #

區域性變數只能在該函式中使用(它的作用範圍在該函式裡面)

4 a+=1

5print('

a的值為%s

'%a)

return a

7def

test2(a):8#

a = 300910

print('

test2a的值為%s

'%a)

1112 b=test1()#此時b輸出結果為:a的值為201

13test2(b)#此時報錯test2() missing 1 required positional argument: 'a',因此需要在test1中返回a

14print

(a)

a=400

2 deftest1():

3 a = 200 #區域性變數只能在該函式中使用(它的作用範圍在該函式裡面)

4 a+=1

5 print('a的值為%s'%a)

return a7 deftest2(a):

8 #a = 300

9

10 print('test2a的值為%s'%a)

12 b=test1()#此時b輸出結果為:a的值為201

13 test2(b)# test2() takes 0 positional arguments but 1 was given 需要傳入乙個引數a

區域性變數中對原變數進行修改(列表&字典)(可變型別)name = ["

zhangsan

","lisi

","wangwu"]

student=

deftest1():

print("

原始的全域性變數為:%s

"%name)

name[1] = "

yasuo

"student[

"age

"] = 236test1()                 

#result: 原始的全域性變數為:['zhangsan', 'lisi', 'wangwu']

print(name)              #

result: ['zhangsan', 'yasuo', 'wangwu']

print("

現在的全域性變數為%s

"%name)   #

result: 現在的全域性變數為['zhangsan', 'yasuo', 'wangwu']

在的全域性變數student為%s"

%student)  #result:現在的全域性變數為student

區域性變數對與全域性變數同名函式定義,對全域性變數不產生影響,需global宣告(不可變型別)

name = ["

zhangsan

","lisi

","wangwu"]

a= "

laogao

"def

test1():

print("

原始的全域性變數為:%s

"%name)

name[1] = "

yasuo

"a = "

zed"#在區域性變數中定義了a的函式

test1()

print("

現在的全域性變數為%s

"%name)

print(a) #result laogao

global的用法name = ["

zhangsan

","lisi

","wangwu"]

a= "

laogao

"b = 122

deftest1():

print("

原始的全域性變數為:%s

"%name)

name[1] = "

yasuo

"global a

a = "zed"

global b

b+=1test1()

print("

現在的全域性變數為%s

"%name)

print(a,b)

在函式中修改全域性變數:1.如果是可變型別可以執行修改變數的值。2.如果全域性變數是不可變型別,如果想要在函式中修改不可變型別,其實本質上是修改不可變型別的全域性變數的引用(指向),加global就可以修改不可變型別的引用(可變的不考慮)

區域性變數與全域性變數

根據c語言的說法,區域性變數 定義在方法內部的變數叫區域性變數 全域性變數 定義在方法外部的變數叫全域性變數。區域性變數和全域性變數的主要區別在於二者的生存週期不同。全域性變數的生存週期 靜態分配記憶體,程式執行期間常駐記憶體,直到程式執行結束。區域性變數的生存週期 動態分配記憶體,位於執行緒堆疊中...

全域性變數與區域性變數

區域性變數 在區域性 塊內定義 作用域在區域性 塊內,生命週期在區域性 塊內,結束時銷毀。include void test int main return 0 輸出 1111111111 全域性變數 在所有 塊外定義 作用域是整個工程,生命週期程式開始至結束。工程test 10 10 原始檔sum...

區域性變數與全域性變數

資料的儲存型別 一 變數的作用域 變數的作用域是指變數有效性的範圍,與變數定義的位置密切相關,作用域是從空間這個角度來描述變數的,按照作用域的不同,變數可分為區域性變數和全域性變數。1 區域性變數 在函式 或 塊 內部定義的變數,也稱為內部變數,區域性變數只能在定義它的函式 或 塊 內使用,其他函式...