注意一點就是我們python的函式return之後,比方說它定義了乙個區域性變數,當出了這個函式,這個區域性變數的引用計數會減1,在c語言當**了函式作用域的話區域性變數是直接被銷毀的,而我們python並沒有區域性變數這個概念,我們都是引用,所以只要出了作用域,引用就會減1。
那麼問題就來了,減1是不是就沒了,我們return出來之後是不是就不能訪問了?並不是。
在python的return當中,它會把它再加1,首先它出來,先調return函式給它加了1,它本來引用計數是1,我們return的時候把這個變數re給它加了1,那就變成了2,整個退出的時候它又會減1,此時re的引用計數就是1,在外面還可以訪問到這個變數re。
所以你要知道這一點,python的函式是可以直接返回的,裡面的區域性變數都可以返回的,這一點不同於c語言。
由於python內部都是引用,它會把引用計數加1,所以這個return不是那麼簡單的,你要知道這一點,它在內部為什麼能用,它會把引用計數加1。
為什麼要說這些呢?當你自己做乙個,把c語言的函式傳給python的時候,你要做同樣的事情,你是通過python的介面申請了一塊空間,那你一樣的要把引用計數加1,不然的話出了這個函式的作用域,這個空間就銷毀掉了,所以要把它加1,在外部才能保證訪問。
能支援return多個值,相當於return了乙個元組,可以賦給多個值,並不建議使用這種return方式,可讀性會下降,一些新特性能不用盡量不用,但是你要知道這種特性,要能看得懂別人的**。
在我們區域性變數生成的空間,在外部是可以訪問的,因為return會把它的引用計數加1。
Python的函式返回值
python的函式返回值 最近學一些python的基本用法,看到定義函式,發現似乎只能返回乙個返回值,想想matlab裡返回多個返回值多方便啊,網上查了查,看到有返回多個值的方法。參考 python 函式返回值有兩種形式 1 返回乙個值。2 返回多個值。現看看返回乙個值的吧。def firstval...
Python 函式的返回值
函式的返回值 沒有返回值 不寫return的情況下,會預設返回乙個none。def logxx psaa print logxx 只寫return,後面不寫其他內容,也會返回none def logxx return print logxx 返回乙個值 def logxx return 1 prin...
python 函式的返回值
函式就是乙個執行某個功能的一段 塊 函式中的變數,是區域性變數 生命週期需明確 老師有乙個快遞需要領取 就讓乙個學生去拿 學生領取成功後,把快遞返給老師 老師自己去菜鳥驛戰取包裹 bg box 1001 print bg 讓學生拿包裹 def get kd num 老師把取件碼發給學生 學生憑取件碼...