日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python变量后面加星号_Python开发中关于参数使用的几点建议 -- 1

發布時間:2023/12/31 python 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python变量后面加星号_Python开发中关于参数使用的几点建议 -- 1 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

減少使用位置參數

使用可選參數(*args)可以使方法看起來更清晰,減少視覺噪音。例如,你想要記錄一些代碼調試信息,如果使用固定參數,那么你的方法可能就像下面的示例一樣接收兩個參數:

如果你在調用這個方法時又不想給values傳值,那么你就不得不傳遞一個空數組給方法,但是此時更好的處理方式是取消方法的第二個參數。在Python中你可以給第二個參數前面加一個星號(*)來解決這個問題。這樣,第一個參數還是一個位置參數,是必填的,而它后面的參數是選填的,可以有多個,也可以沒有。方法體并不需要做任何修改,只需要修改一下調用方式即可:

如果在調用log方法前,已經有了一個數組,此時可以使用*來傳值:

使用可變數量參數時有兩個問題:

  • 第一個問題是,可變參數在被傳遞給方法前總是被轉換成元組(tuple)。這就意味著,如果你調用這種方法時,傳入的是一個生成器,那么Python會遍歷生成器并生成一個元組。在生成元組的過程中可能會消耗一些內存,如果生成器過大,可能會導致程序崩潰。例如:

所以說使用*args的前提是輸入參數的數量不大。理想狀態是在調用這類方法時同時傳遞文本值和變量名(原文是:It’s ideal for function calls that pass many literals or variable names together. 我不知道我翻譯的準確嗎)。這樣做的主要目的是方便開發人員以及提高代碼可讀性。

  • 第二個問題是如果將來代碼發生改變時,你不能夠添加新的位置參數了,除非你去修改每一個調用這個方法的地方。如果你在方法定義中*args前面增加了位置參數,但是又沒有修改方法調用,那么代碼就會出現一些奇怪的問題。例如,按照以下方式修改log方法:

這里的問題就是,因為你沒有給sequence傳值,所以第二次調用log方法時傳遞給message參數的值是7。但是代碼仍然能夠執行下去,沒有出現任何異常,所以調試起來也很困難。為了避免這類問題的出現,當你需要拓展方法時,應該使用關鍵字參數。

其它注意事項

  • 方法可以接收一個可變的位置參數;
  • 可以使用星號將一個序列中的值傳遞給方法;
  • 使用星號傳遞生成器可能會造成內存溢出;
  • 為方法添加新的位置參數可能會引入難以發現的bug.

總結

以上是生活随笔為你收集整理的python变量后面加星号_Python开发中关于参数使用的几点建议 -- 1的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。