質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

3回答

739閲覧

関数を格納したリストや辞書を作りたい (python3.6)

Meringue

総合スコア21

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2017/10/24 09:28

編集2022/01/12 10:55

javascriptでは

javascript

1var funcsObj = { 2 func0: function(...){...}, 3 func1: function(...){...}, 4 ... 5}

とできますが、これをpythonでする方法はありますか?

※下記の方法以外でお願いします。

python

1def fn0(...): 2 ... 3def fn1(...): 4 ... 5 6funcsDict = { 7 func0: fn0, 8 func1: fn1, 9 ... 10}

<追記>
Python について根本的な部分での理解が不十分なので、少し勉強してきます。
疑問点をもっと適切に表現出来るようになったら改めて質問を投稿するつもりですが、
それまではこの質問内容でお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

quickquip

2017/10/24 21:55

もっとも真っ当なやり方をしない理由が書いてない、ついた回答への反応もない、ではどういう方向で考えればいいのかわからないです。普通ならそうは書かないトリッキーな方法を、「なぜそうしないといけないのか」という方針がないままに考えるのは大変。
Meringue

2017/10/28 12:42 編集

自分はJavaScript脳なので、js風な記述ができないとスッキリしない、程度の理由です。 なんかすいません...
guest

回答3

0

python

1funcsDict = { 2 'func0': lambda x: ..., 3 'func1': lambda y, z: ..., 4}

投稿2017/10/24 09:53

YouheiSakurai

総合スコア6142

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

"+" に足し算をする関数、"-" に引き算をする関数を辞書で結びつける例を示します。

simple_eval.py

python

1OPERATION = { 2 '+': lambda x, y: x + y, 3 '-': lambda x, y: x - y 4} 5 6def eval(op, x, y): 7 return OPERATION[op](int(x), int(y)) 8 9 10tokens = "1 + 2".split() 11print(eval(tokens[1], tokens[0], tokens[2])) 12 13tokens = "1 - 2".split() 14print(eval(tokens[1], tokens[0], tokens[2]))

実行結果
イメージ説明

投稿2017/10/24 13:21

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

LouiS0616

2017/10/24 16:08

非常に良い例だと思いますが、組み込み関数evalをシャドウイングしてしまっているのが気になります。
Meringue

2017/10/24 17:12

やはりlambda以外では難しいですかね。。 pythonでも関数はオブジェクトだと読んだので、コンストラクタを使わない表記があれば出来るかなと思ったのですが。
guest

0

それ以外の方法だと、以下でしょうか。

python

1funcsDict = {} 2funcsDict['func0'] = fn0 3funcsDict['func1'] = fn1 4...

投稿2017/10/24 09:36

shimizukawa

総合スコア1847

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問