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

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
    • 2

一応、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が見つからない時は、教えて!gooで質問しましょう!

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

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

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

QPython error C2061: 構文エラー : 識別子 'Py_uintptr_t'

WindowsXPでPython2.6のC Extensionを作ろうとコンパイルすると、
以下のエラーが出ました。
何が悪いのでしょうか?

samplemodule.c
c:\python26\include\pyport.h(89) : error C2061: 構文エラー : 識別子 'Py_uintptr_t'
c:\python26\include\pyport.h(89) : error C2059: 構文エラー : ';'
c:\python26\include\pyport.h(90) : error C2061: 構文エラー : 識別子 'Py_intptr_t'
c:\python26\include\pyport.h(90) : error C2059: 構文エラー : ';'

Aベストアンサー

そのsamplemodule.cはどうなってますか?

気になる点として
http://www.python.jp/doc/nightly/ext/simpleExample.html
> #include <Python.h>
> これで、Python API を取り込みます (必要なら、モジュールの用途に 関する説明や、著作権表示を追加します)。 Python は、システムによっては標準ヘッダの定義に影響するような プリプロセッサ定義を行っているので、 Python.h は いずれの標準ヘッダよりも前にインクルードせねばなりません。

というのがあります。
ただ、WindowsのVCでstdafx.hがからむと、ややこしかった覚えがあります。

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

QPythonでcall_user_funcを行う

お世話になります。

最近Pythonの勉強を始めた初心者です。
GAE/Python2.5で、PHPで言うcall_user_funcを使う方法を探しております。
具体的に言いますと、関数名(メソッド名)を変数に入れて、それを呼び出す方法を探しています。

例えばPHPで言えば下記のようなコードです。
----------------------
<?php
// 呼び出すクラス
class CTestClass
{
  // 呼び出すメソッド
  function TestFunc()
  {
    echo 'Call <CTestClass::TestFunc()>';
  }
}

// 変数にメソッド名を入れて呼び出す
$func = 'TestFunc';
$obj = new CTestClass();

call_user_func( array( $obj, $func ) );
// print Call <CTestClass::TestFunc()>
----------------------

Pythonでは上記のような事は可能でしょうか?
また、メソッドを呼び出すのと普通のグローバル関数を呼び出すのでやり方が違う場合はそちらも教えて頂けるとあり難いです。

以上、よろしくお願い致します。

お世話になります。

最近Pythonの勉強を始めた初心者です。
GAE/Python2.5で、PHPで言うcall_user_funcを使う方法を探しております。
具体的に言いますと、関数名(メソッド名)を変数に入れて、それを呼び出す方法を探しています。

例えばPHPで言えば下記のようなコードです。
----------------------
<?php
// 呼び出すクラス
class CTestClass
{
  // 呼び出すメソッド
  function TestFunc()
  {
    echo 'Call <CTestClass::TestFunc()>';
  }
}

// 変数にメソッド名を入れて呼び出す
$func = ...続きを読む

Aベストアンサー

PHPは知らないけどPythonなら

def func(a,b,c):
 ...
x=func
x(a,b,c)
くらいで書けると思うけど。
あと、Pythonではクラスのメソッドは最初の引数がselfな関数に過ぎないから、関数形式の呼び出しを使うなら気にしなくて良い。
具体的には
class A:
 def f(self,b,c):
  ...
A a
と定義すると
a.f(b,c)
でも
f(a,b,c)
でも呼び出し可能になる。

Qpythonのprintで出力された内容をまとめてstringにいれる

pythonのprintで出力された内容をまとめてstringにいれる方法?

pythonでhtmlをprint出力した内容をstr型などに文字列として

格納したいと考えています。

WEBで調べたのですが、pythonは最近、勉強しはじめたばかりで、

調べ方が悪く、見つけられません。

どのような方法があるのでしょうか?

*勉強不足で申し訳ございません。

Aベストアンサー

Pythonに限った方法ではないですが。

方法1)
printは使わず、 変数に文字列として追加。終了時にその文字列をまとめてprint

方法2)
printの出力先をStringIOオブジェクトにして、ファイルに書く様にして文字列に追加。
終了時にその文字列をまとめてprint

方法3)
自前のprint互換の関数を用意。通常のprintと文字列追加を行う

Qmod_rewriteでの'?'表示

http://www.example.com/search.cgi?a=mypage&b=go&c=1&d=2
を、
http://www.example.com/mypage/go/search?c=1&d=2
に変えたいですが、どのようにすればよいのでしょうか?

htaccessでは・・・

Options +FollowSymlinks
RewriteEngine on
RewriteRule
^/([0-9A-Za-z]+)\/([0-9A-Za-z]+)\/search?c=([0-9A-Za-z]+)&d=([0-9A-Za-z]+)$
/search.cgi?a=$1&b=$2&c=$3&d=$4 [L]

にしてもアクセスできません…

APACHEマニュアルでは「?」は文字数指定と言う文法に
なるらしく、「?」を表示させたいです。
http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html#RewriteRule

どうすればよろしいでしょうか?ご教示ください。

http://www.example.com/search.cgi?a=mypage&b=go&c=1&d=2
を、
http://www.example.com/mypage/go/search?c=1&d=2
に変えたいですが、どのようにすればよいのでしょうか?

htaccessでは・・・

Options +FollowSymlinks
RewriteEngine on
RewriteRule
^/([0-9A-Za-z]+)\/([0-9A-Za-z]+)\/search?c=([0-9A-Za-z]+)&d=([0-9A-Za-z]+)$
/search.cgi?a=$1&b=$2&c=$3&d=$4 [L]

にしてもアクセスできません…

APACHEマニュアルでは「?」は文字数指定と言う文法に
なるらしく、「?」を表示させたい...続きを読む

Aベストアンサー

RewriteRuleではquery string(URLの?以降の文字列)にマッチさせることは出来ません。query stringの操作にはRewriteCondを使います。
しかしご質問のケースでは元のquery string(c=1&d=2)の部分は変更する必要がないので%{QUERY_STRING}をそのまま使えばよいと思います。

RewriteRule \
^/([0-9A-Za-z]+)/([0-9A-Za-z]+)/search$ \
/search.cgi?a=$1&b=$2&%{QUERY_STRING} [L]

でどうでしょう。(\は改行のエスケープなので1行で書く場合は必要ありません)


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

人気Q&Aランキング

おすすめ情報