zoukankan      html  css  js  c++  java
  • Python的局部变量和全局变量

    在python中,引用全局变量有些特殊的地方。我们来看代码例子。

    >>> num=1
    >>> def test():
    ...     print num
    ...     value = num+1
    ...     print value
    ...
    >>> test()
    1
    2

    上面代码先定义了一个全局变量num,这时我们就可以在函数内部随便使用这个全局变量。

    但是如果我们要在函数内部修改全局变量,写法就有些特殊了,如:

    >>> num=1
    >>> def test():
    ...     num=2
    ...     print num
    ...
    >>> test()
    2
    >>> num
    1

    可以看出,在函数内部 num=2 操作并不是对全局变量操作,而是产生一个新的局部变量。对全局变量没有任何影响。
    某些情况下,还会报错,如:

    >>> num=1
    >>> def test():
    ...     num=num+1
    ...
    >>> test()
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "<stdin>", line 2, in test
    UnboundLocalError: local variable 'num' referenced before assignment

    从报错的信息看,在test函数内,仍然把num当作局部变量,但因为没有赋值前就被引用,所以报错。

    要想在函数内,引用全局变量,正确的做法是需要先通过 global 关键字引用一下,如:

    >>> num=1
    >>> def test():
    ...     global num
    ...     num=num+1
    ...     print num
    ...
    >>> test()
    2
    >>> num
    2

    可以看出,用global关键字标识下后,就可以在函数内使用了。

    当然,需要强调一下,正常在应用开发中,我们应该避免使用全局变量,这里是从语法角度来解释下。

  • 相关阅读:
    浏览器兼容之background-size
    bootstrap学习之全局样式
    bootstrap dropdown的点击变为:hover 后自动下拉
    看完了《缔造企鹅》
    2015年阅读记录
    博士论文致谢 作一下
    如何将Visio转化为EPS? For Latex
    《乌合之众》 古斯塔夫·勒庞
    笑傲江湖
    社会化推荐(一) 理论和实践 对科学的思考
  • 原文地址:https://www.cnblogs.com/51kata/p/5435847.html
Copyright © 2011-2022 走看看