Python Alternatives aux Variables Globales
import random
#----------------------------------------------#
def main():
create_list_and_find_max_and_min(10)
the_smart_way()
#----------------------------------------------#
def create_list_and_find_max_and_min(n):
global my_array
my_array = []
n = input("How many numbers do you want in your array?:")
for i in range(n):
my_array.append(random.randint(1,n))
print "My array is:", my_array
#----------------------------------------------#
min = my_array[0]
for number in my_array:
if min > number:
min = number
print "The minimum value in the array is:", min
#----------------------------------------------#
max = my_array[0]
for number in my_array:
if max < number:
max = number
print "The maximum value in the array is:", max
#----------------------------------------------#
def the_smart_way():
# "This one uses the built-in Python functions for min/max..."
min_my_array = min(my_array)
max_my_array = max(my_array)
return min_my_array, max_my_array
#----------------------------------------------#
if __name__ == '__main__':
main()
Je suis assez nouveau à l'aide de Python. J'ai généralement entendu que l'utilisation de variables globales est une mauvaise pratique lors de la programmation.. Donc existe-il des alternatives à ce que j'essaie de faire ici. Ce qui est d'utiliser la variable "my_array" de l'intérieur d'une autre fonction? Merci!
Veuillez modifier la question si vous ajoutez de l'information ou de suppression des informations inutiles. Poster des commentaires sur les réponses si vous en avez.
Désolé, j'ai essayé de mettre à jour mon code afin de le réparer, et faire remarquer une erreur que je suis encore en train.. :/
Désolé, j'ai essayé de mettre à jour mon code afin de le réparer, et faire remarquer une erreur que je suis encore en train.. :/
OriginalL'auteur Shankar Kumar | 2012-07-12
Vous devez vous connecter pour publier un commentaire.
Oui, il y a deux alternatives.
Tout d'abord, vous pouvez transmettre les valeurs autour de la place de l'utilisation de variables globales. Par exemple, create_list_and_find_max_and_min peut créer le tableau localement et de le retourner, alors vous pouvez passer à the_smart_way:
Ensuite, vous pouvez créer une classe qui encapsule les données et les fonctions qui opèrent sur des données:
Vous devriez probablement comprendre le raisons les variables globales sont mauvaises pratiques.
Imaginez que vous souhaitez créer deux tableaux. Avec des variables globales, le second remplace le premier, qui sera à jamais disparu.
Avec une variable locale, vous pouvez stocker tous les deux:
À l'aide d'un objet fournit les mêmes avantages; la différence entre les deux dépend en définitive de savoir si les opérations font partie de la signification des données, ou si les données autonome et le opérations sont génériques. (Ou, parfois, si vous êtes plus d'une fonctionnelle snob ou un OO snob...)
Je n'ai pas de poste le code complet, d'où le #... bits. Je vais le modifier pour inclure l'ensemble de la chose; donnez-moi une minute.
OriginalL'auteur abarnert
Fonctions faire des choses pour les objets, puis retourner les résultats. Vous souhaitez conserver les fonctions de morts-simple et d'effectuer la totalité de votre logique et de traitement à l'extérieur de la fonction. Cela permettra d'éliminer la nécessité pour les variables globales et fera de votre code beaucoup, beaucoup plus facile à lire.
Cela étant dit, voici comment je m'attaque à votre problème:
OriginalL'auteur Blender
Ici est de savoir comment je pourrait faire ceci:
Merci, j'ai supposé qu'il était censé le faire imprimer, mais il n'a pas vraiment d'importance.
OriginalL'auteur jamylak