python之區域性變數引用賦值前的結果

2021-08-02 09:37:59 字數 1194 閱讀 3862

昨晚在做計算器的時候,被乙個bug搞懵比了。現在再看看,發現我好小白啊~~

1

#8+5+6-5

2 num = input("

please input:

")3 sa = re.split(r'

(\d)

', num) #區配到非數字則分割45

6 def func(s):

7 #result = 0

8if s[1] == '+':

9 result = int(s[0]) + int(s[2])

10 elif s[1] == '-':

11 result = int(s[0]) - int(s[2])

1213

for i in range(3): # 去掉前三個

14 s.remove(s[0])

1516 s.insert(0, result) #bug:local variable '

result

' might be referenced before assignment more..區域性變數引用賦值前的結果

17 print(s)

1819

if len(s) == 1:

20 print(result)

21else:

22 func(s)

2324 func(sa)

注意第16行!!!

其實我昨晚執行的時候是有顯示有bug的:

unboundlocalerror: local variable 'result' referenced before assignment

但是今天執行竟然沒有顯示錯誤了!邪了~

local variable 'result' might be referenced before assignment

怎麼解決呢?

我早上又起來試試,在第7行加上result = 0,就可以了!

因為(我覺得)if/elif……裡面都是乙個範圍 ,有對result進行賦值,但在if/elif……外面是看不到的。

相當於區域性變數s 引用了變數result賦值前的結果。

**註明出處,謝謝。

C 語言 區域性變數引用

所謂靜態記憶體分配,就是值我們並沒有鮮明的指明記憶體分配,普通的變數的宣告啦什麼的,都需要記憶體,但是都是由系統自動分配的,所以叫靜態記憶體分配。關鍵點 函式內部的區域性變數,在函式執行完銷毀,之前指向它的指標變得不確定 例如一段程式 void swipe int p 執行結果 p的 999 p的 ...

python函式區域性變數

python簡單變數 不考慮類變數 分為兩類 函式內定義的區域性變數,和函式外定義的全域性變數 基本訪問規則 1.在函式內部,可以直接 讀取訪問全域性變數 注意唯讀 usr bin env python i 10 def f j i 1 讀取全域性變數i f print i d i 2.在函式內部,...

python學習 區域性變數

當你在函式定義內宣告變數的時候,它們與函式外具有相同名稱的其他變數沒有任何關係,即變數名稱對於函式來說是區域性的。這稱為變數的作用域。所有變數的作用域是它們被定義的塊,從它們的名稱被定義的那點開始。例子 1 usr bin python 2 filename func local.py 4 x 50...