Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ. (επεξεργασμένο)

Σχετικά με την εντολή 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) το οποιο αγνοεί και δεν εμφανιζει πουθενα?

Επεξ/σία από tazos87
Δημοσ.

Μολις τα εφτιαξα!

 

Διαφωτιστε με,επειδη προσπαθω να καταλαβω ακριβώς πως λειτουργεί..

 

To indentation;

Δημοσ.

Την πρώτη ερώτηση δεν είμαι σίγουρος ότι την καταλαβαίνω.

 

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».

Δημοσ.

Ευχαριστω!

Ναι,εχω δει για την ωρα τα:

nonlocal,global,συναρτηση def,len(),range,continue,while,if...αυτα περιπου.

Ειμαι ακομα αρχη θελω να πω...

 

-Για τη πρωτη ερωτηση,εννοω οτι αφου χρησιμοποιω το global για να αλλαξω μια μεταβλητη γενικα/καθολικα ενω εχω ορισει πχ το χ ως 2,γιατι να χρησιμοποιω global μεσα στη συναρτηση για να το κανω πχ 4 και να μη το κανω εξαρχης..

Δημοσ.

Στο στάδιο που είσαι, θα σου πρότεινα να μη χάσεις πολύ χρόνο με 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)
Δημοσ.

Γιατι μερικες φορες στη Python στο παραθυρο εντολων μου βγαζει "λαθος συνταξη" και αν σωσω το αρχειο και το τρεξω το εκτελει κανονικα;;

Δημοσ.

Πιθανότατα έχει να κάνει με το πως χειρίζεται ο 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

Δημοσ.

Ετσι το έχω...Δεν ξέρω αν παίζει ρόλο,αλλα μου κοκκινισε το say πριν το 'hello'.

>>> def say(message, times = 1):
    print(message * times)
say('Hello')
say('World', 5)
SyntaxError: invalid syntax
>>> 

Αν το σωσω και το εκτελεσω λειτουργει κανονικά! (αυτο που εγραψες απο πανω το βγάζει κανονικα)

Δημοσ.

Πρέπει να αφήσεις κενό μεταξύ του

def say():
    print()

και του

say()
say()

Πάτα δηλαδή δύο φορές enter μετά το print()

Δημοσ.

πωω ναι, χαζο ηταν!
 

Επισης τωρα είδα ενα βιντεο μαθημα 


και όπως δειχνει στο τελος εγραψα κατι 
>>> 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??

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...