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

歡迎訪問 生活随笔!

生活随笔

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

python

python 两个内置函数——locals 和globals(名字空间)批量以自定义变量名创建对象

發布時間:2025/3/19 python 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 两个内置函数——locals 和globals(名字空间)批量以自定义变量名创建对象 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • locals 和globals(名字空間)簡介
      • 1、局部變量函數locals例子(locals 返回一個名字/值對的字典)
        • 批量創建對象
          • 示例1
          • 示例2
            • 函數內
            • 類內
      • 2、全局變量函數globals例子
        • 示例1
        • 示例2

locals 和globals(名字空間)簡介

globals() 和 locals() 是作用于作用域下的內置函數

1.作用域相關:

1globals() # 返回全局作用域中的所有名字 2locals() # 返回本地作用域中的所有名字

官方解釋:
globals()——獲取全局變量的字典
locals()——獲取執行本方法所在命名空間內的局部變量的字典

全局變量就是作用在全局。也就是說整個.Py文件中。
而局部變量,在我們現在僅有的學習中,就是在一個函數內有效。

首先我們先在全局的情況下分別使用globals() 和 locals () 兩個內置函數

print(globals()) print(locals())

答案:

{'__name__': '__main__', '__doc__': None, '__package__': None ......} {'__name__': '__main__', '__doc__': None, '__package__': None ......}

首先我們先在局部的情況下分別使用globals() 和 locals () 兩個內置函數

a = 2 def func():b = 1print(globals())print(locals())func()

答案:

{'__name__': '__main__', '__doc__': None, '__package__': None, 'a' = 2 ......} {'b' = 1}

通過這兩個例子,我們不難看出 ,globals()作用在全局,返回該作用域下的所有信息。
locals()作用在局部,返回該作用域下的所有信息。

區別是:globals() 無論將他放在全局還是局部它打印的都是全局作用域下的信息。而locals()是打印當前自己所在作用域的信息,在全局打印全局,在哪個位置的局部就打印哪個位置局部下的作用域信息。

以上引用自:解讀Python中 locals() 和 globals() 內置函數

1、局部變量函數locals例子(locals 返回一個名字/值對的字典)

def foo(arg, a):x = 1y = 'xxxxxx'for i in range(10):j = 1k = iprint locals()#調用函數的打印結果 foo(1,2) #{'a': 2, 'i': 9, 'k': 9, 'j': 1, 'arg': 1, 'y': 'xxxxxx', 'x': 1}

locals 是只讀的,globals 不是?

批量創建對象

示例1
import pyrealsense2 as rs for i in range(10):locals()['pipeline'+str(i)]=rs.pipeline()print(locals()['pipeline'+str(i)]) print('查看名為pipeline0的對象:{}'.format(pipeline1))

結果:

<pyrealsense2.pyrealsense2.pipeline object at 0x0000025A31871AB0> <pyrealsense2.pyrealsense2.pipeline object at 0x0000025A3182EEA0> <pyrealsense2.pyrealsense2.pipeline object at 0x0000025A31880CE0> <pyrealsense2.pyrealsense2.pipeline object at 0x0000025A31871BC8> <pyrealsense2.pyrealsense2.pipeline object at 0x0000025A31871A08> <pyrealsense2.pyrealsense2.pipeline object at 0x0000025A31871C00> <pyrealsense2.pyrealsense2.pipeline object at 0x0000025A318712D0> <pyrealsense2.pyrealsense2.pipeline object at 0x0000025A319F1F10> <pyrealsense2.pyrealsense2.pipeline object at 0x0000025A31871AE8> <pyrealsense2.pyrealsense2.pipeline object at 0x0000025A31871C38> 查看名為pipeline0的對象:<pyrealsense2.pyrealsense2.pipeline object at 0x0000025A3182EEA0>
示例2
函數內
class A():def __init__(self):self.val = 10 for i in range(10):locals()[f'x{i}'] = A()print(locals()[f'x{i}'])print(locals()[f'x{i}'].val) print('打印x1的值:{}'.format(x1.val))

結果:

<__main__.A object at 0x0000025A3180D080> 10 <__main__.A object at 0x0000025A3180D4A8> 10 <__main__.A object at 0x0000025A3180D9B0> 10 <__main__.A object at 0x0000025A31871F98> 10 <__main__.A object at 0x0000025A31871908> 10 <__main__.A object at 0x0000025A31871550> 10 <__main__.A object at 0x0000025A31871B70> 10 <__main__.A object at 0x0000025A31871358> 10 <__main__.A object at 0x0000025A31871CC0> 10 <__main__.A object at 0x0000025A317FE048> 10 打印x1的值:10
類內
class A():def __init__(self):self.val = 10class B():def __init__(self):for i in range(10):self.__dict__[f'x{i}'] = A() print(x1) print(type(x1)) print(x1.val)

結果:

<__main__.A object at 0x0000025A3180D4A8> <class '__main__.A'> 10

2、全局變量函數globals例子

示例1

# -*- coding: utf-8 -*- """ @File : test6.py @Time : 2020/3/26 9:18 @Author : Dontla @Email : sxana@qq.com @Software: PyCharm """def fun():globals()['a'] = 1fun() print(globals()['a'])

結果:

1

示例2

# -*- coding: utf-8 -*- """ @File : test6.py @Time : 2020/3/26 9:18 @Author : Dontla @Email : sxana@qq.com @Software: PyCharm """class Bi:def fun(self):self.foo()def foo(self):globals()['a'] = 1Bi().fun() print(globals()['a'])

結果:

1

參考文章1:Python兩個內置函數——locals 和globals (學習筆記)

參考文章2:python批量創建對象的方法

參考文章3:python批量創建對象

總結

以上是生活随笔為你收集整理的python 两个内置函数——locals 和globals(名字空间)批量以自定义变量名创建对象的全部內容,希望文章能夠幫你解決所遇到的問題。

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