python中為什麼定義函式裡面設定的變數不可用?

時間 2021-05-29 23:38:32

1樓:半個馮博士

上面的朋友已經把根本的問題說清楚了,就是作用域的問題。

其實也有別的解決方案:

deftest

# _1(a):

globalbb

=a+1

print(b

)def

test_2(c

):c=b

+2print(c

)test_1(1

)2test_2(2

)4deffun_1(a

):b=a

+1print

('b: ',b

)def

fun_2(c

):d=c

+bprint

('d: ',d

)fun_2(b

)fun_1(1

)b:2d:4

2樓:一縷詩風

因為在函式裡定義的變數僅作用於本函式!變數都是有作用域的,就像這裡的file作用域僅在what這個方法裡,出了這個函式,file就不存在了,即未定義!如果要問題裡在do函式裡使用file的話,應該把file移到方法外,定義成全域性變數,區域性裡用global宣告下要修改全域性變數,而且open的時候應該為w+,不然後面無法read,修改如下:

file = None

def what(the2):

global file

file = open(the2, 『w+』)

3樓:陳宇軒1

其他人都說了。函式裡面能用外面的變數。反過來不行。

但值得注意的是

如果函式裡面對某個變數賦了值,那麼這個變數就被認定是函式裡面定義的變數了。

這個判定是完全是靜態的。只要是用了=賦值號,就算他是出現在了if 0:分支這樣永遠無法被執行到的地方。

對了。+= def import這樣的也是相當於是賦值了。

(@靈劍 希望我沒說錯吧

Python 裡為什麼函式可以返回乙個函式內部定義的函式?

鋼鐵直男劉昊然 自界說函式的呼叫是經過訪問自界說函式名來完成的,變數 函式名 參量1,參量2,明顯,與呼叫子程式的辦法不同,自界說函式的呼叫遵從內部函式 如Sin Sqr Tan等 的呼叫規矩,自帶參量也有必要用圓括號括起來。參量可所以常量 變數 表示式或陣列變數名。資料的型別應與子程式界說時的參量...

什麼是工廠函式?Python 中工廠函式怎麼理解?

lalaland python class mq object def init self,string c self.config str string cdef print str self print self.config str def crete factory method confi...

C 中是否允許在函式中定義函式?

暗能量泡泡 C 不能支援直接在函式中定義函式。C 11通過支援Lambda函式 實際上是個匿名class的物件 來實現類似功能。其他方式可以使用函式中定義struct class的方式再定義其靜態成員函式的方式來模擬一樣的效果。 Johnny Wong 可以使用class struct的實現,它們支...