Reference Counts


In [2]:
import sys
one = []
print('At Start    :', sys.getrefcount(one))
two = one
print('Second reference: ', sys.getrefcount(one))
del two
print('After del: ', sys.getrefcount(one))


At Start    : 2
Second reference:  3
After del:  2

Object Size


In [3]:
import sys

class MyClass:
    pass

objects = [
    [], (), {}, 'c', 'string', b'bytes', 1, 2.3, MyClass, MyClass(),
]
for obj in objects:
    print('{:>10}:{}'.format(type(obj).__name__, sys.getsizeof(obj)))


      list:64
     tuple:48
      dict:240
       str:50
       str:55
     bytes:38
       int:28
     float:24
      type:1056
   MyClass:56

In [4]:
import sys


class WithoutAttributes:
    pass


class WithAttributes:
    def __init__(self):
        self.a = 'a'
        self.b = 'b'
        return
without_attrs = WithoutAttributes()
print('WithoutAttributes:', sys.getsizeof(without_attrs))

with_attrs = WithAttributes()
print('WithAttributes:', sys.getsizeof(with_attrs))


WithoutAttributes: 56
WithAttributes: 56

In [7]:
import sys


class WithAttributes:
    def __init__(self):
        self.a = 'a'
        self.b = 'b'
        return

    def __sizeof__(self):
        return object.__sizeof__(self) + \
            sum(sys.getsizeof(k) for k,v in self.__dict__.items())


my_inst = WithAttributes()
print(sys.getsizeof(my_inst))


156

Recursion


In [10]:
import sys

print('Initial limit:', sys.getrecursionlimit())

sys.setrecursionlimit(500)

print('Modified limit:', sys.getrecursionlimit())


def generate_recursion_error(i):
    print('generate_recursion_error({})'.format(i))
    generate_recursion_error(i + 1)


try:
    generate_recursion_error(1)
except RuntimeError as err:
    print('Caught exception:', err)


Initial limit: 1000
Modified limit: 500
generate_recursion_error(1)
generate_recursion_error(2)
generate_recursion_error(3)
generate_recursion_error(4)
generate_recursion_error(5)
generate_recursion_error(6)
generate_recursion_error(7)
generate_recursion_error(8)
generate_recursion_error(9)
generate_recursion_error(10)
generate_recursion_error(11)
generate_recursion_error(12)
generate_recursion_error(13)
generate_recursion_error(14)
generate_recursion_error(15)
generate_recursion_error(16)
generate_recursion_error(17)
generate_recursion_error(18)
generate_recursion_error(19)
generate_recursion_error(20)
generate_recursion_error(21)
generate_recursion_error(22)
generate_recursion_error(23)
generate_recursion_error(24)
generate_recursion_error(25)
generate_recursion_error(26)
generate_recursion_error(27)
generate_recursion_error(28)
generate_recursion_error(29)
generate_recursion_error(30)
generate_recursion_error(31)
generate_recursion_error(32)
generate_recursion_error(33)
generate_recursion_error(34)
generate_recursion_error(35)
generate_recursion_error(36)
generate_recursion_error(37)
generate_recursion_error(38)
generate_recursion_error(39)
generate_recursion_error(40)
generate_recursion_error(41)
generate_recursion_error(42)
generate_recursion_error(43)
generate_recursion_error(44)
generate_recursion_error(45)
generate_recursion_error(46)
generate_recursion_error(47)
generate_recursion_error(48)
generate_recursion_error(49)
generate_recursion_error(50)
generate_recursion_error(51)
generate_recursion_error(52)
generate_recursion_error(53)
generate_recursion_error(54)
generate_recursion_error(55)
generate_recursion_error(56)
generate_recursion_error(57)
generate_recursion_error(58)
generate_recursion_error(59)
generate_recursion_error(60)
generate_recursion_error(61)
generate_recursion_error(62)
generate_recursion_error(63)
generate_recursion_error(64)
generate_recursion_error(65)
generate_recursion_error(66)
generate_recursion_error(67)
generate_recursion_error(68)
generate_recursion_error(69)
generate_recursion_error(70)
generate_recursion_error(71)
generate_recursion_error(72)
generate_recursion_error(73)
generate_recursion_error(74)
generate_recursion_error(75)
generate_recursion_error(76)
generate_recursion_error(77)
generate_recursion_error(78)
generate_recursion_error(79)
generate_recursion_error(80)
generate_recursion_error(81)
generate_recursion_error(82)
generate_recursion_error(83)
generate_recursion_error(84)
generate_recursion_error(85)
generate_recursion_error(86)
generate_recursion_error(87)
generate_recursion_error(88)
generate_recursion_error(89)
generate_recursion_error(90)
generate_recursion_error(91)
generate_recursion_error(92)
generate_recursion_error(93)
generate_recursion_error(94)
generate_recursion_error(95)
generate_recursion_error(96)
generate_recursion_error(97)
generate_recursion_error(98)
generate_recursion_error(99)
generate_recursion_error(100)
generate_recursion_error(101)
generate_recursion_error(102)
generate_recursion_error(103)
generate_recursion_error(104)
generate_recursion_error(105)
generate_recursion_error(106)
generate_recursion_error(107)
generate_recursion_error(108)
generate_recursion_error(109)
generate_recursion_error(110)
generate_recursion_error(111)
generate_recursion_error(112)
generate_recursion_error(113)
generate_recursion_error(114)
generate_recursion_error(115)
generate_recursion_error(116)
generate_recursion_error(117)
generate_recursion_error(118)
generate_recursion_error(119)
generate_recursion_error(120)
generate_recursion_error(121)
generate_recursion_error(122)
generate_recursion_error(123)
generate_recursion_error(124)
generate_recursion_error(125)
generate_recursion_error(126)
generate_recursion_error(127)
generate_recursion_error(128)
generate_recursion_error(129)
generate_recursion_error(130)
generate_recursion_error(131)
generate_recursion_error(132)
generate_recursion_error(133)
generate_recursion_error(134)
generate_recursion_error(135)
generate_recursion_error(136)
generate_recursion_error(137)
generate_recursion_error(138)
generate_recursion_error(139)
generate_recursion_error(140)
generate_recursion_error(141)
generate_recursion_error(142)
generate_recursion_error(143)
generate_recursion_error(144)
generate_recursion_error(145)
generate_recursion_error(146)
generate_recursion_error(147)
generate_recursion_error(148)
generate_recursion_error(149)
generate_recursion_error(150)
generate_recursion_error(151)
generate_recursion_error(152)
generate_recursion_error(153)
generate_recursion_error(154)
generate_recursion_error(155)
generate_recursion_error(156)
generate_recursion_error(157)
generate_recursion_error(158)
generate_recursion_error(159)
generate_recursion_error(160)
generate_recursion_error(161)
generate_recursion_error(162)
generate_recursion_error(163)
generate_recursion_error(164)
generate_recursion_error(165)
generate_recursion_error(166)
generate_recursion_error(167)
generate_recursion_error(168)
generate_recursion_error(169)
generate_recursion_error(170)
generate_recursion_error(171)
generate_recursion_error(172)
generate_recursion_error(173)
generate_recursion_error(174)
generate_recursion_error(175)
generate_recursion_error(176)
generate_recursion_error(177)
generate_recursion_error(178)
generate_recursion_error(179)
generate_recursion_error(180)
generate_recursion_error(181)
generate_recursion_error(182)
generate_recursion_error(183)
generate_recursion_error(184)
generate_recursion_error(185)
generate_recursion_error(186)
generate_recursion_error(187)
generate_recursion_error(188)
generate_recursion_error(189)
generate_recursion_error(190)
generate_recursion_error(191)
generate_recursion_error(192)
generate_recursion_error(193)
generate_recursion_error(194)
generate_recursion_error(195)
generate_recursion_error(196)
generate_recursion_error(197)
generate_recursion_error(198)
generate_recursion_error(199)
generate_recursion_error(200)
generate_recursion_error(201)
generate_recursion_error(202)
generate_recursion_error(203)
generate_recursion_error(204)
generate_recursion_error(205)
generate_recursion_error(206)
generate_recursion_error(207)
generate_recursion_error(208)
generate_recursion_error(209)
generate_recursion_error(210)
generate_recursion_error(211)
generate_recursion_error(212)
generate_recursion_error(213)
generate_recursion_error(214)
generate_recursion_error(215)
generate_recursion_error(216)
generate_recursion_error(217)
generate_recursion_error(218)
generate_recursion_error(219)
generate_recursion_error(220)
generate_recursion_error(221)
generate_recursion_error(222)
generate_recursion_error(223)
generate_recursion_error(224)
generate_recursion_error(225)
generate_recursion_error(226)
generate_recursion_error(227)
generate_recursion_error(228)
generate_recursion_error(229)
generate_recursion_error(230)
generate_recursion_error(231)
generate_recursion_error(232)
generate_recursion_error(233)
generate_recursion_error(234)
generate_recursion_error(235)
generate_recursion_error(236)
generate_recursion_error(237)
generate_recursion_error(238)
generate_recursion_error(239)
generate_recursion_error(240)
generate_recursion_error(241)
generate_recursion_error(242)
generate_recursion_error(243)
generate_recursion_error(244)
generate_recursion_error(245)
generate_recursion_error(246)
generate_recursion_error(247)
generate_recursion_error(248)
generate_recursion_error(249)
generate_recursion_error(250)
generate_recursion_error(251)
generate_recursion_error(252)
generate_recursion_error(253)
generate_recursion_error(254)
generate_recursion_error(255)
generate_recursion_error(256)
generate_recursion_error(257)
generate_recursion_error(258)
generate_recursion_error(259)
generate_recursion_error(260)
generate_recursion_error(261)
generate_recursion_error(262)
generate_recursion_error(263)
generate_recursion_error(264)
generate_recursion_error(265)
generate_recursion_error(266)
generate_recursion_error(267)
generate_recursion_error(268)
generate_recursion_error(269)
generate_recursion_error(270)
generate_recursion_error(271)
generate_recursion_error(272)
generate_recursion_error(273)
generate_recursion_error(274)
generate_recursion_error(275)
generate_recursion_error(276)
generate_recursion_error(277)
generate_recursion_error(278)
generate_recursion_error(279)
generate_recursion_error(280)
generate_recursion_error(281)
generate_recursion_error(282)
generate_recursion_error(283)
generate_recursion_error(284)
generate_recursion_error(285)
generate_recursion_error(286)
generate_recursion_error(287)
generate_recursion_error(288)
generate_recursion_error(289)
generate_recursion_error(290)
generate_recursion_error(291)
generate_recursion_error(292)
generate_recursion_error(293)
generate_recursion_error(294)
generate_recursion_error(295)
generate_recursion_error(296)
generate_recursion_error(297)
generate_recursion_error(298)
generate_recursion_error(299)
generate_recursion_error(300)
generate_recursion_error(301)
generate_recursion_error(302)
generate_recursion_error(303)
generate_recursion_error(304)
generate_recursion_error(305)
generate_recursion_error(306)
generate_recursion_error(307)
generate_recursion_error(308)
generate_recursion_error(309)
generate_recursion_error(310)
generate_recursion_error(311)
generate_recursion_error(312)
generate_recursion_error(313)
generate_recursion_error(314)
generate_recursion_error(315)
generate_recursion_error(316)
generate_recursion_error(317)
generate_recursion_error(318)
generate_recursion_error(319)
generate_recursion_error(320)
generate_recursion_error(321)
generate_recursion_error(322)
generate_recursion_error(323)
generate_recursion_error(324)
generate_recursion_error(325)
generate_recursion_error(326)
generate_recursion_error(327)
generate_recursion_error(328)
generate_recursion_error(329)
generate_recursion_error(330)
generate_recursion_error(331)
generate_recursion_error(332)
generate_recursion_error(333)
generate_recursion_error(334)
generate_recursion_error(335)
generate_recursion_error(336)
generate_recursion_error(337)
generate_recursion_error(338)
generate_recursion_error(339)
generate_recursion_error(340)
generate_recursion_error(341)
generate_recursion_error(342)
generate_recursion_error(343)
generate_recursion_error(344)
generate_recursion_error(345)
generate_recursion_error(346)
generate_recursion_error(347)
generate_recursion_error(348)
generate_recursion_error(349)
generate_recursion_error(350)
generate_recursion_error(351)
generate_recursion_error(352)
generate_recursion_error(353)
generate_recursion_error(354)
generate_recursion_error(355)
generate_recursion_error(356)
generate_recursion_error(357)
generate_recursion_error(358)
generate_recursion_error(359)
generate_recursion_error(360)
generate_recursion_error(361)
generate_recursion_error(362)
generate_recursion_error(363)
generate_recursion_error(364)
generate_recursion_error(365)
generate_recursion_error(366)
generate_recursion_error(367)
generate_recursion_error(368)
generate_recursion_error(369)
generate_recursion_error(370)
generate_recursion_error(371)
generate_recursion_error(372)
generate_recursion_error(373)
generate_recursion_error(374)
generate_recursion_error(375)
generate_recursion_error(376)
generate_recursion_error(377)
generate_recursion_error(378)
generate_recursion_error(379)
generate_recursion_error(380)
generate_recursion_error(381)
generate_recursion_error(382)
generate_recursion_error(383)
generate_recursion_error(384)
generate_recursion_error(385)
generate_recursion_error(386)
generate_recursion_error(387)
generate_recursion_error(388)
generate_recursion_error(389)
generate_recursion_error(390)
generate_recursion_error(391)
generate_recursion_error(392)
generate_recursion_error(393)
generate_recursion_error(394)
generate_recursion_error(395)
generate_recursion_error(396)
generate_recursion_error(397)
generate_recursion_error(398)
generate_recursion_error(399)
generate_recursion_error(400)
generate_recursion_error(401)
generate_recursion_error(402)
generate_recursion_error(403)
generate_recursion_error(404)
generate_recursion_error(405)
generate_recursion_error(406)
generate_recursion_error(407)
generate_recursion_error(408)
generate_recursion_error(409)
generate_recursion_error(410)
generate_recursion_error(411)
generate_recursion_error(412)
generate_recursion_error(413)
generate_recursion_error(414)
generate_recursion_error(415)
generate_recursion_error(416)
generate_recursion_error(417)
generate_recursion_error(418)
generate_recursion_error(419)
generate_recursion_error(420)
generate_recursion_error(421)
generate_recursion_error(422)
generate_recursion_error(423)
generate_recursion_error(424)
generate_recursion_error(425)
generate_recursion_error(426)
generate_recursion_error(427)
generate_recursion_error(428)
generate_recursion_error(429)
generate_recursion_error(430)
generate_recursion_error(431)
generate_recursion_error(432)
generate_recursion_error(433)
generate_recursion_error(434)
generate_recursion_error(435)
generate_recursion_error(436)
generate_recursion_error(437)
generate_recursion_error(438)
generate_recursion_error(439)
generate_recursion_error(440)
generate_recursion_error(441)
generate_recursion_error(442)
generate_recursion_error(443)
generate_recursion_error(444)
generate_recursion_error(445)
generate_recursion_error(446)
generate_recursion_error(447)
generate_recursion_error(448)
generate_recursion_error(449)
generate_recursion_error(450)
generate_recursion_error(451)
generate_recursion_error(452)
generate_recursion_error(453)
generate_recursion_error(454)
generate_recursion_error(455)
generate_recursion_error(456)
generate_recursion_error(457)
generate_recursion_error(458)
generate_recursion_error(459)
generate_recursion_error(460)
generate_recursion_error(461)
generate_recursion_error(462)
generate_recursion_error(463)
generate_recursion_error(464)
generate_recursion_error(465)
Caught exception: maximum recursion depth exceeded in comparison

Maximum Values


In [11]:
import sys
print('maxsize   :', sys.maxsize)
print('maxunicode:', sys.maxunicode)


maxsize   : 9223372036854775807
maxunicode: 1114111

Floating Point values


In [12]:
import sys

print('Smallest difference (epsilon):', sys.float_info.epsilon)
print()
print('Digits (dig)              :', sys.float_info.dig)
print('Mantissa digits (mant_dig):', sys.float_info.mant_dig)
print()
print('Maximum (max):', sys.float_info.max)
print('Minimum (min):', sys.float_info.min)
print()
print('Radix of exponents (radix):', sys.float_info.radix)
print()
print('Maximum exponent for radix (max_exp):',
      sys.float_info.max_exp)
print('Minimum exponent for radix (min_exp):',
      sys.float_info.min_exp)
print()
print('Max. exponent power of 10 (max_10_exp):',
      sys.float_info.max_10_exp)
print('Min. exponent power of 10 (min_10_exp):',
      sys.float_info.min_10_exp)
print()
print('Rounding for addition (rounds):', sys.float_info.rounds)


Smallest difference (epsilon): 2.220446049250313e-16

Digits (dig)              : 15
Mantissa digits (mant_dig): 53

Maximum (max): 1.7976931348623157e+308
Minimum (min): 2.2250738585072014e-308

Radix of exponents (radix): 2

Maximum exponent for radix (max_exp): 1024
Minimum exponent for radix (min_exp): -1021

Max. exponent power of 10 (max_10_exp): 308
Min. exponent power of 10 (min_10_exp): -307

Rounding for addition (rounds): 1

Integer Values


In [13]:
import sys

print('Number of bits used to hold each digit:',
      sys.int_info.bits_per_digit)
print('Size in bytes of C type used to hold each digit:',
      sys.int_info.sizeof_digit)


Number of bits used to hold each digit: 30
Size in bytes of C type used to hold each digit: 4

Byte Order


In [14]:
import sys

print(sys.byteorder)


little

In [ ]: