À l'aide de la valeur de retour à l'intérieur d'une autre fonction
J'ai deux fonctions. Veuillez voir les fonctions ci-dessous;
def check_channel_number(self):
print "***************Channel Checker *********************"
print ''
user_channel_number = int(re.sub('\D', '', raw_input("Enter a channel number, (3digit): "))[:3]);
channel = ("channelNr= '%d'") % (user_channel_number)
print channel
# channel_search = channel + str(user_channel_number)
datafile = file('output.txt')
found = False
for line in datafile:
if channel in line:
found = True
print 'The channel number you entered is correct and will be deleted'
return user_channel_number
print 'The channel number you entered is not on the planner'
return False
Voulez juste utiliser le retour de la valeur de (user_channel_number) de la fonction suivante.
def delete_events(self):
if user_channel_number == True:
return 'The program number is correct and will be deleted'
# action = 'DeleteEvent'
menu_action = 'all'
book = 'RECYC:687869882'
arg_list = [('C:\\Users\\yke01\\Documents\\StormTest\\Scripts\\Completed'
'\\Utils\\UPNP_Client_Cmd_Line.py')]
arg_list.append(' --action=')
arg_list.append(action)
arg_list.append(' --ip=')
arg_list.append('10.10.8.89')
arg_list.append(' --objectId=')
arg_list.append(book)
subprocess.call(["python", arg_list])
print 'The program deleted successfully'
Quand je lance mon script, il est dit user_channel_number
n'est pas défini à l'échelle mondiale ? Comment puis-je appeler user_channel_number
à l'intérieur de la delete_events()
fonction?
- 1. Vous typecasted
user_channel_number
àint
, puis essayez de le comparer àTrue
. 2.check_channel_number
renvoie toujours false. 3. Votre instruction de retour dansdelete_events
s'arrête tout le code après que de s'exécuter. On dirait que vous êtes dans une classe? Vous pouvez définirself.user_channel_number
de la rendre accessible à toutes les méthodes dans la classe que vous êtes dans.
Vous devez vous connecter pour publier un commentaire.
Fonctions ne peuvent pas partager leurs variables locales. Vous pouvez retourner la valeur de la première et de passer à la deuxième:
Ou enregistrer la valeur de l'objet:
Lorsque vous définissez une variable à l'intérieur d'une fonction, c'est une variable locale, ce qui signifie qu'il ne peut être accédé qu'à l'intérieur de cette fonction.
Au sein d'une Classe
On dirait que vous êtes à l'intérieur d'une classe, de sorte que vous pouvez faire de la variable accessible à toutes les méthodes dans la classe en le définissant comme ceci:
Et puis dans votre deuxième fonction, vous pouvez l'utiliser comme suit:
À l'extérieur d'une classe
Si vous n'êtes pas à l'aide de méthodes à l'intérieur d'une classe, vous pouvez utiliser à la place la
global
builtin.Par exemple,
À l'aide d'une valeur retournée par une fonction
À la place de votre première fonction,
check_channel_number()
, vous pouvez l'avoir de retouruser_channel_number
. Vous pouvez ensuite appeler cette fonction à l'intérieur dedelete_events()
, comme suit:Donc je pense que lorsque vous appelez la
check_channel_number
fonction,user_channel_number
est défini dans il y, de sorte que lorsque vous appelezdelete_events
, il est allé hors de portée, peut-être quelque chose comme cela aiderait?J'aurais probablement la user_channel_number comme entrée pour la fonction de suppression trop, de sorte qu'il serait à son tour tenu de cette: (où le collège est le
user_channel_number
)J'ai aussi changé de retour, Le numéro de programme est correct et sera supprimé" pour imprimer une déclaration que j'ai le sentiment que le retour serait la fin de la fonction avant les autres lignes de code sera exécuté
De sorte que le code serait probablement quelque chose comme:
EDIT:
viens de remarquer qu'il ressemble à vos fonctions font partie d'une classe,
dans ce cas, vous pourriez faire:
(ou si vous ne voulez pas passer le user_channel_number dans la fonction que vous pouviez changer
if user_channel_number:
àif self. user_channel_number: