![](/img/trans.png)
[英]What is the Python equivalent of static variables inside a function?
[英]Python: List static variables used inside a function
我想定義一個函數random_func
,其中包含一些參數,例如arg_1
和arg_2
以及該函數內的一些變量,例如arg_3
, arg_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.