Python--passdelexeceval
Posted mr-chenshuai
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python--passdelexeceval相关的知识,希望对你有一定的参考价值。
pass:
表示什么都不做,可用作占位符
name = input("name":) if name == "shuai": # 待完成 pass
del删除:
对于不再使用的对象,Python会将其删除
内存回收:
- 定义变量会占用内存空间,所以对于不用的变量需要回收掉
- 什么是没用的变量?
- 没用的变量就是没用变量名指向它
- 一个值可以被多个变量名所指(这种绑定的关系官方称为:引用计数),当引用计数为0时,就意味着没用任何名字跟值建立绑定的关系,就视作垃圾,这就是需要回收的,python会自动将其回收,释放空间
查看引用计数:
通过导入sys模块,使用getrefcount()方法查看
这里"yuan"这个字符串对象有3个引用:x、y、getrefcount()
注:getrefcount()也算做一个引用
内存地址:
ID可以反映内存地址,使用id()查看
- 变量的定义就会开辟内存空间,但是如下图,查看ID是一样的,这违背了原则
- 这是python的优化机制,对于占用内存较小的值,就直接指向,不新开辟
exec:
将字符串作为代码执行
exec("print(‘hello‘)") # hello
调用时如果提供一个参数,会污染命名空间,多数情况下要向他传递一个命名空间(存放变量名)
# 代码使用了sqrt,出错 from math import sqrt exec("sqrt = 1") print(sqrt(4)) # Traceback (most recent call last): # File "E:/Text/demo.py", line 6, in <module> # print(sqrt(4)) # TypeError: ‘int‘ object is not callable # 添加第二个参数,一个字典,用作代码字符串的命名空间 from math import sqrt d = {} exec("sqrt = 1", d) print(sqrt(4)) print(d["sqrt"]) # 2.0 # 1
# 字典d中添加了包含所有内置函数和值的字典__builtins__
print(d)
eval:
类似exec,用于计算用字符串表示的Python表达式的值,并返回结果(exec没有返回),同样可以提供命名空间
print(eval(input("输入计算表达式:"))) # 输入计算表达式:1 + 3 * 2 # 7
以上是关于Python--passdelexeceval的主要内容,如果未能解决你的问题,请参考以下文章
Java中普通代码块,构造代码块,静态代码块区别及代码示例2 构造代码块