目次
1. Panimula
Bakit mahalaga ang pag-verify ng uri sa Python? Ang Python ay isang dinamikong typed na wika, kung saan ang uri ng mga variable at object ay natutukoy sa oras ng pagpapatakbo. Dahil sa flexible na disenyo ng wika, hindi kinakailangang tahasang ideklara ang mga uri, ngunit ang flexibility na ito ay maaaring magdulot ng hindi inaasahang mga error sa uri at mga problema sa pag-andar. Kaya naman, mahalaga ang pag-verify ng uri upang mapanatili ang pagiging maaasahan at katatagan ng mga programang Python. Sa artikulong ito, ipapaliwanag ang mga pangunahing pamamaraan ng pag-verify ng uri sa Python tulad ngtype()
, isinstance()
, at iba pang mga advanced na pamamaraan.2. Pangkalahatang-ideya ng mga uri ng data sa Python
Python, may iba’t ibang uri ng data tulad ng mga numeric type, string type, list type, at dictionary type. Ang bawat uri ng data ay may tiyak na gamit, at sa pamamagitan ng pag-verify ng uri, maaaring maiwasan ang mga hindi inaasahang error.Mga Pangunahing Uri ng Data
- Numeric type (int, float) Ang numeric type ay may
int
para sa mga integer atfloat
para sa mga decimal.
num1 = 10
num2 = 3.14
print(type(num1)) # <class 'int'>
print(type(num2)) # <class 'float'>
- String type (str) Ito ay uri para mag-imbak ng text data, at tinutukoy ito sa pamamagitan ng paglalagay ng single o double quotes.
text = "Hello, World!"
print(type(text)) # <class 'str'>
- List type (list) Ang list ay isang koleksyon na may pagkakasunod-sunod, maaaring maglaman ng maraming elemento. Ang list ay tinutukoy gamit ang
[]
, at maraming operasyon ang maaaring gawin.
mylist = [1, 2, 3, 4]
print(type(mylist)) # <class 'list'>
- Dictionary type (dict) Ang dictionary type ay nag-iimbak ng data bilang mga pares ng key at value, at tinutukoy gamit ang
{}
.
mydict = {"one": 1, "two": 2}
print(type(mydict)) # <class 'dict'>
3. Pagsusuri ng Uri gamit ang function na type()
type()
ay isang pangunahing built-in function na ginagamit upang makuha ang uri ng tinukoy na object. Dahil simple lang itong nagbabalik ng uri, napaka-kapaki-pakinabang ito sa pagsusuri ng uri ng object.Pangunahing paggamit ng function na type()
Sa susunod na halimbawa, ginagamit ang function na type()
upang suriin ang uri ng variable.myvar = 1234
print(type(myvar)) # <class 'int'>
Maaari ring suriin ang iba pang mga uri gamit ang parehong paraan.mystr = "Hello"
print(type(mystr)) # <class 'str'>
Mga benepisyo at mga babala ng type()
type()
ay nagbibigay ng simpleng paraan para sa pagsusuri ng uri, ngunit kailangan mag-ingat sa pagtukoy ng subclass. Ang type()
ay hindi isinasaalang-alang ang subclass, tinitingnan lamang nito kung tugma ang tinukoy na uri.class Animal:
pass
class Dog(Animal):
pass
dog = Dog()
print(type(dog) == Animal) # False
Sa kasong ito, ang Dog
ay nagmana mula sa Animal
, ngunit ang type()
ay magbabalik ng False
. Kung nais mong isaalang-alang ang subclass, inirerekomenda ang isinstance()
na ipinakikilala sa susunod.4. isinstance()
function para sa pag-verify ng uri
isinstance()
function ay ginagamit upang suriin kung ang isang object ay isang tiyak na uri, o isa sa mga subclass nito. Posible ang flexible na pagsusuri ng uri kasama ang mga relasyon ng inheritance.Pangunahing Paggamit ng isinstance()
Sa susunod na halimbawa, gagamitin ang isinstance()
upang suriin ang uri ng variable.myvar = 1234
print(isinstance(myvar, int)) # True
Sa halimbawang ito, dahil ang myvar
ay uri int
, ibabalik ang True
.Pagtukoy ng Maramihang Uri
Angisinstance()
ay maaaring magpasa ng maramihang uri sa isang tuple upang sabay-sabay na suriin ang mga ito.value = 3.14
print(isinstance(value, (int, float))) # True
Kapaki-pakinabang ito kapag nais suriin ang maramihang uri nang sabay.Pagtukoy ng Subclass
Dahil sinusuportahan ngisinstance()
ang mga subclass, maaari ring suriin kung ang isang object ay kabilang sa isang klase na may inheritance relationship.class Animal:
pass
class Dog(Animal):
pass
dog = Dog()
print(isinstance(dog, Animal)) # True
Sa halimbawang ito, dahil ang instance ng klase Dog
ay nagmana mula sa klase Animal
, ibabalik ang True
.5. Iba pang mga paraan ng pag-verify ng uri
Sa Python, may mga paraan pa para i-verify ang uri bukod satype()
at isinstance()
. Maaaring gamitin ang mga pamamaraang ito ayon sa partikular na pangangailangan.issubclass()
function
issubclass()
ay ginagamit upang suriin kung ang isang klase ay subclass ng ibang klase.class Animal:
pass
class Dog(Animal):
pass
print(issubclass(Dog, Animal)) # True
collections.abc
module
collections.abc
module ay kapaki-pakinabang para sa pag-verify ng uri ng mga koleksyon tulad ng listahan at diksyunaryo. Ang sumusunod ay halimbawa ng pag-suri kung ang listahan ay isang Sequence
.import collections.abc
mylist = [1, 2, 3]
print(isinstance(mylist, collections.abc.Sequence)) # True
typing
module na may type hints
typing
module ay ginagamit upang magpasok ng static type checking sa Python code. Dahil dito, tumataas ang nababasa ng code at nagiging mas madali ang pag-debug.from typing import List
def greet(names: List[str]) -> None:
for name in names:
print(f"Hello, {name}!")
NoneType
type verification
NoneType
ay ang uri ng espesyal na object na tinatawag na None
. Sa pamamagitan ng pag-verify ng uri, maiiwasan ang mga hindi inaasahang error.myvar = None
print(type(myvar)) # <class 'NoneType'>
NoneType
ay kapaki-pakinabang kapag tinitingnan kung ang return value ng isang function ay None
.