18-变量

作者: 努力爬行中的蜗牛 | 来源:发表于2018-10-28 20:50 被阅读0次
    变量的引用
    • 变量和数据都是保存在内存中的
    • 在python中,函数的参数传递以及返回值都是靠引用传递的

    引用的概念
    在python中,

    • 变量和数据是分开存储的
    • 数据保存在内存中的一个位置
    • 变量中保存着数据在内存中的地址
    • 变量中记录数据的地址,就叫做引用
    • 使用id()函数可以查看变量中保存数据所在的内存地址

    注意:如果变脸已经被定义,当给一个变量赋值时,本质上是修改了数据的引用

    调用函数实质传递实参的引用
    函数返回值传递引用

    可变类型和不可变类型

    不可变类型:内存中的数据不允许被修改

    • 数字类型:int float bool complex
    • 字符串:str
    • 元组:tuple

    可变类型:内存中的数据允许被修改

    • 列表:list
    • 字典:dict

    注意:字典中的key,只能使用不可变类型的数据类型。

    哈希(hash)

    python中内置有一个名字叫做hash(o)的函数

    • 接收一个不可变类型的数据作为参数
    • 返回结果是一个整数

    哈希是一种算法,其作用就是提取数据的特征码(指纹)

    • 相同的内容得到相同的结果
    • 不同的内容得到不同的结果

    在python中,设置字典的键值对时,会首先对数据的key进行hash,以决定如何在内存中保存字典的数据,一遍后续对字典的增、删、改、查操作。

    • 键值对的key必须是不可变类型的数据
    • 键值对的值可以是任何类型的数据
    局部变量和全局变量

    局部变量

    • 函数内部定义的变量,只能在函数内部使用
    • 函数执行结束后,函数内部的变量会被系统回收

    全局变量

    • 函数外部定义的变量,可以再所有函数中使用
    • 在函数内部,可以直接引用全局变量函数的数据,但不允许直接修改全局变量的值(使用赋值语句),如果使用赋值语句,会定义一个和全局变量同名的局部变量
    global关键字修改全局变量值
    # 全局变量
    num = 10
    
    
    def demo1():
        # 希望修改全局变量- 使用global声明一下变量即可
        global num
        num = 99
        print("demo1 => %d" % num)
    
    
    def demo2():
        print("demo2 => %d" % num)
    
    demo1()
    demo2()
    

    定义全局变量,最好定义再所有函数的最上方,这样所有位置的函数均可使用该变量。
    代码结构示意图

    • Shebang
    • import模块
    • 全局变量
    • 函数定义
    • 执行代码
    全局变量的命名

    全局变量前增加g_,或者gl_

    相关文章

      网友评论

          本文标题:18-变量

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