python_进阶_01


变量的引用

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)))
  • 不可变类型

    1. 数字
    2. 字符
    3. 元组
  • 可变类型

    1. 列表

    2. 字典

      方法不会改变数据的地址,而赋值会改变

==不可变类型可以作为字典的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的前缀


文章作者: 张忠楠
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 张忠楠 !
评论
 上一篇
python_进阶_02 python_进阶_02
函数的返回值 def measure(): """测量湿度和温度""" print("测量开始...") temp = 39 wetness = 50 print("测量结束...")
2020-04-18
下一篇 
python_基础_20 python_基础_20
名片管理系统 框架搭建 创建一个cards_main.py文件 #! /Users/zhangzhongnan/Anaconda/anaconda3/bin/python3 import cards_tools # 无限循
2020-04-17
  目录