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’没有语句而停止。
到这里,这些内容就讲完啦,写作文章不易,能否点个赞呢?
如有不完整的地方或有出入的地方,欢迎评论补充~