zoukankan      html  css  js  c++  java
  • python global

    如果想在函数内部改变函数外的变量值,用global语句完成:

    在不传该变量值入函数的情况下要改变它的值:

    >>> a = 3
    >>> def f():
    ...     global a
    ...     a = a-1
    ...
    >>> f()
    >>> a
    2

    如果不声明global将会报错未找到:

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

    如果是将该变量传参进入函数时,则该变量不变:

    >>> def f(a):
    ...     a = a-1
    ...
    >>> f(a)
    >>> a
    3
    >>> def f(a):
    ...     a = a-1
    ...     return a
    ...
    >>> f(a)
    2
    >>> a
    3
    

    注意,这仅当a为数的时候,当a为list,set,dict,等可切片的时,不用声明global也会改变。

    a为tuple或str时也不会改变(注意因为tuple/str对象的不支持对其中单个元素/字符赋值如:a[0] = "0" #对字符串a第一个元素改变为“0”会报错)

    >>> a = (1,2,3,4)
    >>> a[2] = 1 # 不可对单个改变
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: 'tuple' object does not support item assignment
    >>> def f(a):
    ...     a = (3,4)
    ...     print(a)
    ...
    >>> f(a)
    (3, 4)
    >>> a
    (1, 2, 3, 4)
    
    #####################################
    
    >>> a = "asd"
    >>> def f(a):
    ...     a = a + "00"
    ...     print(a)
    ...
    >>> f(a)
    asd00
    >>> a
    'asd'
    >>> a[0] = "0" # 不可对单个改变
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: 'str' object does not support item assignment

    对于list,set,dict,涉及到切片等操作时,则会改变:

    >>> a = [1,2,3,4]
    >>> def f(a):
    ...     a[-1] = "0"
    ...     print(a)
    ...
    >>> f(a)
    [1, 2, 3, '0']
    >>> a
    [1, 2, 3, '0']
    ##################上面切片下面未切片
    >>> a = [1,2,3,4]>>> def f(a):
    ...     a = [3,4]
    ...     print(a)
    ...
    >>> f(a)
    [3, 4]
    >>> a
    [1, 2, 3, 4]
    #######################
    >>> a = [1,2,3,4]
    >>> def f(a):
    ...     a.append(0)
    ...     print(a)
    ...
    >>> f(a)
    [1, 2, 3, 4, 0]
    >>> a
    [1, 2, 3, 4, 0]
  • 相关阅读:
    性能测试分析
    常见的性能缺陷
    性能测试中TPS上不去的几种原因浅析
    Linux新增和删除环境变量
    JProfiler的详细使用介绍
    详解Tomcat的连接数和线程池
    造数据存储过程
    shell脚本解压多个jar包
    使用shell快速建立上万个文件夹
    df、du命令
  • 原文地址:https://www.cnblogs.com/cymwill/p/8592780.html
Copyright © 2011-2022 走看看