Python之del语句、exec、eval语句、pass语句及三个引号的用法!

Python文章为基础篇,主要提供给基础生查看资料学习使用!本博主的主要方向为网络安全,讲解黑客技术。后期在制作黑客工具时,会用到Python这门语言。所以,在此提供一些基础的Python知识!

一、del语句

在Java中存在垃圾回收机制,那么对于强大的Python来说,也有垃圾回收机制。举个例子,比如现给一个变量指向一个字典,我们可以通过该变量访问字典。如果现给这个变量赋上一个值,则字典就没办法进行引用,也就与该变量不再关联,这时候Python的垃圾回收机制就会将该字典清除!

当然,我们也可以通过del语句来删除对象的引用及变量本身。

demo = 'Honker'
del demo
print(demo)

在这里插入图片描述
错误提示‘demo’未被定义,这就解释了del语句不仅能将引用删除,还会将变量名本身删除。
这样讲可能会有一点出入,但是这样理解还是可以的。通过下面的例子,我将对del进一步讲解:

demo = 'Honker'
name = demo
del demo
print(name)

在这里插入图片描述
我添加了一个语句,将demo赋给name。但是后面打印name依然能够打印出‘Honker’。这就有另一种说法,就是说del进行删除的只是变量名,而不会删除引用。但是为什么第一种情况,引用就没了呢?是因为没有变量指向引用,所以Python解释器会把该引用当做垃圾进行处理(回收清理)。

二、exec、eval语句

说是语句,其实在Python3中exec和eval是两个函数,它们两个紧密相关。

exec()函数可动态的执行Python代码,下面我将详细分析:

exec(object,globals,locals)

其中,object为必选项,如果object为字符串,那么exec将其认为一个语句进行执行。

exec("print('Honker')")

在这里插入图片描述
如果这里语句不正确,那将报错:

exec('Honker')

在这里插入图片描述
globals为可选项:由名称可知,这是一个全局的参数,表示全局命名空间(存放全局变量),如果被提供,则必须是一个字典对象。
locals也为可选项:表示当前局部命名空间(存放局部变量),如果被提供,可以是任何映射对象。如果该参数被忽略,那么它将会取与globals相同的值。

如果globals与locals都被忽略,那么它们将取exec()函数被调用环境下的全局命名空间和局部命名空间。

下面给一个示例,你就能明白:

x = 10
demo = """
z = 30
sum = x + y + z
print(sum)
"""

def func():
    y = 20
    exec(demo)
    exec(demo, {'x': 1, 'y': 2})
    exec(demo, {'x': 1, 'y': 2}, {'x': 5,'y': 3})

func()

在这里插入图片描述
在这段代码里,x为一个全局变量。z存在demo中,demo可以看做是一个封装的代码块。用三引号括起来,等一下注解。在函数func()当中,exec函数调用demo,第一个只有object,所以,x,y,z都是用上面所给的值。第二个给了globals参数,那么x,y的取值都将是globals的值。第三个给出了globals和locals,这时候,x和y的取值将是locals的值。因为在全局变量和局部变量的名称相同时,优先使用局部变量的值。

注解:三个引号,Python中三个引号可以看做是将几个语句给封装到一起赋给一个变量。示例:

demo = """
print("Honker")
a = 5
b = 5
print(a+b)
"""
exec(demo)

在这里插入图片描述
eval():类似于exec(),唯一和exec的区别就是该函数具有返回值,其他参数功能都类似,不再重复讲解。

x,y = 5,5
demo = eval('x+y')
print(demo)

在这里插入图片描述
三、pass语句

pass语句在Python中作用也不小,它是一个什么都不做的语句,中文翻译为通过。在Python代码里,它就是通过的意思,比如,我现在要写一段代码,中间部分我没完成,但又想让代码继续执行,而不是停到没完成的部分,这时候你只需要在未完成的部分写上一个简单的pass语句即可。
示例:

demo = input("Please enter name:")
if demo=='Honker':
    print('Welcome,'+demo)
elif demo=='Cyber':
    #还未完成的代码
    pass
elif demo=='Mr.n':
    print('Hello,'+demo)
else:
    print('Nice to meet you!')

在这里插入图片描述
在控制台输入’Mr.n’,毛不妨碍程序的运行,不会因为demo=='Cyber’没有语句而停止。

到这里,这些内容就讲完啦,写作文章不易,能否点个赞呢?
如有不完整的地方或有出入的地方,欢迎评论补充~

往期推荐:

  1. Python之字典的创建和使用!
  2. Python之print、import、input、赋值语句
  3. Python之代码块、条件语句、循环语句

在这里插入图片描述

发布了57 篇原创文章 · 获赞 54 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_43729943/article/details/104436225