<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Python 函數(shù)那不為人知的一面

          共 1240字,需瀏覽 3分鐘

           ·

          2021-11-11 23:55

          通常我們定義一個函數(shù),然后調(diào)用該函數(shù)時,函數(shù)相關(guān)的代碼才開始執(zhí)行。可是很多人并不知道,當(dāng)我們定義函數(shù)時,一些代碼就開始執(zhí)行了。今天就來說說函數(shù)這個不為人知的一面。

          先看一段代碼:

          def?do_something(opt:?print('參數(shù)?opt'),?arg=print('參數(shù)?arg'))?->?print('函數(shù)的返回值'):
          ????print("do?something?runing")

          if?__name__?==?'__main__':
          ????pass

          上面的代碼我們定義來一個函數(shù),但是并沒有調(diào)用它,那么它會輸出信息嗎?

          會的,參數(shù)里無論是類型提示部分,還是默認(rèn)賦值部分,還是返回值的類型提示,里面的語句都會被執(zhí)行,結(jié)果如下:

          這個做法我自己是很少見的。把 print 函數(shù)換成打開文件、連接數(shù)據(jù)庫之類的操作,也都會被執(zhí)行。

          不過通常情況下,參數(shù)都是不可變類型,如果傳入可變類型,可能每次的函數(shù)調(diào)用,其結(jié)果都會被改變,例如:


          def?do_something(opt:?print("參數(shù)?opt"),?arg=[])?->?print("函數(shù)的返回值"):
          ????print("do?something?runing")
          ????print(f"{arg?=?}")
          ????arg.append(0)


          if?__name__?==?"__main__":
          ????do_something(opt=1)
          ????do_something(opt=1)

          運行結(jié)果如下:

          可以發(fā)現(xiàn),調(diào)用兩次函數(shù) do_something,雖然并沒有傳入 arg 參數(shù),arg 的值已經(jīng)發(fā)送了變化。如果不注意這點,可能會有 bug 發(fā)生。在 Pythcarm 中,會警告我們 arg 是可變對象:

          如果要獲取函數(shù)的類型提示、默認(rèn)值,可以這樣:

          def?do_something(opt:?1,?arg=2)?->?3:
          ????print("do?something?runing")
          ????print(f"{arg?=?}")
          ????arg.append(0)


          if?__name__?==?"__main__":
          ????print(f"{do_something.__annotations__?=?}")
          ????print(f"{do_something.__defaults__?=?}")

          #do_something.__annotations__?=?{'opt':?1,?'return':?3}
          #do_something.__defaults__?=?(2,)

          最后

          本文分享了 Python 函數(shù)那些不為人知的一面,如果有收獲的話,請點贊、在看、關(guān)注支持。



          瀏覽 60
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  91一直干在线 | 日韩毛片一区 | 99热在线日韩精品免费 | 国内乱伦自拍 | 国产精品久久久久久久激情视频 |