被释放是什么意思?简单数据类型全局变量在函数内部用时为什么要声明?
这是在哪做题的呀? 14题list1 =
list2 =
dict1 = {"1": 1}
set1 = {1, }
def mq():
list1 =
print(list1, list2, dict1, set1)
mq()
输出
{'1': 1} {1}
1、列表是可以全局引用的
2、函数内有和外边一样的变量,优先用函数内定义的
3、组合数据就是字典,序列,集合,这些都是可以全局引用,如果外面定义了,不会再去定义一个新对象
15 不用说了吧,局部变量再函数退出后就被回收了
被释放就是变量的内存空间被系统回收,是py的保护机制
简单数据类型,如果你不声明全局global标志,你在函数中改变的话,外边是不会改变的
def mq():
list1 =
a = 2
print(id(list1))
print(id(a))
print(list1, list2, dict1, set1, a)
list1 =
list2 =
dict1 = {"1": 1}
set1 = {1, }
a = 1
mq()
print(a)
、
输出
{'1': 1} {1} 2
1
大马强 发表于 2022-2-27 09:53
被释放就是变量的内存空间被系统回收,是py的保护机制
简单数据类型,如果你不声明全局global标志,你在 ...
我在想16题,协程函数怎么算的 isdkz 发表于 2022-2-27 09:40
这是在哪做题的呀?
学校给的测试题 大马强 发表于 2022-2-27 09:53
被释放就是变量的内存空间被系统回收,是py的保护机制
简单数据类型,如果你不声明全局global标志,你在 ...
我只是在函数内部使用全局变量,但不修该它,为什么还要申明 Stubborn 发表于 2022-2-27 10:59
我在想16题,协程函数怎么算的
先不说协程函数,哪怕是普通的函数,他也不会把函数内定义的变量释放,你可以在 python shell 测试一下:>>> a = 890 # 定义 a
>>> id(a) # 查看 a 的地址
1778661362096
>>> a = 890 # 重新定义 a
>>> id(a) # 再查看 a 的地址,可以看到 a 如果重新定义,它的地址不会跟上次一样
1778663899856
>>> def test():
... a = 890 # 在函数内部定义 a
... print(id(a))# 打印 a 的地址
...
>>> test() # 多次调用 test,可以看到 a 的地址都没变,说明 a 并没有被释放
1778663899376
>>> test()
1778663899376
>>> test()
1778663899376
>>> test()
1778663899376
>>> isdkz 发表于 2022-2-27 11:47
先不说协程函数,哪怕是普通的函数,他也不会把函数内定义的变量释放,你可以在 python shell 测试一下 ...
我觉得,调用这个词,和赋值是不一样的{:10_277:}
Stubborn 发表于 2022-2-27 11:56
我觉得,调用这个词,和赋值是不一样的
但是调用的话,在函数里面有赋值呀,我在函数里面查看的是局部变量的地址 本帖最后由 isdkz 于 2022-2-27 12:06 编辑
Stubborn 发表于 2022-2-27 11:56
我觉得,调用这个词,和赋值是不一样的
还有一点就是,整数的话你不要用 -5 到 256 的,python 机制里面会有一个缓存池,
有一部分对象是在运行python 解释器的时候就产生的了,它们的地址是固定的,就是为了避免需要频繁使用的对象的内存地址浪费,
所以你把多少个变量指向 -5 到 256 之间的整数都是同一个地址的
>>> a = -5
>>> b = -5
>>> c = -5
>>> d = -5
>>> e = -5
>>> a is b is c is d is e
True
>>>
风百默 发表于 2022-2-27 11:30
我只是在函数内部使用全局变量,但不修该它,为什么还要申明
我觉得题有问题
14,你的回答是不对的,引用一个容器类型数字,不会重新创建的。
该答案的正确答案,我觉得有问题,如你所说,使用全局变量,不涉及修改是不用显式声明的。
16题,函数退出后,被释放,意思是退出函数后,不能在访问函数内部的变量
不是很清楚协程函数算不算函数,如果算,这个16题错误答案也是有值得争议的 Stubborn 发表于 2022-2-27 14:15
我觉得题有问题
14,你的回答是不对的,引用一个容器类型数字,不会重新创建的。
该答案的正确答案,我 ...
首先,函数退出后,它里面的变量并不会释放,第二,协程函数得抛出 StopIteration 之后才算退出 isdkz 发表于 2022-2-27 16:11
首先,函数退出后,它里面的变量并不会释放,第二,协程函数得抛出 StopIteration 之后才算退出
朋友,那这这俩个题都有问题吗?
页:
[1]