IntEnum ja Flag
Käytä kokonaisluku- ja lippuluetteloita
IntEnum ja Flag on ilmainen Python Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Python Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Python Academy-kurssilla on yhteensä 4 oppituntia.
Tavallisen Enumin lisäksi
enum-moduuli sisältää erikoistuneita kantaluokkia. IntEnum-jäsenet toimivat kuten kokonaisluvut, ja Flag-jäsenet voidaan yhdistää bittikohtaisilla operaattoreilla. Ne sopivat tilanteisiin, joissa tavallinen Enum on liian rajoittava.
Tavallinen Enum ei ole int
Tavallista Enum-jäsentä ei voi käyttää vaihdellen sen kokonaislukuarvon kanssa. Kun sitä verrataan lukuun, tulos on False.
from enum import Enum
class Level(Enum):
LOW = 1
HIGH = 2
print(Level.LOW == 1)IntEnum vertautuu kokonaislukuna
IntEnum-jäsen on kokonaisluku, joten se on yhtä suuri kuin numeerinen arvonsa ja tukee järjestysvertailua.
from enum import IntEnum
class Level(IntEnum):
LOW = 1
HIGH = 2
print(Level.LOW == 1)
print(Level.LOW < Level.HIGH)IntEnum aritmetiikassa
Koska jäsenet ovat oikeita kokonaislukuja, niitä voi käyttää laskutoimituksissa ja indeksoinnissa. Käyttäkää tätä, kun arvon on todella toimittava yhdessä numeropohjaisen koodin kanssa.
from enum import IntEnum
class Priority(IntEnum):
LOW = 1
MEDIUM = 5
HIGH = 10
print(Priority.HIGH + 1)
print(Priority.MEDIUM * 2)IntEnum-jäsenten lajittelu
Koska IntEnum tukee järjestysvertailua, jäsenluettelon voi lajitella arvon mukaan ilman ylimääräistä avainfunktiota.
from enum import IntEnum
class Priority(IntEnum):
LOW = 1
MEDIUM = 5
HIGH = 10
for p in sorted([Priority.HIGH, Priority.LOW, Priority.MEDIUM]):
print(p.name)Flag yhdisteltäville asetuksille
Flag-enum on tarkoitettu yhdisteltäville arvoille. Määrittäkää arvoiksi kahden potensseja, jotta kukin jäsen käyttää omaa bittiään.
from enum import Flag, auto
class Permission(Flag):
READ = auto()
WRITE = auto()
EXECUTE = auto()
print(Permission.READ)
print(Permission.READ.value)Flagien yhdistäminen operaattorilla |
Käyttäkää bittikohtaista TAI-operaattoria | yhdistämään liput yhdeksi yhdistelmäarvoksi.
from enum import Flag, auto
class Permission(Flag):
READ = auto()
WRITE = auto()
EXECUTE = auto()
access = Permission.READ | Permission.WRITE
print(access)Jäsenyyden tarkistaminen operaattorilla in
Tarkistakaa, onko lippu asetettu, käyttämällä in-operaattoria, joka suorittaa bittitestin puolestanne.
from enum import Flag, auto
class Permission(Flag):
READ = auto()
WRITE = auto()
EXECUTE = auto()
access = Permission.READ | Permission.WRITE
print(Permission.READ in access)
print(Permission.EXECUTE in access)Leikkaus ja poistaminen
Yhdistäkää liput operaattorilla & (JA) yhteisten bittien löytämiseksi ja poistakaa lippu käyttämällä operaattoria & komplementin ~ kanssa.
from enum import Flag, auto
class Permission(Flag):
READ = auto()
WRITE = auto()
EXECUTE = auto()
access = Permission.READ | Permission.WRITE
still = access & ~Permission.WRITE
print(still)IntFlag kokonaislukulipuille
IntFlag yhdistää molemmat ideat: yhdisteltävät liput, jotka toimivat myös tavallisten kokonaislukujen tavoin. Tämä on hyödyllistä käytettäessä C-rajapintoja tai lukuina tallennettuja bittimaskeja.
from enum import IntFlag, auto
class Mode(IntFlag):
R = 4
W = 2
X = 1
m = Mode.R | Mode.W
print(int(m))Yhdistetyn Flag-arvon läpikäynti
Yhdistetyn Flag-arvon läpikäynti tuottaa jokaisen sen sisältämän yksittäisen lipun, mikä on kätevää aktiivisten asetusten luettelemiseen.
from enum import Flag, auto
class Permission(Flag):
READ = auto()
WRITE = auto()
EXECUTE = auto()
access = Permission.READ | Permission.EXECUTE
for p in access:
print(p.name)Pikatarkistus
Miksi valitsisitte Flag-enumin tavallisen Enum-enumin sijaan?
Kertaus
Opitte käyttämään kokonaisluku- ja lippu-enumeita.
IntEnum-jäsenet toimivat kuten kokonaisluvut ja tukevat järjestysvertailua sekä aritmetiikkaa.Flag-jäsenet yhdistetään operaattoreilla|,&ja~, ja niiden jäsenyyttä tarkistetaan operaattorillain.IntFlagyhdistää molemmat toimintatavat.- Käyttäkää lippuarvoina kahden potensseja.
Opi Python tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 76
- Oppitunnit
- 320
Usein kysytyt kysymykset
Onko oppitunti ”IntEnum ja Flag” ilmainen?
Kyllä – oppitunnin ”IntEnum ja Flag” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Python Academy-kurssin, päivitä CoddyKit PROhon. Python Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”IntEnum ja Flag”?
Käytä kokonaisluku- ja lippuluetteloita Harjoittelet Python Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Python Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Python Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.
Kuinka kauan ”IntEnum ja Flag”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Python Academy-oppitunnilla?
Kyllä. Jokainen Python Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Enum-luokka
- IntEnum ja Flag
- NamedTuple-perusteet
- typing.NamedTuple