iT邦幫忙

0

python 區域變數問題

  • 分享至 

  • xImage
paramA = 1
if paramA == 1:
    paramB = 2
print(paramB)

上面小段程式碼居然可以輸出paramB為2而不報錯? 這在python是允許的?
照理說離開if後變數paramB就不在了

另外

paramA = 1
paramB = 0 #Unused
if paramA == 1:
    paramB = 2
print(paramB)

編譯器對於這段程式碼指出paramB宣告而未使用這又是為什麼?

看更多先前的討論...收起先前的討論...
skyksl066 iT邦新手 4 級 ‧ 2020-10-08 10:33:59 檢舉
建議你買本書從基礎重學...
阿薩姆 iT邦新手 4 級 ‧ 2020-10-08 10:38:06 檢舉
以C語言來說是不可以這樣用的吧, 這樣不是違反直覺嗎
skyksl066 iT邦新手 4 級 ‧ 2020-10-08 10:42:50 檢舉
這是python 很特別的一個部分,基本上就是x=?變數就成立了不用另外宣告
skyksl066 iT邦新手 4 級 ‧ 2020-10-08 10:46:47 檢舉
然後if裡面創的變數在python不會釋放,在class 或 func裡面創的變數才會釋放
wrxue iT邦好手 1 級 ‧ 2020-10-08 10:53:13 檢舉
不要以為甚麼語言都一樣,所有程式語言共通的只有邏輯(變數、條件、迴圈、物件等),如何實現這些邏輯是各程式語言的特點
阿薩姆 iT邦新手 4 級 ‧ 2020-10-08 10:54:38 檢舉
OK, 你要正式回答嗎 @skyksl066
skyksl066 iT邦新手 4 級 ‧ 2020-10-08 10:56:34 檢舉
不用,我給建議而已
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

1
石頭
iT邦研究生 4 級 ‧ 2020-10-08 10:45:48
最佳解答

PYTHON 是非常自由的
適合初學者放飛自我

skyksl066 iT邦新手 4 級 ‧ 2020-10-08 10:48:29 檢舉

在C裡面一堆麻煩的規矩都沒有,唯一特別要遵守的就是階層而已

echochio iT邦高手 1 級 ‧ 2020-10-09 08:38:43 檢舉

想說啥叫區域變數 ...
像是 __paramB __ 這用法在 Python 才叫區域變數吧

3
一級屠豬士
iT邦大師 1 級 ‧ 2020-10-08 11:37:33

Python Reference Manual 裡有說明了 code block

https://docs.python.org/2.0/ref/execframes.html

https://ithelp.ithome.com.tw/upload/images/20201008/200506474TzhJ8eIsO.png

我要發表回答

立即登入回答