python函數傳參不改變傳入變量值


  今天寫用例遇到一個問題,困擾了好一會

問題描述:

  接口的api定義在yaml文件中,里面有接口的apiurl,定義為/testapi,調用時會進行域名拼接,重新賦值給apiurl,使用數據驅動第一次執行完, interface["url"]被賦值修改為域名+apiurl,第二次調用接口報錯

 

如圖為api層調用makeInterface函數,傳入interface這個json,通過makeInterface函數會對請求url等進行拼接

 

 

 

在一個case中使用了數據驅動進行調用,第一次執行完,interface["url"]被賦值修改為域名+apiurl,第二次調用接口報錯

 

 

 

這個原因是因為python存在可變參數和不可變參數,只有函數參數傳入的是不可變參數,函數中的調用不會改變原參數變量值,否則,函數中對變量值的修改會改變原變量的值

  • 不可變對象:Number ,String , Tuple,bool
  • 可變對象: List , Set , Dictionary是可以改變內部的元素

如果想要函數中不對可變對象的原參數值進行修改可以使用copy.deepcopy()

desinterface = copy.deepcopy(interface)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM