Έλεγχος τύπου αντικειμένου στην Python
Για να ελέγξετε τον τύπο ενός στοιχείου, πρέπει να εφαρμόσετε
τη συνάρτηση isinstance. Παίρνει ως πρώτη
παράμετρο το στοιχείο και ως δεύτερη -
τον τύπο στον οποίο ελέγχεται. Σε αυτήν την περίπτωση
ως όνομα για τη δεύτερη παράμετρο
λαμβάνονται τα ονόματα συναρτήσεων που μετατρέπουν δεδομένα
στον αντίστοιχο τύπο: για συμβολοσειρές - str,
αριθμών - int, λιστών - list
κ.λπ. Η συνάρτηση isinstance επιστρέφει
boolean τιμές: αν το στοιχείο αντιστοιχεί
στον τύπο, τότε θα επιστραφεί True, διαφορετικά
περίπτωση - False.
Παράδειγμα
Ας υποθέσουμε ότι έχουμε μια μεταβλητή tst.
Ας ελέγξουμε αν η τιμή της είναι
συμβολοσειρά. Για να το κάνετε αυτό, γράψτε στα δεξιά του if
τη συνάρτηση isinstance. Στις
παραμέτρους της περνάμε το tst και τον τύπο
str. Αν η τιμή και ο τύπος δεδομένων
ταιριάζουν, τότε ας εμφανιστεί το αντίστοιχο
μήνυμα:
tst = 'a'
if isinstance(tst, str):
print('string')
Αποτέλεσμα εκτέλεσης του κώδικα:
'string'
Παράδειγμα
Τώρα ας ελέγξουμε αν η μεταβλητή είναι ακέραιος αριθμός:
tst = 12
if isinstance(tst, int):
print('integer')
Αποτέλεσμα εκτέλεσης του κώδικα:
'integer'
Παράδειγμα
Για να ελέγξετε αν το tst
είναι αριθμός κινητής υποδιαστολής, στη δεύτερη
παράμετρο του isinstance θα πρέπει να περάσετε
τον τύπο float:
tst = 12.0
if isinstance(tst, float):
print('float')
Αποτέλεσμα εκτέλεσης του κώδικα:
'float'
Παράδειγμα
Τώρα ας γράψουμε μια συνθήκη για να
ελέγξουμε το tst ως λίστα:
tst = [1, 2, 3]
if isinstance(tst, list):
print('list')
Αποτέλεσμα εκτέλεσης του κώδικα:
'list'
Παράδειγμα
Ας ελέγξουμε αν η μεταβλητή είναι tuple:
tst = (1, 2, 3)
if isinstance(tst, tuple):
print('tuple')
Αποτέλεσμα εκτέλεσης του κώδικα:
'tuple'
Παράδειγμα
Τώρα ας ορίσουμε μια συνθήκη για να μάθουμε αν η τιμή της μεταβλητής είναι λεξικό:
tst = {'a': 1, 'b': 2, 'c': 3}
if isinstance(tst, dict):
print('dictionary')
Αποτέλεσμα εκτέλεσης του κώδικα:
'dictionary'
Πρακτικές ασκήσεις
Ας υποθέσουμε ότι έχετε μια μεταβλητή. Ελέγξτε αν η τιμή της είναι ακέραιος αριθμός.
Μάθετε αν η δεδομένη μεταβλητή είναι αριθμός κινητής υποδιαστολής.
Ελέγξτε αν η μεταβλητή περιέχει τιμή συμβολοσειράς.
Ελέγξτε αν η δεδομένη μεταβλητή είναι λεξικό.
Ελέγξτε αν η δεδομένη μεταβλητή είναι σύνολο.
Ελέγξτε αν η δεδομένη μεταβλητή είναι tuple.
Ελέγξτε αν η δεδομένη μεταβλητή είναι λίστα.