こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Pythonでの関数呼び出し

現在pythonでのプログラミングをしています。
例えば下のように関数を作るとglobal errorが発生します。
pythonでは引数で関数名を受け取らずに関数内から他の関数を呼び出すことはできないのでしょうか?
よろしくお願いします。
*****************************************
def a():
  b()

def b():
  print "test"

a()
*****************************************

投稿日時 - 2009-10-30 13:59:38

QNo.5408549

すぐに回答ほしいです

質問者が選んだベストアンサー

>になります。何かコード以外の所に問題があるのでしょうか・・・

補足のスクリプトの最後なんですが、a()の呼び出しもクラス定義の中に
入れてしまうのですか?

もしそうだとしたら、何をやりたくてそのように書くのでしょう。
質問者さんのやりたいことはこういうことではないのでしょうか?

class_hoge(object):
____def_a(self):
________self.b()

____def_b(self):
________print_"hello"


hoge().a()

投稿日時 - 2009-10-31 14:23:53

補足

TurboGearsでアプリケーション開発をしようとしています。ご存知かもしれませんがTurboGearsではRootクラスが初めからあり、内部の関数とWebページが対応してるので実際には関数内からほか関数を呼び出します。その時に今回のエラーが発生していました。同じエラーが発生する例としてこのコードを載せています。
しかし、sakusaker7さんのコードを参考にさせてもらえば動かせそうです。今手元に実際の開発環境がないので明後日になりますが試してみたいと思います。

投稿日時 - 2009-10-31 20:21:45

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

>上記のコードをクラス内に記述した場合にエラーが発生するのでした

本当ですか?

class hoge(object):
  def a():
    b()

  def b():
    print "test"

とかすると確かにエラーにはなりますが、質問者さんの言うのとは
別のエラーのはずです。

確実に、質問者さんのおっしゃるエラーの起きるコードを提示してください。

投稿日時 - 2009-10-31 11:26:29

補足

class Test():
  def a():
    b()
  def b():
    print"test"
  a()
になります。何かコード以外の所に問題があるのでしょうか・・・

投稿日時 - 2009-10-31 12:53:42

ANo.1

とりあえず、質問のコードをファイルにコピーして全角空白を半角空白に置き換えたコードはPython2.5.2で動作しました。
Pythonのバージョンと、エラーの詳細をどうぞ。

投稿日時 - 2009-10-30 16:51:15

補足

すみません、上記のコードをクラス内に記述した場合にエラーが発生するのでした
global name 'b' is not definedと出ます
Verは2.6.4です

投稿日時 - 2009-10-31 02:08:46

あなたにオススメの質問