最新閲覧日:

すいません教えて下さい。

pythonで以下の変数をセットしています。

aaa = 'hensu_name'

aaaで指定した'hensu_name'に対して値を入れたい場合は
どのように実装すればよいでしょうか?
(aaaに入れたstringを変数名にしたい)

よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

exec関数を使って文字列をコードとして実行すれば、それっぽいことができるように思います。


あまりいい例を思いつかないですが、以下のような感じでしょうか?

aaa = "hensu_name"
src = aaa + " = 'hello'" #srcの中身は、"hensu_name = 'hello'"

exec(src)
print hensu_name #hello が表示される

src = "print " + aaa #srcの中身は、"print hensu_name"
exec(src) #hello が表示される


ただ、No.1の方がおっしゃっているように、あまりお勧めな方法ではありません。
文字列をコードとして実行してしまうので、少々危険な側面もあります。
悪意のあるコードを含む文字列を実行してしまうとか…。
    • good
    • 0

変数aaaに入れた文字列を使って、なにかの変数にアクセスしたいということでしょうか?


Pythonの名前空間は基本的に辞書でできています。
操作したい変数が属する名前空間のオブジェクトを取得すれば、アクセスできます。

これはローカル変数を操作する例です。
(インデントなしの一番外側lのレベルで実行しているので、locals()もglobals()も同じになってしまいます。locals()、globals()については、ドキュメントを見てください)

>>> aaa = 'hensu_name'
>>> ns = locals() #globals()でも変わりません
>>> ns[aaa] = 'value'
>>> hensu_name
'value'

こちらは、クラスのインスタンスにメンバ変数を追加してみた例です。

>>> aaa = 'hensu_name'
>>> class A(object): pass
...
>>> obj = A()
>>> obj.__dict__[aaa] = 'hoge'
>>> obj.hensu_name
'hoge'
    • good
    • 1

一応、eval を使う、という手段はありますが、あまりお勧めできません。



○辞書を使う
variable['hensu_name'] = 123

○属性だったら、
http://docs.python.jp/2/library/functions.html#g …
http://docs.python.jp/2/library/functions.html#s …
    • good
    • 0

このQ&Aに関連する人気のQ&A

このQ&Aと関連する良く見られている質問

Q初学者_Python_1

Pythonについての質問です。

初歩も初歩、もしかしたらPythonというよりはコマンドプロンプトの質問かも知れませんが・・・

Python27のファイルをC直下におき、初歩の初歩「Hello,world」の.pyファイルをつくってみました。
そして走らせようとしたところ、むりでした。表示は画像の通りです。

パスが通ってないわけではないようです。
どういうことでしょう。

ちなみに、直接
print"hello,world"
では
hello,world
と表示されます。

Aベストアンサー

windowsのコマンドプロンプトでpython(改行)と入力した場合は
インタプリタが起動して'>>>'が表示されます。
この状態では、print文のようなpythonのコマンドを直接入力してその結果が表示されます。
インタプリタを終了させるのは、Ctrl+ZまたはCtrl+Cです。


ファイルに書いたpythonのプログラムを実行する場合は
windowsのコマンドプロンプトから

python ファイル名(改行)

と入力してみてください。

例:python helloworld.py

参考URL:http://docs.python.jp/2.5/tut/node4.html

QPython33\Scripts\easy_install-3.3.exe

Python 3系 64bit版 を Windows10 64bit版にインストールしました。
Scriptsフォルダに、3.3付きのexeと付いていないexeが存在しますが、
その違いは何ですか?
(ex.) pip.exe , pip3.3.exe

Aベストアンサー

> その違いは何ですか?

同じものです。
Linux系のOSにインストールした場合は、pipはpip3.3へのシンボリックリンクとなります。ファイル本体pip3.3で、pipはあくまでもリンクです。
(シンボリックリンクは、ショートカットアイコンの様なものとお考えください)

昔のWindowsでは、このリンク機能が無かったのでファイルそのものをコピーして対応していました。今もその名残りでpip3.3.exeをコピーしてpip.exeを作成しているのだと思います。

Qmod_python での、外部コマンドとの同期

mod_python 内で os.system("curl ....") のような処理を何度も行う必要があります。
現状では for で curl コマンドを連続しているのですが、curl が通信を終える前に次の処理に移ってしまっているようで、動作結果が安定しません。

curl の終了を待ち、次の処理に進むという動作を実現するにはどのような手法があるのでしょうか?

宜しくお願いします。

Aベストアンサー

方法1) subprocessモジュールを使う。
http://docs.python.jp/2.6/library/subprocess.html

方法2)
http://docs.python.jp/2.6/library/internet.html
や、それと同様の モジュールを使って、cURLと同等の通信をPython側で行う

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報