首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python函数之一切皆对象

各位小伙伴周二愉快

今天我们要讲的是

对象

避免误会,常老师先澄清一下,这里面说的对象指的是object,不是你的lover,也不是你的sweetheart……

有的小伙伴可能会觉得有点问题,我们这两天不是一直在说函数的事情吗?怎么插播了对象的概念呢?

那是因为常老师觉得函数的基本表达掌握之后,对于对象的理解就显得很重要,否则再往后面看函数的时候,容易蒙圈,【记得常老师在学习最早一门编程语言(C语言)的时候,是在迷迷糊糊看完了面向对象之后,反过来又理解的函数,才恍然大悟。】

所以,今天我们来讲一下对象的概念

什么是对象呢?借用一句名言:一切皆对象

是的,你没看错,你看得见摸得着的,甚至你看不见摸不着的,都是对象(包括你自己)

而Python中,也是使用了一切皆对象的概念。

难道说我们之前写过的所有语句描述的都是某一个对象吗?没错!

就连一个print,一个if,都是在描述一个对象,或者说是在操作某一个对象

举个栗子

你自己,首先就是一个对象,对象由两种元素构成,一种是属性,一种是动作(Python中我们叫做方法)。

我们有一个脑袋、一个鼻子、两只耳朵,这描述的都是我们的属性

我们会走路、会说话、会吃饭,描述的都是我们的方法

延伸到Python中,也是如此

我们可以把a看成是一个对象,定义a=1,等于把a这个值赋予1,那么,如果根据以上理论,是不是a还可以有别的属性或者方法呢?当然是的!就看你想要a干什么,在合理范围内都可以做到。

接下来,我们看一下Python微观世界中完成a=1总共分几步

当我们声明(也叫定义)一个变量a的时候,其实在我们计算机的内存中就开辟了这么一块区域,用来描述a的属性及状态

当我们把1赋值给a的时候(a=1),计算机相当于把1指向了a(如果这里之前学过指针的同学可能会很快理解)

这时候我们使用print(a)的时候,相当于告诉计算机我要输出a的值,这时候当然就会输出1

如果此时我们再把另外一个值10赋给a,那么计算机就会

断开1-->a这个指针,并把1丢弃

重新建立a这个对象并且建立10-->a这个指针

这时候我们再次print(a)的时候就是10了

这里注意第一次声明的a和第二次声明的a,并不是同一个a,如果有的小伙伴问,在这种条件下,如果我们想重新找回a=1可以吗?很抱歉,这是不可以的,当你重新定义了一个相同名称的变量时,之前的同名变量及值就已经被丢弃了(这也是Python垃圾回收机制的一种表现)

我们回顾一下这如此简单的表面现象

为什么会这样呢?因为再Python中,分为不可变类型变量和可变类型变量

不可变类型变量:字符串、数字、元组

可变类型变量:列表、字典

比如下面例子:

首先,我们定义了一个list列表,包含4个值,我们又在列表的后面增加了一个值,所以他的输出应该是

而在这里面,就不是把list这个变量及列表全部丢弃,再重新声明的list列表,而是直接在原有list的基础之上增加了一个元素(这和不可变类型变量不同)

理解了以上内容,各位小伙伴们就会理解在函数传递值的时候,我们实际上是传递了变量本身,还是只传递了变量对应的值。

今天的内容文字描述多了一些,目的是让大家可以快速理解对象的概念,请大家务必理解好今天的概念,这对以后使用复杂函数,传递不定长参数及理解后面的作用域概念的时候十分有帮助,希望大家能够理解,如果有问题可以给我留言,我会一一解答,谢谢大家!

各位亲爱的们,如果您觉得这篇文章还不错,请进行转发,知识的进步需要共享。

如果您觉得本公众号对您来说能有点作用,请长按下方二维码进行关注!谢谢!(鞠躬)

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171226G0O77B00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券