参数?变量?形参?实参?在 Python 眼里那都不是事。-LMLPHP


写在之前


函数的参数,我在之前的文章中也提到过,参数这个东西我感觉还是比较有话题的,你可能在某些地方听说过诸如 “形参”,“实参” and so on...那么这些到底是什么呢?下面我们就来详细的说一下函数的参数和变量的问题。


参数 & 变量


我们用 def 来定义函数,函数名后面的括号里如果有变量的话,它们通常被成为 “形参”;在我们调用的时候,给函数提供的值我们称它为 “实参”,或者叫 “参数” 也是 ok 的。其实我觉得我们完全可以简化一下,可以笼统的把函数括号里的变量叫做 “参数”,当然叫做 “变量” 也是可以的,只要你知道指的是什么就好了。


如果非要有人较真,就是要区分参数和变量,我在这里引用一段网上看到的 “微软网站上关于此问题的说明”,你可以尝试看一下,标题叫 -- 参数和变量的差异(Visual Basic),下面的图片是我从官网上的截图:


参数?变量?形参?实参?在 Python 眼里那都不是事。-LMLPHP


如果你真的硬着头皮看完了上述的内容,你就会发现里面的一些关键词:参数,变量,形参,实参,本来我们只是想弄懂参数和变量的的区别,结果又冒出两个别的词,其实根本不需要担心,在学习编程的时候,类似的东西有很多名词,你现在听过了,下次有人说起的时候你就不用担心了。


其实在 Python 中,并没有搞得这么复杂,如果你看完上面截图的内容,再来看下面的代码,你就会发现很多事情其实是很明朗的:



你看,是不是没有那么复杂,所以名字是什么不是最关键的,最重要的是你要明白在函数名后面的括号里的东西的作用是 “传递对象的引用”。


我们再来看一个例子:



我在写列表的时候说过列表是可以被原地修改的,加上上面我们说过的参数的特点,上面的操作其实就不难理解了。


原本列表 x 是在函数外面的,既可以理解成 x 和 函数是属于 “同级” 的,只不过是分属于两个不同的个体,按照我们的常规理解,同级的个体,如果一个个体的内部发生了变化,对于另一个个体来说是没法影响的(注意我说的 “同级”,“个体”),但是事实是改变了,因为参数是 “传递对象的引用”,所以函数个体内部的小变动影响到了 x 个体,颇有 “以下犯上” 的意思。


花这么长的篇幅写这些的原因,终归还是希望你能很深的记住这点:“函数的参数传递对象的引用”,重要的事刚好说了三遍。


写在最后


我尽量的在明白且清晰的传递一些我的认识,虽然我 Boss 之前和我说在写代码的时候有些东西会用就行,不必去看到它底层的东西,但我还是觉得在学基础的东西的时候还是求甚解的好,地基打得牢,干啥都不慌,恰恰我之前对基础的东西其实是一晃而过的,现在我在努力改变自己原先的做法,希望也能引起你的重视。


The end。





        我也要引起你的重视。



参数?变量?形参?实参?在 Python 眼里那都不是事。-LMLPHP



本文分享自微信公众号 - Python空间(Devtogether)。
如有侵权,请联系 [email protected] 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

04-19 10:06