Python 二级考试的两个关于函数 与 列表的问题

此处的ls 为列表,在函数中可以对列表进行修改

在这里插入图片描述

而这个问题中 却没有发生改变

在这里插入图片描述

问题所在,第二题中的函数内部的img1 与外部的 img1 不是同一个内存地址
而第一个问题中的ls为外部的全局变量

下面的执行结果说明 不是同一个变量【这里说明一下 其实函数内部img1变量与外部的img2的地址是一样的】
在这里插入图片描述

python 变量赋值都是 【引用赋值、而不是值赋值】

在这里插入图片描述

说一下 内变量的理解(个人理解,可能有不对的地方希望指导)

  1. 普通变量
  • 此时的两个变量使用的不是同一个内存地址
a = 10  #a 为全局变量
def num():
	a = 20  #a 为局部变量
	print("函数内部a=",id(a))
num()
print("函数外部a=",id(a))

在这里插入图片描述

  • 若想使用外部的全局变量 使用关键字global
a = 10  #a 为全局变量
def num():
	global a
	a = 20  #a 此时引用的是全局变量
	print("函数内部a=",id(a))
num()
print("函数外部a=",id(a))

在这里插入图片描述

  • 若函数中引用没有定义的局部变量,则会在全局变量中寻找
a = 10  #a 为全局变量
b = 1
def num():
	a = b  #此时函数内部没有局部变量b,则会使用全局变量
	print("函数内部a=",id(a))
num()
print("函数外部b=",id(b))
print("函数外部a=",id(a))

在这里插入图片描述

  • 若全局变量不存在,则会报错
a = 10  #a 为全局变量
#b = 1
def num():
	a = b  #此时函数内部没有局部变量b,则会使用全局变量
	print("函数内部a=",id(a))
num()
print("函数外部b=",id(b))
print("函数外部a=",id(a))

在这里插入图片描述

  1. 上述中 若变量为列表
  • 在函数中,若应用全局列表会改变列表的值【如题1】
  • 若在函数中重新创建一个列表 进行赋值不是去改变则重新建立列表【如题2】
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值