本文主要是介绍参数?变量?形参?实参?在 Python 眼里那都不是事。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
写在之前
函数的参数,我在之前的文章中也提到过,参数这个东西我感觉还是比较有话题的,你可能在某些地方听说过诸如 “形参”,“实参” and so on…那么这些到底是什么呢?下面我们就来详细的说一下函数的参数和变量的问题。
参数 & 变量
我们用 def 来定义函数,函数名后面的括号里如果有变量的话,它们通常被成为 “形参”;在我们调用的时候,给函数提供的值我们称它为 “实参”,或者叫 “参数” 也是 ok 的。其实我觉得我们完全可以简化一下,可以笼统的把函数括号里的变量叫做 “参数”,当然叫做 “变量” 也是可以的,只要你知道指的是什么就好了。
如果非要有人较真,就是要区分参数和变量,我在这里引用一段网上看到的 “微软网站上关于此问题的说明”,你可以尝试看一下,标题叫 – 参数和变量的差异(Visual Basic),下面的图片是我从官网上的截图:
如果你真的硬着头皮看完了上述的内容,你就会发现里面的一些关键词:参数,变量,形参,实参,本来我们只是想弄懂参数和变量的的区别,结果又冒出两个别的词,其实根本不需要担心,在学习编程的时候,类似的东西有很多名词,你现在听过了,下次有人说起的时候你就不用担心了。
其实在 Python 中,并没有搞得这么复杂,如果你看完上面截图的内容,再来看下面的代码,你就会发现很多事情其实是很明朗的:
>>> def add(x): # x 是形参
... y = 10 # y 是变量
... return x + y # 这里的 x 就是形参作为变量来用
...
>>> x = 20 # x 是变量
>>> add(x) # x 是参数,但它是由上面那行的变量 x 传递对象 20 的引用
30
你看,是不是没有那么复杂,所以名字是什么不是最关键的,最重要的是你要明白在函数名后面的括号里的东西的作用是 “传递对象的引用”。
我们再来看一个例子:
>>> def add_digit(my_list):
... my_list.append(9999)
... return my_list
...
>>> x = [1,2,3]
>>> y = add_digit(x)
>>> y
[1, 2, 3, 9999]
>>> x
[1, 2, 3, 9999]
>>> id(y)
38793288L
>>> id(x)
38793288L
我在写列表的时候说过列表是可以被原地修改的,加上上面我们说过的参数的特点,上面的操作其实就不难理解了。
原本列表 x 是在函数外面的,既可以理解成 x 和 函数是属于 “同级” 的,只不过是分属于两个不同的个体,按照我们的常规理解,同级的个体,如果一个个体的内部发生了变化,对于另一个个体来说是没法影响的(注意我说的 “同级”,“个体”),但是事实是改变了,因为参数是 “传递对象的引用”,所以函数个体内部的小变动影响到了 x 个体,颇有 “以下犯上” 的意思。
花这么长的篇幅写这些的原因,终归还是希望你能很深的记住这点:“函数的参数传递对象的引用”,重要的事刚好说了三遍。
写在最后
更多内容,欢迎关注公众号「Python空间」,期待和你的交流。
这篇关于参数?变量?形参?实参?在 Python 眼里那都不是事。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!