python函数中的两个坑(面试经常有)
生活随笔
收集整理的這篇文章主要介紹了
python函数中的两个坑(面试经常有)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1.函數(shù)內(nèi)變量的作用域:
a=1 def fun():a=2 fun() print(a)思考下這段程序的結(jié)果是什么,如果你的答案是2,那恭喜你,答錯了,結(jié)果是1,原因如下
a=1 def fun():a=2 #作用域是fun()函數(shù),也就是說只能在fun中使用,fun結(jié)束,a也就消失了 fun() print(a) #a=1那如果要引用開頭的a怎么辦:
a=1 def fun():golbal aa=2 #引用全局變量a fun() print(a) #a=22.參數(shù)的默認值是可變的
''' 遇到問題沒人解答?小編創(chuàng)建了一個Python學習交流QQ群:579817333 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' def fun(a,b=[]):b.append(a)print(b) fun(1) fun(2)這個結(jié)果什么是呢,[1],[2]?對的,你又入坑了,結(jié)果是[1],[1,2],為什么后一個會帶上第一個的結(jié)果呢,原來函數(shù)在定義的時候,參數(shù)就被實例化了,b就指向了[],由于列表是可變的,所以每次append后,
b的值都改變了,下次引用就會帶上上次的內(nèi)容量,記住:默認參數(shù)必須指向不變對象!
如果要讓結(jié)果為[1],[2],那就該做如下修改:
以上兩個問題在實際中用到的雖然不多,但是面試會經(jīng)常被問到,這也能看出python的功底吧,初學者經(jīng)常不解,希望對大家有所幫助。
總結(jié)
以上是生活随笔為你收集整理的python函数中的两个坑(面试经常有)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python赋值方式
- 下一篇: Python Lambda函数的几种使用