"""
演示引用
"""
"""
❤ 引用就是变量指向数据存储空间的现象

❤ 相同数据(不可变类型)使用同一个空间存储, 节约内存占用

❤ 使用 id(数据) 操作可以获取到数据存储的内存空间引用地址	

"""

# 变量是一个箱子,是一个容器,可以用来保存数据,,推翻掉 >>> 引用
# a = 1  # 整型  a → 1
# print(a)
# b = 'hello'  # 字符串
# c = [1,2,3]  # 列表
#
# # a = 1  # a  →  1 (101) 拆掉 引用关系
# a = 2  # a  →  2 (102)


"""
1, 1, 2, 3, 5, 8
假设demo(5) 得到的是斐波那契额数列第五个值 5
假设demo(3) 得到的是斐波那契额数列第三个值 2
假设demo(4) 得到的是斐波那契额数列第四个值 3
       5  =     3       +   2
那么demo(5) = demo(5-1) +  demo(5-2)
    demo(5) =  demo(4)  + demo(3)

函数名():
1.会执行函数里面的代码,
2.执行完代码之后,本身就代表返回值
"""

#
# 相同数据(不可变类型)使用同一个空间存储, 节约内存占用
# 使用 id(数据) 操作可以获取到数据存储的内存空间引用地址
# a = 1  # a  → 1
# print(id(a))  # a 的内存地址 id(1)
# b = 1
# print(id(b))  # 如果他们的值相同


# 可变类型
# list1 = [1,2,3]
# list2 = [1,2,3]
#
# print(id(list1))  # 打印list1指向的[1,2,3]的地址
# print(id(list2))  # 打印list2指向的[1,2,3]的地址


# list1 = [1,2,3]
# print(id(list1))  # 打印列表[1,2,3]的内存地址值(门牌号)
# print(id(list1[0]))  # 打印数据 1 的内存地址值(门牌号)
# print(id(list1[1]))  # 打印数据 2 的内存地址值(门牌号)
# print(id(list1[2]))  # 打印数据 3 的内存地址值(门牌号)
# # 如果门牌号是一模一样的, 那么就说明他们在同一个地方
# 内存地址值不一样



# 函数
def demo1():  # 函数名 变量名
    print('bobo老师无敌帅气')

# demo1()
aaa = demo1  # 指向了函数内部的代码空间  aaa也指向了这片代码空间 aaa → demo1

demo1()  # 函数的调用, 跟着引用箭头去那片空间里面执行代码

aaa()  # 函数的调用, 跟着引用箭头去那片空间里面执行代码

# 名称虽然不同,, 但是却指向了同一片内存空间, 因为调用函数之后,, 结果是一样的

























































































































































