最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python神奇的內(nèi)置函數(shù)locals的實例講解

 更新時間:2019年02月22日 16:36:30   作者:lk7688535  
今天小編就為大家分享一篇關于Python神奇的內(nèi)置函數(shù)locals的實例講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

摘要

  • 本文我們介紹神奇的locals函數(shù),包括動態(tài)創(chuàng)建變量和動態(tài)訪問變量,以及一個應用場景。

相同屬性不相鄰問題

需求:有兩個list,分別為list1和list2。list1中有n個對象,每個對象有5個屬性,其中一個屬性是tid,要求list1按tid排序,相鄰的對象的tid不能重復,m為不重復的tid數(shù)量,m不確定。list2存放的是所有可能出現(xiàn)的tid的情況。

  • list1 = [task1,task2,task3…taskn]
  • list2 = [tid1,tid2,tid3…tidm] (m

神奇的local函數(shù)

python語言很好的幫我們解決了這個問題:利用locals內(nèi)置函數(shù)動態(tài)創(chuàng)建變量。

locals函數(shù)在這里的作用:

  • - 1、根據(jù)傳遞的參數(shù)動態(tài)創(chuàng)建變量
  • - 2、根據(jù)傳遞的參數(shù)動態(tài)訪問變量

demo

def apart_program_by_task(list1,list2):
  list_all_pro = []
  #動態(tài)創(chuàng)建m個list,命名為'list'+str(tidm)
  for i in list2:
    locals()['list'+str(i)] = []
  #拿到每個對象,獲取其tid的值,通過拼接變量名訪問對應的list,并把該對象加入該list
  for i in list1:
    locals()['list'+str(i.tid)].append(i)
  #循環(huán)訪問m個list的每個list的頭元素,并刪除,然后加入list_all_pro
  while 1:
    flag = False
    for i in list2:
      try:
        pro = locals()['lst'+str(i)].pop()
        list_all_pro.append(pro)
        flag = True
      except:
        pass
    if flag == False:
      break
  return list_all_pro  

這個demo中,我們可以很靈活的根據(jù)list2的長度動態(tài)創(chuàng)建len(list2)個list,然后根據(jù)拼接變量名訪問每個list,從而做到按tid歸類。

在回收所有的list時,我們也是通過拼接變量名挨個訪問每個list一次,取到頭元素加入新的list,來保證新的list中的相鄰對象的tid不相同。

更多

為什么locals函數(shù)可以動態(tài)創(chuàng)建和訪問變量,這里我們必須先介紹python的命名空間。

  • 局部命名空間local:每個函數(shù)自己的命名空間,記錄函數(shù)的參數(shù)和局部變量。
  • 全局命名空間global:每個模塊自己的命名空間,記錄了函數(shù)、類、導入的模塊的變量以及常量。
  • 命令空間創(chuàng)建順序:

python解釋器啟動 ->創(chuàng)建內(nèi)建命名空間 -> 加載模塊 -> 創(chuàng)建全局命名空間 ->函數(shù)被調(diào)用 ->創(chuàng)建局部命名空間

而locals的作用,就是以字典的形式,返回當前函數(shù)內(nèi)變量名和變量值,比如:

def func(a = 1):
  b = 2
  print(locals())
  return a+b
func()  # {'b': 2, 'a': 1}

這就可以解釋動態(tài)訪問變量的原理了,就像訪問字典一樣,比如我們要根據(jù)key訪問字典的值,只需要

dict = {'b': 2, 'a': 1}
print(dict["b"])

所以,locals()[變量名] 即可動態(tài)訪問當前函數(shù)內(nèi)的變量名,而locals()[“l(fā)ist101”] = [] 也可以動態(tài)創(chuàng)建數(shù)組,等價于 list101 = []

但是locals只能訪問所在函數(shù)內(nèi)部的變量,且不可修改,要訪問全局變量or修改,則需要使用globals函數(shù)。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關內(nèi)容請查看下面相關鏈接

相關文章

  • Pycharm關于遠程JupyterLab以及JupyterHub登錄問題

    Pycharm關于遠程JupyterLab以及JupyterHub登錄問題

    這篇文章主要介紹了Pycharm關于遠程JupyterLab以及JupyterHub登錄問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • pyinstaller 3.6版本通過pip安裝失敗的解決辦法(推薦)

    pyinstaller 3.6版本通過pip安裝失敗的解決辦法(推薦)

    這篇文章主要介紹了pyinstaller 3.6版本通過pip安裝失敗的解決辦法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-01-01
  • Python實現(xiàn)疫苗接種管理數(shù)據(jù)庫步驟詳解

    Python實現(xiàn)疫苗接種管理數(shù)據(jù)庫步驟詳解

    這篇文章主要為大家介紹了Python實現(xiàn)疫苗接種管理數(shù)據(jù)庫步驟詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09
  • Python?time三種時間轉(zhuǎn)換小結(jié)

    Python?time三種時間轉(zhuǎn)換小結(jié)

    本文主要介紹了Python?time三種時間轉(zhuǎn)換小結(jié),主要包括時間戳,結(jié)構(gòu)化時間,字符串時間,文中根據(jù)實例編碼詳細介紹的十分詳盡,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • python xmind 包使用詳解(其中解決導出的xmind文件 xmind8可以打開 xmind2020及之后版本打開報錯問題)

    python xmind 包使用詳解(其中解決導出的xmind文件 xmind8可以打開 xmind2020及之后版本打

    xmind8 可以打開xmind2020 報錯,如何解決這個問題呢?下面小編給大家?guī)砹藀ython xmind 包使用(其中解決導出的xmind文件 xmind8可以打開 xmind2020及之后版本打開報錯問題),感興趣的朋友一起看看吧
    2021-10-10
  • Python Google風格注釋的使用

    Python Google風格注釋的使用

    Google風格注釋是一種Python代碼注釋的標準化格式,它提供了一種規(guī)范的注釋格式,使得代碼更加易讀、易于維護,本文就來介紹一下Google風格注釋的語法和用法,感興趣的可以了解一下
    2023-11-11
  • 進一步了解Python中的XML 工具

    進一步了解Python中的XML 工具

    這篇文章主要介紹了更為深入的的Python中的XML工具,本文來自于IBM官方開發(fā)者技術(shù)文檔,需要的朋友可以參考下
    2015-04-04
  • Python實現(xiàn)一鍵整理百度云盤中重復無用文件

    Python實現(xiàn)一鍵整理百度云盤中重復無用文件

    有沒有頭疼過百度云盤都要塞滿了,可是又沒有工具能剔除大量重復無用的文件?這里教你一個用Python實現(xiàn)的簡單方法,通過整理目錄的方式來處理我們云盤中無用的文件吧
    2022-08-08
  • python安裝與使用redis的方法

    python安裝與使用redis的方法

    這篇文章主要介紹了python安裝與使用redis的方法,分析了安裝與配置的具體步驟,并結(jié)合實例詳細分析了redis數(shù)據(jù)庫的具體使用技巧,需要的朋友可以參考下
    2016-04-04
  • 在Django中輸出matplotlib生成的圖片方法

    在Django中輸出matplotlib生成的圖片方法

    今天小編就為大家分享一篇在Django中輸出matplotlib生成的圖片方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05

最新評論

长兴县| 宾阳县| 曲水县| 大荔县| 合水县| 永宁县| 平原县| 凤山市| 青铜峡市| 枣强县| 新龙县| 罗田县| 搜索| 凤台县| 宁都县| 景泰县| 水城县| 龙陵县| 和硕县| 襄汾县| 洛南县| 东莞市| 团风县| 平泉县| 徐水县| 水城县| 安龙县| 洛扎县| 永川市| 佛山市| 梁山县| 连城县| 建平县| 柘荣县| 丹巴县| 孟连| 江津市| 同江市| 荆州市| 玛曲县| 芦溪县|