"sys.maxint"
ฉันได้รับการพยายามที่จะหาวิธีที่จะเป็นตัวแทนของจำนวนเต็มสูงสุดและฉันได้อ่านกับการใช้งาน อย่างไรก็ตามใน Python 3 เมื่อฉันเรียกว่าฉันจะได้รับ:
AttributeError: module 'object' has no attribute 'maxint'
"sys.maxint"
ฉันได้รับการพยายามที่จะหาวิธีที่จะเป็นตัวแทนของจำนวนเต็มสูงสุดและฉันได้อ่านกับการใช้งาน อย่างไรก็ตามใน Python 3 เมื่อฉันเรียกว่าฉันจะได้รับ:
AttributeError: module 'object' has no attribute 'maxint'
คำตอบ:
ค่าคงที่ sys.maxint ถูกลบเนื่องจากไม่มีการ จำกัด ค่าของจำนวนเต็มอีกต่อไป อย่างไรก็ตาม sys.maxsize สามารถใช้เป็นจำนวนเต็มขนาดใหญ่กว่ารายการที่ใช้งานได้จริงหรือดัชนีสตริง มันสอดคล้องกับขนาดจำนวนเต็ม“ ธรรมชาติ” ของการใช้งานและโดยทั่วไปจะเหมือนกับ sys.maxint ในรีลีสก่อนหน้าบนแพลตฟอร์มเดียวกัน (สมมติว่าเป็นตัวเลือกบิลด์เดียวกัน)
ในฐานะที่เป็นออกแหลมโดยคนอื่น, Python 3 int
ไม่ได้มีขนาดสูงสุด แต่ถ้าคุณเพียงแค่ต้องการสิ่งที่รับประกันว่าจะสูงกว่าที่อื่น ๆค่าแล้วคุณสามารถใช้ค่าลอยสำหรับอินฟินิตี้ซึ่งคุณจะได้รับด้วยint
float("inf")
Python 3 ints ไม่มีค่าสูงสุด
หากจุดประสงค์ของคุณคือกำหนดขนาดสูงสุดของ int ใน C เมื่อรวบรวมแบบเดียวกับ Python คุณสามารถใช้โมดูล struct เพื่อค้นหา:
>>> import struct
>>> platform_c_maxint = 2 ** (struct.Struct('i').size * 8 - 1) - 1
หากคุณสงสัยเกี่ยวกับรายละเอียดการใช้งานภายในของออบเจ็กต์ Int ของ Python 3 ให้ดูsys.int_info
บิตต่อหลักและรายละเอียดขนาดหลัก ไม่มีโปรแกรมปกติที่ควรใส่ใจกับสิ่งเหล่านี้
หากคุณกำลังมองหาหมายเลขที่มากกว่าหมายเลขอื่น:
วิธีที่ 1:
float('inf')
วิธีที่ 2:
import sys
max = sys.maxsize
หากคุณกำลังมองหาหมายเลขที่เล็กกว่าคนอื่น ๆ :
วิธีที่ 1:
float('-inf')
วิธีที่ 2:
import sys
min = -sys.maxsize - 1
วิธีที่ 1 ทำงานได้ทั้งใน Python2 และ Python3 วิธีที่ 2 ทำงานใน Python3 ฉันไม่ได้ลองวิธีที่ 2 ใน Python2
Python 3.0 ไม่มี sys.maxint อีกต่อไปเนื่องจาก int ของ Python 3 มีความยาวตามอำเภอใจ แทนที่จะเป็น sys.maxint จะมี sys.maxsize ขนาดสูงสุดของขนาดที่เป็นค่าบวก size_t aka Py_ssize_t
ทางเลือกคือ
import math
... math.inf ...