定义变量还需要讲解?
你能说出来,以下代码定义了多少个变量吗:
如果你的答案是2个,那么希望看完本文后你会有不一样的回答。
再看一些类似教条式的规范:
本文的内容能帮助你理解这些知识点。
本文不是讲解如何定义变量,也不打算按照市面上的教程逻辑讲解,希望我能让你对变量带来一些新的理解。
如下代码生成了一个列表:
很多人知道,这是生成了一个列表。
Python 在背后做了许多事情,姑且想象他有一个"对象区",保存了这个列表:
如果把对象看作是生活上的人类,把对象的 id 看作是身份证号码。那么当你需要使唤某个人做事情,你就必需通过身份证号码才能与他沟通。
变量,就是让你能与 "对象区" 的对象沟通的工具。也就是说,变量本质上保存的不是数据对象本身,而是保存了对象的"身份证号码"。
如下代码:
这些都很好理解,而自定义函数,其实与上面生成列表"赋值"给变量是一样的过程!
Python 号称"一切皆对象",这不是随便说说。
如下自定义函数:
执行到 def 这行代码时,Python 会在 "对象区" 生成函数对象:
这让自定义函数与普通的列表没有多大区别。
的确如此。
既然函数本身也是对象,自然可以有多个变量同时指向他:
用2个变量指向同一个函数,好像没有多大用处。实际上,这能让我们随意把某个函数传递到其他函数中。
函数表达是一系列操作逻辑,这意味着我们可以把固定的逻辑写好,需要的时候就能调用。
比如,在 pandas 中到处可见这种情况:
刚刚说到,自定义函数里面的代码作为数据被保存在函数对象中。
那么,函数对象里面还能保存什么数据吗?
函数对象中保存的数据,基本是函数的一些相关属性,比如每个参数的名字等。
其中,如果是默认参数,里面还会保留其默认值(实际上保存的只是默认值对象的 id)
如下自定义函数:
平时导入 pandas 或 numpy 等库,习惯写出如下导入包的代码:
那么,如果只是写 import ,没有用 as ,难道就没有定义变量?
这是不可能的。没有变量,我们后续就不可能使用该包的功能。
默认情况下(没有使用 as) ,变量名字就是包或模块完整名字。导入后其实我们可以随意使用新的变量:
以下代码定义了多少个变量?
以下代码会报错吗?
有没有什么骚操作能临时占用变量?
list 是定义在 Python 内置命名空间中,因此上述例子直接通过 del list ,把变量删除,后续就能恢复访问默认的 list
最后给一个题目,你认为以下代码输出是什么,为什么?