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中普通代码块,构造代码块,静态代码块区别及代码示例

Java中普通代码块,构造代码块,静态代码块区别及代码示例2 构造代码块

Java中普通代码块,构造代码块,静态代码块区别及代码示例2 构造代码块

上古卷轴5代码

低代码究竟是啥?