|
View:
New views
13 Messages
—
Rating Filter:
Alert me
|
|
|
Python变量的作用域有人愿意谈谈吗,感觉很怪异啊Python变量的作用域有人愿意谈谈吗,感觉很怪异啊,跟传统的C/C++,Java等都不同啊。
Python是不是没有块(Block Scope)方式的作用域的呢? Python支持词法边界吗,比如Lua那样的内层函数可以直接访问外层函数的变量,产生一个闭包。 def fun(): if True: a=10 else: b=a print a # 这里可以访问if Block里的变量 def fun2(): try: a=1 raise 'err' except: b=a print b # 这里可以访问Try Block里的变量 fun() fun2() 这样也可以运行。 |
|
|
[CPyUG:109667] Re: Python变量的作用域有人愿意谈谈吗,感觉很怪异啊2009/11/19 christanxw <christanxw@...>:
> > > Python变量的作用域有人愿意谈谈吗,感觉很怪异啊,跟传统的C/C++,Java等都不同啊。 > Python是不是没有块(Block Scope)方式的作用域的呢? > Python支持词法边界吗,比如Lua那样的内层函数可以直接访问外层函数的变量,产生一个闭包。 3.0 可以,增加了一个关键词 > > def fun(): > if True: > a=10 > else: > b=a 此处不可能执行到的 > print a # 这里可以访问if Block里的变量 > > def fun2(): > try: > a=1 > raise 'err' > except: > b=a > print b # 这里可以访问Try Block里的变量 > > fun() > fun2() > > 这样也可以运行。 > > -- > View this message in context: http://old.nabble.com/Python%E5%8F%98%E9%87%8F%E7%9A%84%E4%BD%9C%E7%94%A8%E5%9F%9F%E6%9C%89%E4%BA%BA%E6%84%BF%E6%84%8F%E8%B0%88%E8%B0%88%E5%90%97%EF%BC%8C%E6%84%9F%E8%A7%89%E5%BE%88%E6%80%AA%E5%BC%82%E5%95%8A-tp26421058p26421058.html > Sent from the python-chinese @ googlegroups mailing list archive at Nabble.com. > > > > > --~--~---------~--~----~------------~-------~--~----~ 来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:python-cn@... 退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc 详情: https://groups.google.com/group/python-cn 严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp -~----------~----~----~----~------~----~------~--~--- |
|
|
[CPyUG:109675] Re: Python变量的作用域有人愿意谈谈吗,感觉很怪异啊2009/11/19 christanxw <christanxw@...>:
> > > Python变量的作用域有人愿意谈谈吗,感觉很怪异啊,跟传统的C/C++,Java等都不同啊。 > Python是不是没有块(Block Scope)方式的作用域的呢? > Python支持词法边界吗,比如Lua那样的内层函数可以直接访问外层函数的变量,产生一个闭包。 > > def fun(): > if True: > a=10 > else: > b=a > print a # 这里可以访问if Block里的变量 > > def fun2(): > try: > a=1 > raise 'err' > except: > b=a > print b # 这里可以访问Try Block里的变量 > > fun() > fun2() > > 这样也可以运行。 > > 在python里,只有模块,类和函数这三样才是变量的作用域. if, try, for 都不是单独的作用域. 所以在if里定义的变量在外面还可以用 -- Best Regards, Leo Jay --~--~---------~--~----~------------~-------~--~----~ 来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:python-cn@... 退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc 详情: https://groups.google.com/group/python-cn 严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp -~----------~----~----~----~------~----~------~--~--- |
|
|
[CPyUG:109683] Re: Python变量的作用域有人愿意谈谈吗,感觉很怪异啊2009/11/19 christanxw <christanxw@...>
else: def fun2(): 上面的a应该可以看成self.a吧? 这样也可以运行。 --~--~---------~--~----~------------~-------~--~----~ 来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:python-cn@... 退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc 详情: https://groups.google.com/group/python-cn 严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp -~----------~----~----~----~------~----~------~--~--- |
|
|
[CPyUG:109687] Re: Python变量的作用域有人愿意谈谈吗,感觉很怪异啊2009/11/19 christanxw <christanxw@...>:
> Python支持词法边界吗,比如Lua那样的内层函数可以直接访问外层函数的变量,产生一个闭包。 目前的 python 不支持 closure。 --~--~---------~--~----~------------~-------~--~----~ 来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:python-cn@... 退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc 详情: https://groups.google.com/group/python-cn 严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp -~----------~----~----~----~------~----~------~--~--- |
|
|
[CPyUG:109691] Re: Python变量的作用域有人愿意谈谈吗,感觉很怪异啊不应该从C++或者Java的角度去理解变量,因为那些变量都是显示定义的,Python中的变量,都是运行时产生的,一旦产生,哪儿都可以访问,模块中的变量,就是模块级别的,可以通过locals()函数得到。 2009/11/19 pan shizhu <pan.shizhu@...> 2009/11/19 christanxw <christanxw@...>: -- To be pythoner My blog: http://www.cnblogs.com/ubunoon/ --~--~---------~--~----~------------~-------~--~----~ 来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:python-cn@... 退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc 详情: https://groups.google.com/group/python-cn 严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp -~----------~----~----~----~------~----~------~--~--- |
|
|
[CPyUG:109692] Re: Python变量的作用域有人愿意谈谈吗,感觉很怪异啊说个名词把:LGV(local, global, var)
-- BLOG: http://chenxiaoyu.org/blog 俺名字拼音,囧把!~ PYCN: http://pythonchina.org 2009/11/19 ubunoon <netubu@...>
--~--~---------~--~----~------------~-------~--~----~ 来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:python-cn@... 退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc 详情: https://groups.google.com/group/python-cn 严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp -~----------~----~----~----~------~----~------~--~--- |
|
|
[CPyUG:109693] Re: Python变量的作用域有人愿意谈谈吗,感觉很怪异啊2009/11/19 pan shizhu <pan.shizhu@...> 2009/11/19 christanxw <christanxw@...>: 原来不支持啊,我一直以为python支持closure啊 --~--~---------~--~----~------------~-------~--~----~ 来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:python-cn@... 退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc 详情: https://groups.google.com/group/python-cn 严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp -~----------~----~----~----~------~----~------~--~--- |
|
|
[CPyUG:109697] Re: Python变量的作用域有人愿意谈谈吗,感觉很怪异啊不是说3.0已经支持了吗?
|
|
|
[CPyUG:109723] Re: Python变量的作用域有人愿意谈谈吗,感觉很怪异啊2009/11/19 欧阳鸿宇 <ouyanghongyu@...>
你这个self是哪儿来的? --~--~---------~--~----~------------~-------~--~----~ 来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:python-cn@... 退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc 详情: https://groups.google.com/group/python-cn 严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp -~----------~----~----~----~------~----~------~--~--- |
|
|
[CPyUG:109730] Re: Python变量的作用域有人愿意谈谈吗,感觉很怪异啊但是目前大家用的环境都是 2.5 2.6 之类的。
所以我说"目前"的python不支持。 On Nov 19, 4:24 pm, 四不象 <tabris17...@...> wrote: > 不是说3.0已经支持了吗? > > ----- Original Message ----- > From: Heroboy > To: python-cn@... > Sent: Thursday, November 19, 2009 4:10 PM > Subject: [CPyUG:109693] Re: Python变量的作用域有人愿意谈谈吗,感觉很怪异啊 > > 2009/11/19 pan shizhu <pan.shi...@...> > > 2009/11/19 christanxw <christa...@...>: > > Python支持词法边界吗,比如Lua那样的内层函数可以直接访问外层函数的变量,产生一个闭包。 > > 目前的 python 不支持 closure。 > > 原来不支持啊,我一直以为python支持closure啊 > > 来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:python-cn@... 退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc 详情: https://groups.google.com/group/python-cn 严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp -~----------~----~----~----~------~----~------~--~--- |
|
|
[CPyUG:109750] Re: Python变量的作用域有人愿意谈谈吗,感觉很怪异啊Python访问外层函数的变量可以如下写,因为Python可以读外层变量的值,但是不能修改外层变量,因此需要用一个可以修改内容的list,
Python3中可以用nonlocal关键字声明写外层变量: def outer(v): x = [v] def inner_read(): return x[0] def inner_inc(): x[0] += 1 return inner_read, inner_inc >>> r,i = outer(0) >>> r() 0 >>> i() >>> r() 1 >>> i() >>> r() 2 >>> i() >>> r() 3 On 11月19日, 午後3:35, christanxw <christa...@...> wrote: > Python变量的作用域有人愿意谈谈吗,感觉很怪异啊,跟传统的C/C++,Java等都不同啊。 > Python是不是没有块(Block Scope)方式的作用域的呢? > Python支持词法边界吗,比如Lua那样的内层函数可以直接访问外层函数的变量,产生一个闭包。 > > def fun(): > if True: > a=10 > else: > b=a > print a # 这里可以访问if Block里的变量 > > def fun2(): > try: > a=1 > raise 'err' > except: > b=a > print b # 这里可以访问Try Block里的变量 > > fun() > fun2() > > 这样也可以运行。 > > -- > View this message in context:http://old.nabble.com/Python%E5%8F%98%E9%87%8F%E7%9A%84%E4%BD%9C%E7%9... > Sent from the python-chinese @ googlegroups mailing list archive at Nabble.com. 来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:python-cn@... 退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc 详情: https://groups.google.com/group/python-cn 严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp -~----------~----~----~----~------~----~------~--~--- |
|
|
[CPyUG:109766] Re: Python变量的作用域有人愿意谈谈吗,感觉很怪异啊请看Lerning Python
2009/11/20 HYRY <ruoyu0088@...> Python访问外层函数的变量可以如下写,因为Python可以读外层变量的值,但是不能修改外层变量,因此需要用一个可以修改内容的list, --~--~---------~--~----~------------~-------~--~----~ 来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:python-cn@... 退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc 详情: https://groups.google.com/group/python-cn 严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp -~----------~----~----~----~------~----~------~--~--- |
| Free embeddable forum powered by Nabble | Forum Help |