变量的引用
def test(num):
print("在函数内部%d对应的内存地址是%d" % (num,id(num)))
# 定义一个字符串变量
result = "hello"
print("函数要返回数据的内存地址是 %d" % id(result))
# 将字符串变量返回,返回的是数据的引用,而不是数据本身
return result
# 定义一个数字的变量
a = 10
# 数据的地址本质上就是一个数字
print("a 变量保存数据的内存地址是%d" % id(a))
# 调用test函数,本质上传递的是实惨保存数据的引用,而不是实惨保存的数据!
# 如果函数有返回值,但是没有定义变量接受
# 程序不会报错,但是无法获得返回结果
r = test(a)
print("%s的内存地址是%d" % (r,id(r)))
不可变类型
- 数字
- 字符
- 元组
可变类型
列表
字典
方法不会改变数据的地址,而赋值会改变
==不可变类型可以作为字典的key, 可变类型不行==
局部变量就是函数内部的变量, 只能在函数内部使用
def demo1():
# 定义一个局部变量
# 1> 出生:执行下方的代码之后才会被创建
# 2> 死亡:函数执行完成之后
num = 10
print("在demo1函数内部的变量是%d" % num)
def demo2():
# print("%d" % num)
pass
# 在函数内部定义的变量,不能在其它位置使用
# print("%d" % num)
demo1()
demo2()
全局变量
# 注意:在开发时,应该把模块中的所有全局变量
# 定义在所有函数上方,就可以保证所有的函数
# 都能够正常的访问到每一个全局变量了
# 定义一个全局变量(函数外部的变量)
num = 10
def demo1():
# 希望修改全局变量的值 - 使用 global 声明一下变量即可
# global 关键字会告诉解释器后面的变量是一个全局变量
# 再使用赋值语句时,就不会创建局部变量
global num
num = 99
print("demo1==>%d" % num)
print("%s" % name)
def demo2():
print("demo2==>%d" % num)
print("%s" % name)
demo1()
demo2()
# 再定义一个全局变量
name = "小明"
全局变量在函数调用后时会报错
在定义全局变量时,可在名字前加g
或者gl
的前缀