sys.maxint у Python
У програмуванні, maxint/INT_MAX позначає найбільше значення, яке може бути представлене цілим числом. У деяких випадках під час програмування нам може знадобитися призначити значення, яке є більшим за будь-яке інше ціле значення. Зазвичай такі значення призначаються вручну. Наприклад, розглянемо список цілих чисел, мінімальне значення якого потрібно знайти за допомогою a для циклу .
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))> |
Вихід
The minimum value is -22
У підході вище ми припускаємо, що 999999 є максимально можливим значенням у нашому списку та порівняйте його з іншими елементами, щоб оновити, коли буде знайдено значення, менше за нього.
модуль sys на Python
Цей модуль використовується для взаємодії з інтерпретатором і для доступу до змінних, які підтримує інтерпретатор. Його можна використовувати для виконання маніпуляцій у середовищі виконання. Його потрібно імпортувати, як і інші пакунки, щоб використовувати його функції. Python sys модуль надає різноманітні функції та константи, серед яких константа maxint , який можна використовувати для встановлення позитивного цілого значення, яке гарантовано буде більшим за будь-яке інше ціле число. Подивіться на приклад нижче.
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))> |
Вихід
The minimum value is -22
У наведеній вище програмі замість того, щоб призначати більше значення вручну, sys.maxint використовується. Ця константа підтримується в Python версії 2.x. Значення, позначене константою, можна обчислити як:
maxint = 2 31 – 1 (в 32-розрядному середовищі)
maxint = 2 63 – 1 (у 64-розрядному середовищі)
в Python 2 , додавання 1 до maxint дає найвищий можливий довгий внутр і в Python 2.7 , віднімання 1 від maxint дає найменше можливе значення для цілого числа .
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)))> |
Вихід
maxint :9223372036854775807 - maxint - 1 :9223372036854775807 - maxint + 1 :9223372036854775807 -
Цю константу було видалено з Python 3 , оскільки цілі числа в цій версії вважаються довільної довжини. Якщо ви використовуєте цю константу в Python 3, ви отримаєте таку помилку. Розглянемо той самий приклад, де елемент мінімального значення потрібно знайти зі списку.
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))> |
Вихід:
AttributeError: module 'sys' has no attribute 'maxint'
Цю константу було видалено, оскільки більше не було обмежень для значення цілих чисел. в Python 3, було введено константу, подібну до цієї sys.maxsize . Це повертає найбільше можливе ціле значення типу змінної Py_ssize_t а також позначає розмір покажчика платформи. Вважається, що цей максимальний розмір обмежує розмір різних структур даних, таких як рядки та списки. Ще одна річ, яку слід зазначити, що в Python 3 внутр і довгий внутр зливаються в одне. Подивіться на приклад нижче для кращого розуміння.
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)))> |
Вихід
maxint :9223372036854775807 - maxint - 1 :9223372036854775807 - maxint + 1 :9223372036854775807 -