sys.maxint i Python
I programmering, maxint/INT_MAX angiver den højeste værdi, der kan repræsenteres af et heltal. I nogle tilfælde, mens vi programmerer, kan vi være nødt til at tildele en værdi, der er større end nogen anden heltalsværdi. Normalt tildeler man sådanne værdier manuelt. Overvej f.eks. en liste over heltal, hvor minimumsværdien skal findes ved hjælp af a for sløjfe .
Python
# initializing the list> li> => [> 1> ,> -> 22> ,> 43> ,> 89> ,> 2> ,> 6> ,> 3> ,> 16> ]> > # assigning a larger value manually> curr_min> => 999999> > # loop to find minimum value> for> i> in> range> (> 0> ,> len> (li)):> > > # update curr_min if a value lesser than it is found> > if> li[i] curr_min = li[i] print('The minimum value is ' + str(curr_min))> |
Produktion
The minimum value is -22
I ovenstående tilgang antager vi det 999999 er den maksimalt mulige værdi på vores liste, og sammenlign den med andre elementer for at opdatere, når der findes en værdi, der er mindre end den.
sys-modul i Python
Dette modul bruges til at interagere med tolken og til at få adgang til de variabler, der vedligeholdes af tolken. Det kan bruges til at udføre manipulationer i runtime-miljøet. Dette skal importeres som andre pakker for at udnytte funktionaliteterne i det. Python's sys modul giver en række funktioner og konstanter, hvoriblandt konstanten maxint , som kan bruges til at indstille en positiv heltalværdi, som med garanti er større end ethvert andet heltal. Se på eksemplet nedenfor.
Python
# import the module> import> sys> > # initializing the list> li> => [> 1> ,> -> 22> ,> 43> ,> 89> ,> 2> ,> 6> ,> 3> ,> 16> ]> > # assigning a larger value with> # maxint constant> curr_min> => sys.maxint> > # loop to find minimum value> for> i> in> range> (> 0> ,> len> (li)):> > > # update curr_min if a value lesser> > # than it is found> > if> li[i] curr_min = li[i] print('The minimum value is ' + str(curr_min))> |
Produktion
The minimum value is -22
I programmet ovenfor, i stedet for at tildele en større værdi manuelt, sys.maxint anvendes. Denne konstant understøttes i Python version 2.x. Værdien angivet af konstanten kan beregnes som:
maxint = 2 31 – 1 (i 32-bit miljø)
maxint = 2 63 – 1 (i 64-bit miljø)
I Python 2 , at tilføje 1 til maxint giver den højest mulige lang int og i Python 2.7 , trækker man 1 fra maxint giver det mindst mulige værdi for et heltal .
Python
# import the module> import> sys> > max_int> => sys.maxint> min_int> => sys.maxint> -> 1> long_int> => sys.maxint> +> 1> > print> (> 'maxint :'> +> str> (max_int)> +> ' - '> +> str> (> type> (max_int)))> print> (> 'maxint - 1 :'> +> str> (max_int)> +> ' - '> +> str> (> type> (min_int)))> print> (> 'maxint + 1 :'> +> str> (max_int)> +> ' - '> +> str> (> type> (long_int)))> |
Produktion
maxint :9223372036854775807 - maxint - 1 :9223372036854775807 - maxint + 1 :9223372036854775807 -
Denne konstant blev fjernet fra Python 3 , da heltal i denne version anses for at være af vilkårlig længde. Hvis du bruger denne konstant i Python 3, får du følgende fejl. Overvej det samme eksempel, hvor minimumsværdielementet skal findes ud fra en liste.
Python3
import> sys> > # initializing the list> li> => [> 1> ,> -> 22> ,> 43> ,> 89> ,> 2> ,> 6> ,> 3> ,> 16> ]> > # assigning a larger value with maxint constant> curr_min> => sys.maxint> > # loop to find minimum value> for> i> in> range> (> 0> ,> len> (li)):> > > # update curr_min if a value lesser than it is found> > if> li[i] curr_min = li[i] print('The minimum value is ' + str(curr_min))> |
Output:
AttributeError: module 'sys' has no attribute 'maxint'
Denne konstant blev fjernet, da der ikke længere var en grænse for værdien af heltal. I Python 3, en konstant lignende denne blev indført, hvilket er sys.maxsize . Dette returnerer den højest mulige heltalsværdi af variabeltypen Py_ssize_t og det angiver også platformens pointerstørrelse. Denne maxsize anses for at begrænse størrelsen af forskellige datastrukturer som strenge og lister. En anden ting, der skal bemærkes, er, i Python 3 int og lang int slås sammen til én. Se eksemplet nedenfor for bedre forståelse.
Python3
# import the module> import> sys> > # using sys.maxsize> max_int> => sys.maxsize> min_int> => sys.maxsize> -> 1> long_int> => sys.maxsize> +> 1> > print> (> 'maxint :'> +> str> (max_int)> +> ' - '> +> str> (> type> (max_int)))> print> (> 'maxint - 1 :'> +> str> (max_int)> +> ' - '> +> str> (> type> (min_int)))> > # the data type is represented as int> print> (> 'maxint + 1 :'> +> str> (max_int)> +> ' - '> +> str> (> type> (long_int)))> |
Produktion
maxint :9223372036854775807 - maxint - 1 :9223372036854775807 - maxint + 1 :9223372036854775807 -