文章目录

  • 一、项目背景
    • 1、项目需求
    • 2、实施时间
  • 二、 技术背景
    • 1、阅读文章所需知识背景
    • 2、开发环境
    • 3、开发工具
  • 三、思考及测试过程
  • 总结

一、项目背景

1、项目需求

复习python基础原理的过程中,发现自己对于python对象有些错误理解,故单独写一篇博文记录,以此勉励自己,加深记忆

2、实施时间

2020-12-29

二、 技术背景

1、阅读文章所需知识背景

1)具有少量python基础

2、开发环境

1)Win10-64
2)Python 3.6.6

3、开发工具

1)Pycharm 2020.2.2

三、思考及测试过程

def myFunction(content='world'):
    return "Hello " + content


print(myFunction())

""" myFunction() result Hello world """

# 我们也可以将该函数赋值给一个变量,例如
func = myFunction
# 这里没有加(),所以这里仅仅是将函数本身赋值给func,此时func是一个函数
# 如果加上()则func变成了myFunction的返回结果,也就是 "Hello " + content,此时的func变成了一个字符串


""" func() result Hello world """

# 让我们删除myFunction函数,看看会发生什么!
del myFunction
# print(myFunction())

""" myFunction() result NameError: name 'myFunction' is not defined """

# 此时我们可以看到myFunction函数已经不存在了
# 那么新的问题来了我们在删除myFunction函数之前已经将该函数赋值给变量func了,那么现在func函数还存在吗?
print(func())

""" func() result Hello world """


# 结果证明func函数依然存在,其并没有因为myFunction被删除而受到影响
# 那么新的问题又来了,我们在使用 func = myFunction 到底发生了什么?
# 为什么myFunction已经被删除了func却没有受到影响呢?
# 下面我们来进行一组新的实验
def myNewFunction(content='world'):
    return "Hello " + content


print(myNewFunction)

""" myNewFunction result <function myNewFunction at 0x00000145E0574950> """

# 此时我们可以看到python创建了一个名为myNewFunction的函数,并将其分配在内存地址0x00000145E0574950位置

newFunc = myNewFunction
print(newFunc)

""" newFunc result <function myNewFunction at 0x00000145E0574950> """

# 此时我们可以看到,python并没有新建一个newFunc函数,此时打印出的仍是位于内存地址0x00000145E0574950的myNewFunction函数
# 这里我们可以理解为变量newFunc其实只有一个指针,指向了内存中位于0x00000145E0574950的myNewFunction函数

del myNewFunction
print(newFunc)

""" newFunc result <function myNewFunction at 0x00000145E0574950> """

# 执行完del myNewFunction之后我们发现newFunc并没有受到影响,其依然指向内存中位于0x00000145E0574950的myNewFunction函数
# 由此可知del myNewFunction在此刻并没有删除内存中的myNewFunction函数,而仅仅是删除了一个名为myNewFunction的变量

# 到此我们可以粗浅的认为,python中的变量其实只是一个指针,指向内存地址中的某一个对象,修改某个变量的赋值时,其实只是更改了指向
# 至于对象在何时被创建、何时被删除博主尚未认真研究,这里就先全权交给python来处理吧

总结

整个代码并不复杂,勤加思考才能使人进步,才能成为立身之本。编写本文一方面是为了加深记忆,勉励自己,另一方面希望本文可以帮助到有需要的人。阅读本文的过程中如有任何问题欢迎随时与我联系。

本文地址:https://blog.csdn.net/qq_28347389/article/details/111934037