のための入力として変数名のリストを使用し、私は変数名のリストを持っている:Pythonの - 機能
['var1', 'var2', 'var3']
は、どのように私は関数内の変数として文字列変数名を使用できますか?
例:あなたは**kwargs
を使用することができます
x = np.concatenate((var1, var2, var3), axis = 1)
のための入力として変数名のリストを使用し、私は変数名のリストを持っている:Pythonの - 機能
['var1', 'var2', 'var3']
は、どのように私は関数内の変数として文字列変数名を使用できますか?
例:あなたは**kwargs
を使用することができます
x = np.concatenate((var1, var2, var3), axis = 1)
:
今def some_function(**kwargs):
var1 = kwargs.get('var1')
var2 = kwargs.get('var2')
var3 = kwargs.get('var3')
s = ['var1', 'var2', 'var3']
vals = ["someval1", "someval2", "someval3"]
some_function(**{a:b for a, b in zip(s, vals)})
、機能some_function
、var1
、var2
、そしてvar3
に
のためにリスト内の変数を使用します店舗"someval1"
、"someval2"
、これを実現するために210
あなたが必要とする第二のものは、それの名前で変数を取得することです*
または**
オペレータ
my_func(*[a, b])
# equals to
my_func(a, b)
そしてdicts
my_func(**{'p1': a, 'p2': b})
# equals to
my_func(p1=a, p2=b)
と同じ作品を使用する必要があります。 Pythonはこれを行う可能性がありますが、変数がどこに格納されているかによって異なります。
それがオブジェクト属性の場合:ローカル変数の場合
my_obj.var
# can be
getattr(my_obj, 'var')
:
my_var
locals()['my_var']
locals
あなたdict
など、すべてのローカル変数を提供します。同様のglobals
機能もあります。
これまでの例は無用ですが、変数名自体を書き留めるのではなく、python object(list、dictまたはstr)を使用するという考え方です。
ですから、だから、これであなたは
x = np.concatenate((var1, var2, var3), axis = 1)
# to
x = np.concatenate(tpl, axis=1)
NOTE
このコードは壊れやすいなります置き換えることができタプル
def my_func():
var1, var2, var3, var4 = range(10, 14)
vars = ['var1', 'var2', 'var3']
loc = locals() # var1 - var4 and vars are available as dict now
tpl = tuple(loc[k] for k in vars)
print(tpl)
print(tuple([var1, var2, var3]))
を構築するためにそれをすべてを組み合わせることができます - 移動しますそれの一部が別の機能に壊れているかもしれません。そして、私はこのコードスタイルは読みにくいと思います。だから、ほとんどの場合、別のアプローチを探すことをお勧めします。最初のコメントで示唆されているように、いくつかの構造体(dictまたはobject)のすべての変数を組み合わせるほうがずっと良いかもしれません。しかし、私はあなたのコード全体を見ることができないので、それがうまくいくとは言えません。
これは実行しないでください。 'd = {'var1':arr1、 'var2':arr2、 'var3':arr3}' – Psidom
の代わりに変数を辞書に入れてください。 – chepner
私はリストを使用して、機能のサブセット(機能の異なる組み合わせ)を作成し、 – Raff