美文网首页Python那些事儿PythonPython自动化运维
编程大神一道题带你搞定Python函数中形参和实参问题

编程大神一道题带你搞定Python函数中形参和实参问题

作者: Python进阶学习交流 | 来源:发表于2018-01-07 12:20 被阅读18次

    昨天在Python学习群里有位路人甲问了个Python函数中关于形参和实参一个很基础的问题,虽然很基础,但是对于很多小白来说不一定简单,反而会被搞得稀里糊涂。人生苦短,我用Python。

    为了解答大家的这个疑惑,小编在此举个栗子,希望大家能够彻底的理解实参和形参在Python中的用法。

    首先,大家一起看个栗子。 不可更改的对象

    这个函数的输出值是多少?很多人会回答7,其实程序运行之后,其答案是6,点解呢?

    为什么在这里形参的数值并不改变实参的数值?

    这里需要给大家普及一个Python中的基础,在python中,string(字符串), tuples(元组), 和number(数值)是不可更改的对象,而list(列表),dict(字典)等则是可以修改的对象。

    也就是说,这里形参的数值对于外部的实参的数值(number类型,不可变)来说是没有任何关系的,他们虽然是同一个名字,但是其指向对象是不一样的。所以当在程序最后进行打印a输出值的时候,其输出仍然是6。

    下面这个栗子我们来看看可变的对象,以list(列表)作为实验对象。 可更改的对象

    这个函数的输出值是多少?很多人会回答[1,2],其实程序运行之后,其答案是[2,1]。

    与第一个栗子刚刚相反,这里形参的数值调用把实参改变了。因为本例中参数传递的是列表,其是可更改的对象,在函数内部经过系列赋值变化之后,所以在程序运行之后其输出值产生了变化。

    山重水复疑无路,柳暗花明又一村。这道题经常会被招聘公司和企业拿去作为面试题,考察面试狗的Python基础知识,希望大家好好参详,日后碰到类似的问题加以注意,少走弯路!

    最后感谢在Python群中积极提问的好学者,然我们大家一起为学好Python而奋斗吧!

    相关文章

      网友评论

      • Python进阶学习交流:Python中这个地方有点类似C语言中的指针。在实际开发中,不建议使用全局变量,不然分分钟被老板开除

      本文标题:编程大神一道题带你搞定Python函数中形参和实参问题

      本文链接:https://www.haomeiwen.com/subject/ipupnxtx.html