python的global語句不能作用在函式內的函式嗎

2021-03-21 15:56:07 字數 3971 閱讀 1182

1樓:匿名使用者

也不能這麼說。

x = 10 #先叫他原始x

原始x 就是func_inner() 的x但是func_outer() 的x跟原始x和func_innter() 的x沒關係。這個是local x

你可以用id(x)檢視,會發現,inner x的id 跟func_outer 的x 的id不相等。但原始x與inner x id 一樣。

python 在函式裡面定義的變數,在外面就不能用了?我不是很想用global

2樓:匿名使用者

嚴格的說,象你這麼用是絕對屬於沒有定義的。

不過有時候又可以是因為,如果你在程式開頭函式前面定義一些變數,原則上它會自動變成global的。 除非你另外啟執行緒,或者是有可能有與它重名的變數,否則可以直接在函式體內使用,當然也可以在後面的語句中使用。

函數語言程式設計要記著ipo這個準則。就是每個函式最好都是有輸入input有輸出output。函式體就是處理process。

儘量不要使用全域性變數,也不要使用預設值。一個正規的做法是這樣:

def example(a):

a=0return a

a=1print example(a)

這是一個標準用法,你就不用為global變數頭痛了。

3樓:智應

注意縮排對齊

def example():

a = 0

print a

while, for也是一樣,沒有大括號所以對齊決定**是函式或迴圈的結束

4樓:匿名使用者

要注意變數的作用域。

你可以def example():

a = 0

return a

print example()

python中如何在函式中把字串中的global語句執行

5樓:匿名使用者

[root@-xl pythontest]# vim stu.py#!/usr/bin/python

#coding=utf-8

scope={}

def addstu():

code=raw_input('請輸入學生的學號')exec ('d'+code+'='+code) in scopeprint scope['d'+code]addstu()

[root@-xl pythontest]# python stu.py

請輸入學生的學號123

123法二: 傳引數也行

#!/usr/bin/python

#coding=utf-8

def addstu(scope):

code=raw_input('請輸入學生的學號:')scope['d'+code]=code

print scope['d'+code]scope={}

addstu(scope)

print scope

[root@-xl pythontest]# python stu.py

請輸入學生的學號:456456

6樓:匿名使用者

python中的全域性變數是這樣用:

gtest=0

def testglobal():

global gtest

print gtest

gtest=20

print gtest

testglobal()

執行結果:020

要想實現自定變更名稱和值,可以利用字典中的鍵值對:

def addstu():

num=input("please input the no. of student:")

tkey="d"+str(num)

dict={}

dict[tkey]=num

for key in dict:

執行結果:

[輸出]please input the no. of student:[輸入]2013

[輸出]d2013=2013

7樓:匿名使用者

入學生的學號')

...     globals()['d'+code] = code...

>>> addstu()

請輸入學生的學號2014

>>> d2014

'2014'

>>>

8樓:匿名使用者

全域性變數名字是不可變的,你可以採用字典實現,例如dict={};dict["d2013

"]="2013"

python中global的作用是什麼?

9樓:我愛

def func():

global x

x=3return x

f=func()

print x

一般多用在函式內,宣告變數的作用域為全域性作用域。

如例子中的x,如果不加global,則作用域僅為func()函式內部,print x時,會報錯;

加了global後,函式例項化後,就可以在函式外部直接訪問x了。

10樓:匿名使用者

告訴直譯器,後面這個物件是全域性的物件,不是區域性的。

python 列表 為什麼不用global宣告 在函式裡也可以用

11樓:匿名使用者

python沒有變數的宣告 , 所以它通過一個簡單的規則找出變數的範圍 :如果有一個函式內部的變數賦值 ,該變數被認為是本地的,所以如果有修改變數的值就會變成區域性變數。

python中在哪些情況下必須使用global來宣告全域性變數

12樓:匿名使用者

在函式中對變數賦值,預設是區域性變數,必須用global宣告

13樓:匿名使用者

接下來,我們把值2賦給x。x是函式的區域性變數。所以,當我們在函式內改變x的值的時候,在主塊中定義的x不受影響。

在最後一個print語句中,我們證明了主塊中的x的值確實沒有受到影響。

使用global語句

如果你想要為一個定義在函式外的變數賦值,那麼你就得告訴python這個變數名不是區域性的,而是 全域性 的。我們使用global語句完成這一功能。沒有global語句,是不可能為定義在函式外的變數賦值的。

你可以使用定義在函式外的變數的值(假設在函式內沒有同名的變數)。然而,我並不鼓勵你這樣做,並且你應該儘量避免這樣做,因為這使得程式的讀者會不清楚這個變數是在**定義的。使用global語句可以清楚地表明python函式變數是在外面的塊定義的。

請問這個python global語句是什麼意思?

14樓:匿名使用者

您好,globals()這個函式會返回一個字典,裡面記錄了當前所有全域性變數的名稱和所對應的值。舉個例子,如果程式中有全域性變數a=0,b=1的話,那麼globals()返回的值就是這樣一個字典。而globals()["a%d%d" % (g, h)]==0就相當於在["aghd"]這個全域性變數是否等於0,如果等於0,則返回true,否則返回false。

python 函式作用域問題,

15樓:三城補橋

類在定義的時候是有作用域的,這個作用域內的變數只能在 class 塊內訪問,而不能在類的方法(函式)中訪問。

python 中的global語句問題,幫看一下 謝謝!

16樓:匿名使用者

global只做全域性變數的宣告,而不是一般的執行語句。

拆成兩行即可:

global **t

**t+=1

python最簡單語句提示語法錯誤

參考下我這個 idle的縮排好奇怪 感興趣的話可以瞭解下ipython,pythonwin,dreampie,bpython等 縮排問題,else要退到頂格寫 x 15 if x 0 print t else print e t 前面不要打空格 你寫到檔案裡再執行看得更清楚,這裡主要是有個 佔了空間...

在python中用while語句列印出倒三角形

列印倒立的正三角形 hang int input 請輸入行數 y 1 while y hang space 1 while space y print end space 1 x hang y while x 0 print end x 1 print y 1 print 圖形列印完成!i int ...

python問題,python中的,問題?

反轉一個list,返回一個迭代器 iterator 如 range 10 0,1,2,3,4,5,6,7,8,9 reversed range 10 x for x in reversed range 10 9,8,7,6,5,4,3,2,1,0 還可以這樣完成反轉 range 10 1 9,8,7...