functie is niet gedefinieerd fout in Python

Ik probeer een basisfunctie in Python te definiëren, maar ik krijg altijd de volgende foutmelding wanneer ik een eenvoudig testprogramma uitvoer;

>>> pyth_test(1, 2)
Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    pyth_test(1, 2)
NameError: name 'pyth_test' is not defined

Hier is de code die ik gebruik voor deze functie;

def pyth_test (x1, x2):
    print x1 + x2

Update: Ik heb het script genaamd Pyth.py open en dan typ ik Pyth_Test (1,2) in de tolk wanneer het de fout geeft.

Bedankt voor de hulp. (Mijn excuses voor de basisvraag, ik heb nog nooit eerder geprogrammeerd en probeer Python als hobby te leren)


import sys
sys.path.append ('/Users/clanc/Documents/Development/')
import test
printline()
## (the function printline in the test.py file
##def printline():
##   print "I am working"

Antwoord 1, Autoriteit 100%

Ja, maar in welk bestand is pyth_test‘s definitie aangegeven? Bevindt het zich ook voordat het wordt genoemd?

EDIT:

Maak het in perspectief, maak een bestand met de naam test.pymet de volgende inhoud:

def pyth_test (x1, x2):
    print x1 + x2
pyth_test(1,2)

Voer nu de volgende opdracht uit:

python test.py

U zou de uitvoer die u wenst te zien. Als u nu in een interactieve sessie bent, zou het zo moeten gaan:

>>> def pyth_test (x1, x2):
...     print x1 + x2
... 
>>> pyth_test(1,2)
3
>>> 

Ik hoop dat dit uitlegt hoe de aangifte werkt.


Om u een idee te geven van hoe de lay-out werkt, maken we enkele bestanden. Maak een nieuwe lege map om dingen schoon te houden met het volgende:

mijnfunctie.py

def pyth_test (x1, x2):
    print x1 + x2 

programma.py

#!/usr/bin/python
# Our function is pulled in here
from myfunction import pyth_test
pyth_test(1,2)

Als je nu rent:

python program.py

Het zal 3 afdrukken. Nu, om uit te leggen wat er mis ging, laten we ons programma op deze manier aanpassen:

# Python: Huh? where's pyth_test?
# You say it's down there, but I haven't gotten there yet!
pyth_test(1,2)
# Our function is pulled in here
from myfunction import pyth_test

Laten we nu eens kijken wat er gebeurt:

$ python program.py 
Traceback (most recent call last):
  File "program.py", line 3, in <module>
    pyth_test(1,2)
NameError: name 'pyth_test' is not defined

Zoals opgemerkt, kan Python de module om de hierboven beschreven redenen niet vinden. Om die reden dient u uw aangiften bovenaan te houden.

Als we nu de interactieve python-sessie uitvoeren:

>>> from myfunction import pyth_test
>>> pyth_test(1,2)
3

Hetzelfde proces is van toepassing. Nu is het importeren van pakketten niet zo eenvoudig, dus ik raad je aan om te kijken hoe modules werken met Python. Ik hoop dat dit helpt en veel succes met je lessen!


Antwoord 2, autoriteit 14%

Het werkt voor mij:

>>> def pyth_test (x1, x2):
...     print x1 + x2
...
>>> pyth_test(1,2)
3

Zorg ervoor dat u de functie definieert voordatu deze aanroept.


Antwoord 3, autoriteit 6%

In python zijn functies niet overal op magische wijze toegankelijk (zoals in bijvoorbeeld php). Die moeten eerst worden aangegeven. Dus dit zal werken:

def pyth_test (x1, x2):
    print x1 + x2
pyth_test(1, 2)

Maar dit niet:

pyth_test(1, 2)
def pyth_test (x1, x2):
    print x1 + x2

Antwoord 4

Het zou helpen als je de code laat zien die je gebruikt voor het eenvoudige testprogramma. Zet direct in de tolk dit lijkt te werken.

>>> def pyth_test (x1, x2):
...     print x1 + x2
... 
>>> pyth_test(1, 2)
3
>>> 

Antwoord 5

als je werkt met IDLE geïnstalleerde versie van Python

>>>def any(a,b):
...    print(a+b)
...
>>>any(1,2)
3

Other episodes