变量的引用
引用的概念
引用的示例
函数的参数和返回值的传递
函数的实参/返回值都是靠引用来传递的
def test(num):
print("在函数内部 %d 对应的内存地址是 %d" % (num, id(num)))
# 1> 定义一个字符串变量
result = "hello"
print("函数要返回数据的内存地址是 %d" % id(result))
# 2> 将字符串变量返回,返回的是数据的引用,而不是数据本身
return result
#1、定义一个数字的变量
a =10
#数据的地址本质上就是一个数字
print("a 变量保存数据的内存地址是 %d" % id(a))
#2、调用 test 函数,本质上传递的是实参保存数据的引用,而不是实参保存的数据
# 注意:如果函数有返回值,但是没有定义变量接收
# 程序不会报错,但是无法获得返回结果
r = test(a)
print("%s 的内存地址是 %d" % (r, id(r)))
可变和不可变类型
哈希(hash)
局部变量和全局变量
局部变量
def demo1():
#定义一个局部变量
# 1>出生:执行了下面的代码后,才会被创建
# 2>死亡:函数执行完成后就死亡释放
num = 10
print("在 demo1 函数内部的变量是 %d" % num)
def demo2():
num = 99
print("%d" % num)
pass
#在函数内部定义得到变量,不能在其他位置使用
#print("%d" % num)
demo1()
demo2()
全局变量
全局变量是定义在函数外部的变量,所有函数都可调用,需要定义在其它函数的上方
全局变量命名建议:前面加 g_ 或者 gl_ 前缀
#全局变量
num = 10
def demo1():
# 希望修改全军变量的值
# 在 python 中,是不允许直接修改全局变量的值
# 如果使用赋值语句,会在函数内部,定义一个局部变量
num = 99
print("demo1 ==> %d" % num)
def demo2():
print("demo2 ==> %d" % num)
demo1()
demo2()