簡體   English   中英

Python:列出函數內部使用的靜態變量

[英]Python: List static variables used inside a function

我想定義一個函數random_func ,其中包含一些參數,例如arg_1arg_2以及該函數內的一些變量,例如arg_3arg_4

如何在以arg_開頭的函數中獲取這些參數和參數的列表並返回它們相應的值。

例如:

我使用dir()列出所有變量,然后通過調用eval()函數連接所有值。

def random_func(arg_1, arg_2):
   arg_3 = "a"
   arg_4 = "b"
   list = [name for name in dir() if name.startswith("arg_")]
   return "-".join(eval(x) for x in list)

但是,如果我運行,則會收到此錯誤:

random_func(arg_1="one", arg_2="two")
>>> NameError: name 'arg_1' is not defined

理想情況下,我會得到:

one-two-a-b

我能做什么?

注意:這是一個糟糕的主意,我懷疑是 XY 問題 如果您繼續閱讀,就會明白您在雜草叢生中徘徊,並且可能無法解決您的真正問題。

您可以使用locals()來獲取函數dict變量的只讀視圖作為dict 它將使您可以訪問名稱和值,而無需依賴eval (這很慢且更危險):

def random_func(arg_1, arg_2):
    arg_3 = "a"
    arg_4 = "b"
    return "-".join([val for name, val in locals().items() if name.startswith("arg_")])

print(random_func("one", "two"))

在線試試吧!

如您所願,這會打印one-two-ab ,並且它完全不依賴eval

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM