2006年02月14日 星期二 10:56
在python中函数中是不是定义一个变量,它的作用域是在一个函数体内 例如: def test(): for k in range(5): print k print k 这里变量k出了for循环体,还是合法的,可用的 在java中下面是不合法的 public void test(){ for (int i = 0; i < 5; i++) { System.out.println(i); } System.out.println(i); } 这里的i是在for循环体中定义的,它的作用域只存在for循环体中 在python中变量的作用域没有像在java中代码块的范围? 像在if ,try, for等中定义新的变量,出了这些代码块,所定义的变量依旧是可用的 -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20060214/a8d4e03a/attachment.html
2006年02月14日 星期二 11:03
On 2/14/06, wu wunc <superwunc at gmail.com> wrote: > 在python中函数中是不是定义一个变量,它的作用域是在一个函数体内 > 例如: > def test(): > for k in range(5): > print k > print k > 这里变量k出了for循环体,还是合法的,可用的 > 在java中下面是不合法的 > public void test(){ > for (int i = 0; i < 5; i++) { > System.out.println(i); > > } > System.out.println(i); > > } > 这里的i是在for循环体中定义的,它的作用域只存在for循环体中 > > 在python中变量的作用域没有像在java中代码块的范围? > 像在if ,try, for等中定义新的变量,出了这些代码块,所定义的变量依旧是可用的 > 应该是这样的。 -- I like python! My Blog: http://www.donews.net/limodou NewEdit Maillist: http://groups.google.com/group/NewEdit
2006年02月16日 星期四 09:14
在Python中,确实只有在执行def和class语句的时候会产生新的作用域,至少根据我现在对Python源码的认识是这样的。而if,try,for等语句的执行不会产生新的作用域。 Robert Python源码剖析 :http://blog.donews.com/lemur/ On 2/14/06, limodou <limodou at gmail.com> wrote: > > On 2/14/06, wu wunc <superwunc at gmail.com> wrote: > > 在python中函数中是不是定义一个变量,它的作用域是在一个函数体内 > > 例如: > > def test(): > > for k in range(5): > > print k > > print k > > 这里变量k出了for循环体,还是合法的,可用的 > > 在java中下面是不合法的 > > public void test(){ > > for (int i = 0; i < 5; i++) { > > System.out.println(i); > > > > } > > System.out.println(i); > > > > } > > 这里的i是在for循环体中定义的,它的作用域只存在for循环体中 > > > > 在python中变量的作用域没有像在java中代码块的范围? > > 像在if ,try, for等中定义新的变量,出了这些代码块,所定义的变量依旧是可用的 > > > > 应该是这样的。 > > -- > I like python! > My Blog: http://www.donews.net/limodou > NewEdit Maillist: http://groups.google.com/group/NewEdit > > _______________________________________________ > python-chinese > Post: send python-chinese at lists.python.cn > Subscribe: send subscribe to python-chinese-request at lists.python.cn > Unsubscribe: send unsubscribe to python-chinese-request at lists.python.cn > Detail Info: http://python.cn/mailman/listinfo/python-chinese > > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20060216/af002a4e/attachment.html
2006年02月16日 星期四 12:36
if,try,for等语句的执行不会产生新的作用域。这是因为: 它们是语句,是语言的一部分。python文档中应有说明的: A scope is a textual region of a Python program where a namespace is directly accessible. ``Directly accessible'' here means that an unqualified reference to a name attempts to find the name in the namespace. Although scopes are determined statically, they are used dynamically. At any time during execution, there are at least three nested scopes whose namespaces are directly accessible: the innermost scope, which is searched first, contains the local names; the namespaces of any enclosing functions, which are searched starting with the nearest enclosing scope; the middle scope, searched next, contains the current module's global names; and the outermost scope (searched last) is the namespace containing built-in names. On 2/16/06, Robert Chen <search.pythoner at gmail.com> wrote: > 在Python中,确实只有在执行def和class语句的时候会产生新的作用域,至少根据我现在对Python源码的认识是这样的。而if,try,for等语句的执行不会产生新的作用域。 > > > Robert > Python源码剖析 :http://blog.donews.com/lemur/ > > > On 2/14/06, limodou <limodou at gmail.com> wrote: > > > > On 2/14/06, wu wunc <superwunc at gmail.com> wrote: > > > 在python中函数中是不是定义一个变量,它的作用域是在一个函数体内 > > > 例如: > > > def test(): > > > for k in range(5): > > > print k > > > print k > > > 这里变量k出了for循环体,还是合法的,可用的 > > > 在java中下面是不合法的 > > > public void test(){ > > > for (int i = 0; i < 5; i++) { > > > System.out.println(i); > > > > > > } > > > System.out.println(i); > > > > > > } > > > 这里的i是在for循环体中定义的,它的作用域只存在for循环体中 > > > > > > 在python中变量的作用域没有像在java中代码块的范围? > > > 像在if ,try, for等中定义新的变量,出了这些代码块,所定义的变量依旧是可用的 > > > > > > > 应该是这样的。 > > > > -- > > I like python! > > My Blog: http://www.donews.net/limodou > > NewEdit Maillist: http://groups.google.com/group/NewEdit > > > > _______________________________________________ > > python-chinese > > Post: send python-chinese at lists.python.cn > > Subscribe: send subscribe to > python-chinese-request at lists.python.cn > > Unsubscribe: send unsubscribe to > python-chinese-request at lists.python.cn > > Detail Info: > http://python.cn/mailman/listinfo/python-chinese > > > > > > > _______________________________________________ > python-chinese > Post: send python-chinese at lists.python.cn > Subscribe: send subscribe to > python-chinese-request at lists.python.cn > Unsubscribe: send unsubscribe to > python-chinese-request at lists.python.cn > Detail Info: > http://python.cn/mailman/listinfo/python-chinese > > -- ■■■■■■■■■■■■■■■■■■■■■ Myblog: http://blog.donews.com/ygao/ http://groups.google.com/group/python_study ■■■■■■■■■■■■■■■■■■■■■
2006年02月20日 星期一 10:50
在def中附值的变量均在local作用域中,因此在附值之后,可随时使用变量 ----- Original Message ----- From: wu wunc To: python-chinese at lists.python.cn Sent: Tuesday, February 14, 2006 10:56 AM Subject: [python-chinese] python中变量的作用域 在python中函数中是不是定义一个变量,它的作用域是在一个函数体内 例如: def test(): for k in range(5): print k print k 这里变量k出了for循环体,还是合法的,可用的 在java中下面是不合法的 public void test(){ for (int i = 0; i < 5; i++) { System.out.println(i); } System.out.println(i); } 这里的i是在for循环体中定义的,它的作用域只存在for循环体中 在python中变量的作用域没有像在java中代码块的范围? 像在if ,try, for等中定义新的变量,出了这些代码块,所定义的变量依旧是可用的 ------------------------------------------------------------------------------ _______________________________________________ python-chinese Post: send python-chinese at lists.python.cn Subscribe: send subscribe to python-chinese-request at lists.python.cn Unsubscribe: send unsubscribe to python-chinese-request at lists.python.cn Detail Info: http://python.cn/mailman/listinfo/python-chinese -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20060220/87094bac/attachment.html
Zeuux © 2025
京ICP备05028076号