美文网首页
python中的变量

python中的变量

作者: 指向远方的灯塔 | 来源:发表于2018-10-27 11:21 被阅读0次

    1 变量
    1.1 变量的分类
    全局变量:
    作用于全局,永久保存,既能一个函数中使用又能同时在其他函数中使用

    局部变量:
    作用于函数内部,不同函数可以定义相同名字的局部变量,但是各个之间不会
    产生相互影响。为了临时保存数据需要在函数中定义变量来进行存储,节省内存的消耗
    函数运行后就不存在了。

    1.2 全局变量与局部变量名字相同时----就近原则

    a=100
    def foo1():
    a=200
    print(a) #200
    def foo2():
    a=300
    print(a) #300
    def foo3():
    print(a) #100
    print('*****1*****')
    print(a)
    print('*****2*****')
    foo1()
    print('*****3*****')
    foo2()
    print('*****4******')
    foo3()
    结论:根据以上代码,我们发现,当函数中有名字相同的局部变量时,函数中返回局部变量的值,当函数没有名字相同的局部变量时,函数中返回全局变量的值。在函数外调用变量时,直接返回全局变量的值。

    1.3 修改全局变量
    对于全局变量的修改,根据位置的不同,以及变量类型的不同,有不同的修改方式。
    1.3.1 在函数外修改时
    对于函数外即全局变量的位置,直接可以进行修改,例如:
    a=100
    a=200
    print(a) #a=200
    1.3.2 在局部变量的位置即在函数中进行修改时,具体的要看全局变量的类型

    全局变量分为可变类型和不可变类型。在python中一共有6中数据类型。其中可变类型为:列表(list),集合(set),字典(dict)。不可变类型:数字(number),字符串(string),元组(tuple)。在局部位置修改可变类型的全局变量时,要保证该位置的变量是全局变量而不是名字相同的局部变量,可以将全局变量作为参数传递给对应函数。具体做法请参考代码(见下方)。

    (1)对于不可变类型的修改,要在函数中使用global
    在函数中不使用global声明全局变量时不能修改全局变量,其本质:不能修改全局变量的指向,既不能使那个全局变量指向新的数据

    a=1
    def demo4(a):
    a += 1#a = a + 1
    print(a)
    demo4(a) #2
    print(a) #1 直接修改无法实现

    a = 1
    def demo4():
    global a
    a += 1#a = a + 1
    print(a)
    demo4() #2
    print(a) #2 用global可以实现修改

    (2)对于可变类型的修改,可以直接进行

    cc = [1,2]
    def demo2(cc):
    cc += cc
    print(cc)

    demo2(cc) #[1,2,1,2]
    print(cc) #[1,2,1,2]

    当然,用global也可以实现
    cc = [1,2]
    def demo2():
    global cc
    cc += cc #cc = cc+cc [1,2,1,2]
    print(cc)

    demo2() #[1,2,1,2,]
    print(cc) #[1,2,1,2]

    结论:变量分为不可变和可变两种,两者都可以用global进行修改。对于可变类型还可以直接以传参形式进行修改。

    相关文章

      网友评论

          本文标题:python中的变量

          本文链接:https://www.haomeiwen.com/subject/brortqtx.html