2017-10-30 7 views
1

で関数を呼び出し、私は非常に簡単なプログラムをコード化しているが、私は質問の主なポイントに到達するのに十分短いスクリプトを投稿します:は別の1

def hello(): 
    print("hello") 
    good_morning() 

def good_morning(): 
    print("good morning") 
hello() 

私は機能についての質問をしました。 Pythonガイド(Allan Downeyによって書かれている)によると、Pythonはプログラムの最初の部分にあるかのようにhello()を実行するので、呼び出しが関数の定義の前にある場合はどうすればこのことができますか?

def hello(): 
    print("hello") 
    good_morning() 

hello() 

def good_morning(): 
    print("good morning") 

>> NameError: name 'good_morning' is not defined 

が、あなたのコードは、それがhello()メソッドを呼び出す前にコンパイルされるように、両方の方法を可能にしているので、コードをコンパイルし、実行します:

+3

コールが前の場合は動作しません。 –

+0

Typo: 'goodmorning'は' good_morning'です。 – Barmar

+0

ありがとうございました!だから、ガイドは正しくありませんか? –

答えて

0

あなたのコードは次のようであるならば、それは文句を言わない仕事

def hello(): 
    print("hello") 
    good_morning() 

def good_morning(): 
    print("good morning") 

hello() 

>> Hello 
>> good morning 
0

名を確認し、あなたがタイプミスを持っている("undefined variable goodmorning()"コンパイラがわかります

https://repl.it/N2qt/0あなたがオンラインこのエディタで見ることができるようにsがウェル)書かれており、動作するPythonの事項の関数の定義のため、そのコードは、動作しないために、このように書き換えされなければならないためです。

def hello(): 
    print("hello") 
    good_morning() 

hello() 

def good_morning(): 
    print("good morning") 

このブレーキを:

hello 
Traceback (most recent call last): 
    File "python", line 8, in <module> 
    File "python", line 3, in hello 
NameError: name 'good_morning' is not defined 

と元のコード(よく書かれた)動作します:

def hello(): 
    print("hello") 
    good_morning() 

def good_morning(): 
    print("good morning") 

hello() 

hello 
good morning 
1

文を順に実行されます。 hello()を実行するまでには、good_morningを定義する文が実行されています。そこで、hello()good_morning()を呼び出そうとすると、その関数が定義されているので成功します。すなわち

、機能ではなく、それはに定義されている使用して関数の前に、と呼ばれることがで使用する関数の前に定義されなければなりません。

関連する問題