Τι υπάρχει στο __name__ (Python's);

Εισαγωγή στη μεταβλητή _ _name_ _ και τη χρήση της στο Python

Πιθανότατα έχετε δει τη __name__μεταβλητή όταν έχετε περάσει από τον κώδικα Python. Παρακάτω βλέπετε ένα παράδειγμα αποσπάσματος κώδικα για το πώς μπορεί να φαίνεται:

if __name__ == '__main__': main()

Σε αυτό το άρθρο, θέλω να σας δείξω πώς μπορείτε να χρησιμοποιήσετε αυτήν τη μεταβλητή για να δημιουργήσετε λειτουργικές μονάδες στο Python.

Γιατί χρησιμοποιείται η μεταβλητή _ _name_ _;

Η __name__μεταβλητή (δύο υπογράμμιση πριν και μετά) είναι μια ειδική μεταβλητή Python. Παίρνει την αξία του ανάλογα με τον τρόπο εκτέλεσης του σεναρίου που περιέχει.

Μερικές φορές γράφετε ένα σενάριο με λειτουργίες που μπορεί να είναι χρήσιμες και σε άλλα σενάρια. Στο Python, μπορείτε να εισαγάγετε αυτό το σενάριο ως ενότητα σε άλλο σενάριο.

Χάρη σε αυτήν την ειδική μεταβλητή, μπορείτε να αποφασίσετε αν θέλετε να εκτελέσετε το σενάριο. Ή ότι θέλετε να εισαγάγετε τις συναρτήσεις που ορίζονται στο σενάριο.

Ποιες τιμές μπορεί να περιέχει η μεταβλητή __name__;

Όταν εκτελείτε το σενάριό σας, η __name__μεταβλητή ισούται με __main__. Όταν εισάγετε το σενάριο που περιέχει, θα περιέχει το όνομα του σεναρίου.

Ας ρίξουμε μια ματιά σε αυτές τις δύο περιπτώσεις χρήσης και να περιγράψουμε τη διαδικασία με δύο απεικονίσεις.

Σενάριο 1 - Εκτελέστε το σενάριο

Ας υποθέσουμε ότι γράψαμε το σενάριοnameScript.py ως εξής:

def myFunction(): print 'The value of __name__ is ' + __name__
def main(): myFunction()
if __name__ == '__main__': main()

Εάν εκτελείτε το nameScript.py, ακολουθείται η παρακάτω διαδικασία.

Πριν από την εκτέλεση όλων των άλλων κωδικών, η __name__μεταβλητή έχει οριστεί σε __main__. Μετά από αυτό, τοmainκαι οι myFunctionδηλώσεις def εκτελούνται. Επειδή η συνθήκη αξιολογείται ως αληθής, καλείται η κύρια συνάρτηση. Αυτό, με τη σειρά του, καλεί τη λειτουργία μου. Αυτό εκτυπώνει την τιμή του __main__.

Σενάριο 2 - Εισαγάγετε το σενάριο σε άλλο σενάριο

Αν θέλουμε να ξαναχρησιμοποιήσουμε το myFunction σε ένα άλλο σενάριο, για παράδειγμα importingScript.py, μπορούμε να το εισαγάγουμε nameScript.pyως λειτουργική μονάδα.

Ο κωδικός importingScript.pyθα μπορούσε να είναι ο εξής:

import nameScript as ns
ns.myFunction()

Έχουμε, στη συνέχεια, δύο πεδία: ένα importingScriptκαι το δεύτερο πεδίο nameScript. Στην εικόνα, θα δείτε πώς διαφέρει από την πρώτη περίπτωση χρήσης.

Στο importingScript.py η __name__μεταβλητή έχει οριστεί σε __main__. Με την εισαγωγή nameScript, η Python αρχίζει να αναζητά ένα αρχείο προσθέτοντας .pyστο όνομα της λειτουργικής μονάδας. Στη συνέχεια εκτελεί τον κώδικα που περιέχεται στο εισαγόμενο αρχείο.

Αλλά αυτή τη φοράέχει οριστεί σε nameScript. Και πάλι εκτελούνται οι δηλώσεις def για main και myFunction. Αλλά, τώρα η συνθήκη αξιολογείται σε ψευδής και η κύρια δεν καλείται.

Στο importingScript.py καλούμε myFunction που εξάγει nameScript. Το NameScript είναι γνωστό στο myFunction όταν ορίστηκε αυτή η συνάρτηση.

Εάν εκτυπώσατε __name__στο script εισαγωγής, θα εμφανιστεί __main__. Ο λόγος για αυτό είναι ότι η Python χρησιμοποιεί την τιμή που είναι γνωστή στο πεδίο της εισαγωγής script.

συμπέρασμα

Σε αυτό το σύντομο άρθρο, εξήγησα πώς μπορείτε να χρησιμοποιήσετε τη __name__μεταβλητή για να γράψετε ενότητες. Μπορείτε επίσης να εκτελέσετε αυτές τις ενότητες μόνοι τους. Αυτό μπορεί να γίνει κάνοντας χρήση του πώς αλλάζουν οι τιμές αυτών των μεταβλητών ανάλογα με το πού συμβαίνουν.