python变量赋值、指针、对象的一些粗浅理解


一、项目背景

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来处理吧

总结

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值