python中的值傳遞 記一次踩坑記錄

2021-10-03 13:44:01 字數 1479 閱讀 4129

python作為一種弱型別的語言,為了方便使用者,省掉了很多不必要的麻煩。但是對於c和c++語言來說,指標是必不可少的。雖然python中沒有指標的概念,但是也要時刻記住,對乙個變數操作,是對變數本身操作,還是只對形參進行操作。因為最開始自己並沒有注意這一點,所以導致自己的程式出了挺大的問題,還查不到相應的問題所在。

題目的簡單描述:返回一棵二叉樹的節點的數量。

題目很簡單,我最開始寫的**就是下面這樣:

def

countnodes2

(self, root)

:def

helper

(root,

sum):if

not root:

return

0sum+=1

helper(root.left,

sum)

helper(root.right,

sum)

return

sum count = helper(root,0)

return count

寫完之後覺得非常正確,但是跑了個測試,發現並不對,每次返回值都是1, 我就在想了,為什麼會產生這樣的問題,於是開始debug,加一些中間輸出變數,變成了下面這樣:

def

countnodes2

(self, root)

:def

helper

(root,

sum):if

not root:

return

0sum+=1

print

("this is test line!"

) helper(root.left,

sum)

helper(root.right,

sum)

return

sum count = helper(root,0)

return count

def

countnodes

(self, root)

->

int:

self.

sum=

0def

helper

(root):if

not root:

return

0 self.

sum+=

1 helper(root.left)

helper(root.right)

helper(root)

return self.

sum

如上圖所示,這樣即可得到正確的結果。因為這樣的引數sum屬於位址傳遞了,每次遞迴的時候,都是對原資料進行更改。

值傳遞的變數有:普通型別的變數,比如int型,字串等,都是屬於值傳遞,每次操作的時候並不會對原值進行更改,更改的只是新生成的值。

java 後台一次null值踩坑記

不得不說 中的null值,總是會在不經意間引起bug,也許看似低階,但是產生的問題還不小。記一下自己的踩坑過程,以此為鑑。原始 如下 long userid userutil.getloginuserid request userinterestuser userinterestuser users...

記一次github踩坑之旅

關於vue專案預覽問題 由於vur cli 的公升級,生成的專案目錄中沒有config檔案。根據官網介紹可以自己在根目錄下新建vue.config.js。在將vue專案上傳到github時,必須必須先編譯 本人第一次上傳就那麼得瑟的將未編譯檔案push啦 執行npn run build,會得到乙份打...

記一次Python爬蟲入門

程式思路 程式步驟 2 分析該網頁的 3 findall查詢出所有的url,儲存到list中 4 遍歷list,儲存到本地 程式原始碼 請求網頁 import time import requests import re import os 請求頭部 headers response request...