作者sbrhsieh (sbr)
看板Python
标题Re: [问题] 关於全域变数
时间Wed Dec 24 00:12:10 2008
※ 引述《rushcat (嗯)》之铭言:
: 不太懂关於全域变数的用法
: ==============================
: global x
: x = 0
: def A():
: x = 10
: B()
: def B():
: x = 20
: ==============================
: 明明宣告了 x 全域变数
: 但是子程式赋予x的值 似乎仅对子程式里的x有作用
: 想请问 这样全域变数的意义是什麽 XD?
: 另外想请问 如果真的需要做全域变数 该怎麽作比较适当!?
global directive 通常不是这样使用。
global 用在 nested scope 可以让接下来对被指定的 symbol 作
assignment 的语意改变:
x = 0
def A():
global x
x = 10
B()
def B():
x = 20
print x ### output: 0
A()
print x ### output: 10
如果 function: A 里没有
global x statement(应该比较接近 directive),
那麽
x = 10 这个 statement 会把 int object bind 到 function A 执行
时的 local namespace dictionary,而不是 global dictionary。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.173.136.126
※ 编辑: sbrhsieh 来自: 218.173.136.126 (12/24 00:15)
※ 编辑: sbrhsieh 来自: 218.173.136.126 (12/24 00:29)
1F:推 rushcat:谢谢你!!! 我刚以为我想通了 就删文了 真不好意思XD 12/24 00:35
2F:→ rushcat:因为习惯写VB 所以还不太能改变思考模式XD 12/24 00:35
3F:推 cobrasgo:其实最好尽量不要用到global吧,看看能不能包起来 01/02 13:00