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

歡迎訪問 生活随笔!

生活随笔

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

python

python中locals函数_Python神奇的内置函数locals的实例讲解

發布時間:2024/8/23 python 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python中locals函数_Python神奇的内置函数locals的实例讲解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

摘要

本文我們介紹神奇的locals函數,包括動態創建變量和動態訪問變量,以及一個應用場景。

相同屬性不相鄰問題

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

list1 = [task1,task2,task3…taskn]

list2 = [tid1,tid2,tid3…tidm] (m

神奇的local函數

python語言很好的幫我們解決了這個問題:利用locals內置函數動態創建變量。

locals函數在這里的作用:

- 1、根據傳遞的參數動態創建變量

- 2、根據傳遞的參數動態訪問變量

demo

def apart_program_by_task(list1,list2):

list_all_pro = []

#動態創建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)

#循環訪問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中,我們可以很靈活的根據list2的長度動態創建len(list2)個list,然后根據拼接變量名訪問每個list,從而做到按tid歸類。

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

更多

為什么locals函數可以動態創建和訪問變量,這里我們必須先介紹python的命名空間。

局部命名空間local:每個函數自己的命名空間,記錄函數的參數和局部變量。

全局命名空間global:每個模塊自己的命名空間,記錄了函數、類、導入的模塊的變量以及常量。

命令空間創建順序:

python解釋器啟動 ->創建內建命名空間 -> 加載模塊 -> 創建全局命名空間 ->函數被調用 ->創建局部命名空間

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

def func(a = 1):

b = 2

print(locals())

return a+b

func() # {'b': 2, 'a': 1}

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

dict = {'b': 2, 'a': 1}

print(dict["b"])

所以,locals()[變量名]即可動態訪問當前函數內的變量名,而locals()[“list101”] = [] 也可以動態創建數組,等價于 list101 = []

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

總結

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

本文標題: Python神奇的內置函數locals的實例講解

本文地址: http://www.cppcns.com/jiaoben/python/253036.html

總結

以上是生活随笔為你收集整理的python中locals函数_Python神奇的内置函数locals的实例讲解的全部內容,希望文章能夠幫你解決所遇到的問題。

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