tazos87 Δημοσ. 22 Μαρτίου 2014 Δημοσ. 22 Μαρτίου 2014 (επεξεργασμένο) Σχετικά με την εντολή Global θέλω να ρωτήσω... Η 1η: x = 50 def func(): global x print('Το x είναι', x) x = 2 print('Άλλαξα το καθολικό x σε', x) func() print('Η τιμή του x είναι', x) Η ερώτηση: "Γιατί να βάζω την εντολή Global, ενω θα μπορούσα να πω απο την αρχή οτι χ = 2 ??(και αν ηθελα να αλλαξω το χ μονο για τωρα,το αλλαζα τοπικα) Η 2η: def func_outer(): x = 2 print('Το x είναι', x) def func_inner(): global x x = 5 func_inner() print('Το τοπικό x άλλαξε σε', x) func_outer() Ερώτηση: "Εδώ γιατί η global χρησιμοποιεί το πρωτο χ(=2) και όχι το δευτερο(=5) το οποιο αγνοεί και δεν εμφανιζει πουθενα? Επεξ/σία 22 Μαρτίου 2014 από tazos87
tazos87 Δημοσ. 22 Μαρτίου 2014 Μέλος Δημοσ. 22 Μαρτίου 2014 Μολις τα εφτιαξα! Διαφωτιστε με,επειδη προσπαθω να καταλαβω ακριβώς πως λειτουργεί..
gon1332 Δημοσ. 22 Μαρτίου 2014 Δημοσ. 22 Μαρτίου 2014 Μολις τα εφτιαξα! Διαφωτιστε με,επειδη προσπαθω να καταλαβω ακριβώς πως λειτουργεί.. To indentation;
pmav99 Δημοσ. 22 Μαρτίου 2014 Δημοσ. 22 Μαρτίου 2014 Την πρώτη ερώτηση δεν είμαι σίγουρος ότι την καταλαβαίνω. To statement global χρησιμοποιείται προκειμένου να αλλάξεις (δηλαδή να κάνεις assign σε) μία μεταβλητή που έχει δηλωθεί στο global scope. Άν καταλάβεις τα scopes, τότε θα καταλάβεις και γιατί στο δεύτερο παράδειγμα «αγνοείται» το assignment. Δες και αυτά http://stackoverflow.com/questions/4693120/use-of-global-keyword-in-python http://stackoverflow.com/questions/423379/using-global-variables-in-a-function-other-than-the-one-that-created-them Εν γένει, το global δεν είναι κάτι που χρησιμοποιείται καθημερινά. Προσωπικά το αποφεύγω γιατί κάνει τον κώδικα πιο δυσανάγνωστο. Συνήθως είναι πιο απλό να χρησιμοποιήσεις ένα module ή μία class, ενώ καθώς αποκτάς ένα dedicated namespace έχεις και καλύτερη οργάνωση του κώδικα. Για τα scopes αυτό είναι το PEP. Υπόψιν, στην python 3 υπάρχει και το «nonlocal».
tazos87 Δημοσ. 22 Μαρτίου 2014 Μέλος Δημοσ. 22 Μαρτίου 2014 Ευχαριστω! Ναι,εχω δει για την ωρα τα: nonlocal,global,συναρτηση def,len(),range,continue,while,if...αυτα περιπου. Ειμαι ακομα αρχη θελω να πω... -Για τη πρωτη ερωτηση,εννοω οτι αφου χρησιμοποιω το global για να αλλαξω μια μεταβλητη γενικα/καθολικα ενω εχω ορισει πχ το χ ως 2,γιατι να χρησιμοποιω global μεσα στη συναρτηση για να το κανω πχ 4 και να μη το κανω εξαρχης..
pmav99 Δημοσ. 23 Μαρτίου 2014 Δημοσ. 23 Μαρτίου 2014 Στο στάδιο που είσαι, θα σου πρότεινα να μη χάσεις πολύ χρόνο με global και nonlocal. Δεν τα χρειάζεσαι και τόσο πολύ. Προσπάθησε να περνάς σε κάθε συνάρτηση όλες τις μεταβλητές που χρειάζεται ως ορίσματα και θα είσαι ΟΚ. -Για τη πρωτη ερωτηση,εννοω οτι αφου χρησιμοποιω το global για να αλλαξω μια μεταβλητη γενικα/καθολικα ενω εχω ορισει πχ το χ ως 2,γιατι να χρησιμοποιω global μεσα στη συναρτηση για να το κανω πχ 4 και να μη το κανω εξαρχης..Γιατί μπορεί να μην ξέρεις την τιμή που θες να δώσεις. Μπορεί πχ να το δίνει ο χρήστης. text_color = "Black" def change_text_color(): global text_color text_color = input("Give the new text color: ") print("text color: %s", text_color) change_text_color() print("text color: %s", text_color)
tazos87 Δημοσ. 24 Μαρτίου 2014 Μέλος Δημοσ. 24 Μαρτίου 2014 Γιατι μερικες φορες στη Python στο παραθυρο εντολων μου βγαζει "λαθος συνταξη" και αν σωσω το αρχειο και το τρεξω το εκτελει κανονικα;;
pmav99 Δημοσ. 24 Μαρτίου 2014 Δημοσ. 24 Μαρτίου 2014 στο παραθυρο εντολωνΤι ειναι το παράθυρο εντολών; Μήπως εννοείς τον interactive interpreter;
tazos87 Δημοσ. 24 Μαρτίου 2014 Μέλος Δημοσ. 24 Μαρτίου 2014 Το πρώτο που σου βγάζει όταν ανοιγεις το πρόγραμμα,με τα >>>(Δεν ξερω πως το λένε)
pmav99 Δημοσ. 24 Μαρτίου 2014 Δημοσ. 24 Μαρτίου 2014 Πιθανότατα έχει να κάνει με το πως χειρίζεται ο interactive interpreter της κενές γραμμές. Αν πας να κάνεις πχ επικόληση αυτό θα βγάλει λάθος for i in range(10): j = i + 2 print(j) δες και αυτό https://en.wikibooks.org/wiki/Python_Programming/Interactive_mode https://www.inkling.com/read/learning-python-mark-lutz-4th/chapter-3/the-interactive-prompt
tazos87 Δημοσ. 24 Μαρτίου 2014 Μέλος Δημοσ. 24 Μαρτίου 2014 Ετσι το έχω...Δεν ξέρω αν παίζει ρόλο,αλλα μου κοκκινισε το say πριν το 'hello'. >>> def say(message, times = 1): print(message * times) say('Hello') say('World', 5) SyntaxError: invalid syntax >>> Αν το σωσω και το εκτελεσω λειτουργει κανονικά! (αυτο που εγραψες απο πανω το βγάζει κανονικα)
pmav99 Δημοσ. 24 Μαρτίου 2014 Δημοσ. 24 Μαρτίου 2014 Πρέπει να αφήσεις κενό μεταξύ του def say(): print() και του say() say() Πάτα δηλαδή δύο φορές enter μετά το print()
tazos87 Δημοσ. 25 Μαρτίου 2014 Μέλος Δημοσ. 25 Μαρτίου 2014 πωω ναι, χαζο ηταν! Επισης τωρα είδα ενα βιντεο μαθημα και όπως δειχνει στο τελος εγραψα κατι >>> a = 'ego' >>> b = 90 >>> print ("I am %s and %d") %(a, I am %s and %d Traceback (most recent call last): File "<pyshell#2>", line 1, in <module> print ("I am %s and %d") %(a, TypeError: unsupported operand type(s) for %: 'NoneType' and 'tuple' >>> print "I am %s and %d" %(a, SyntaxError: invalid syntax Στο Python 2 δουλεύει,στο 3 δεν λειτουργεί το %s kai to %d??
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα