File: builtin_slice.py

package info (click to toggle)
micropython 1.26.1%2Bds-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 50,196 kB
  • sloc: ansic: 324,551; python: 63,215; xml: 4,241; makefile: 3,618; sh: 1,586; javascript: 754; asm: 723; cpp: 83; exp: 11; pascal: 6
file content (44 lines) | stat: -rw-r--r-- 837 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# test builtin slice

# ensures that slices passed to user types are heap-allocated and can be
# safely stored as well as not overriden by subsequent slices.

# print slice
class A:
    def __getitem__(self, idx):
        print("get", idx)
        print("abc"[1:])
        print("get", idx)
        return idx

    def __setitem__(self, idx, value):
        print("set", idx)
        print("abc"[1:])
        print("set", idx)
        self.saved_idx = idx
        return idx

    def __delitem__(self, idx):
        print("del", idx)
        print("abc"[1:])
        print("del", idx)
        return idx


a = A()
s = a[1:2:3]
a[4:5:6] = s
del a[7:8:9]

print(a.saved_idx)

# nested slicing
print(A()[1 : A()[A()[2:3:4] : 5]])

# tuple slicing
a[1:2, 4:5, 7:8]
a[1, 4:5, 7:8, 2]
a[1:2, a[3:4], 5:6]

# check type
print(type(s) is slice)