16
Мутабельные и иммутабельные типы данных Иван Феофанов apiqa.io

данных иммутабельные типы - SkyDNS...compile-time constant Objects optimization 14 Mutable? Create new object Yes Object type? value in [-5...256]? result of

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: данных иммутабельные типы - SkyDNS...compile-time constant Objects optimization 14 Mutable? Create new object Yes Object type? value in [-5...256]? result of

Мутабельные и иммутабельные типы данныхИван Феофанов

apiqa.io

Page 2: данных иммутабельные типы - SkyDNS...compile-time constant Objects optimization 14 Mutable? Create new object Yes Object type? value in [-5...256]? result of

02

5

Page 3: данных иммутабельные типы - SkyDNS...compile-time constant Objects optimization 14 Mutable? Create new object Yes Object type? value in [-5...256]? result of

03

2

Page 4: данных иммутабельные типы - SkyDNS...compile-time constant Objects optimization 14 Mutable? Create new object Yes Object type? value in [-5...256]? result of

04

1

Page 5: данных иммутабельные типы - SkyDNS...compile-time constant Objects optimization 14 Mutable? Create new object Yes Object type? value in [-5...256]? result of

05

Immutable Mutable

int, float, complex list, set

tuple, frozenset dict

bytes bytearray

str

bool

Python data types

Page 6: данных иммутабельные типы - SkyDNS...compile-time constant Objects optimization 14 Mutable? Create new object Yes Object type? value in [-5...256]? result of

Immutable

a = 5

a 5

a += 2

a 7

id = 11197536

id = 11197568

b = a

b

06

Page 7: данных иммутабельные типы - SkyDNS...compile-time constant Objects optimization 14 Mutable? Create new object Yes Object type? value in [-5...256]? result of

WAT?

07

Page 8: данных иммутабельные типы - SkyDNS...compile-time constant Objects optimization 14 Mutable? Create new object Yes Object type? value in [-5...256]? result of

Mutable

a = [5, 10, 15]

a [5, 10, 15]

b = a

bid = 139872397262408

a += [20]

[5, 10, 15, 20]

08

Page 9: данных иммутабельные типы - SkyDNS...compile-time constant Objects optimization 14 Mutable? Create new object Yes Object type? value in [-5...256]? result of

Pitfalls

09

● default mutable arguments● side-effects

Page 10: данных иммутабельные типы - SkyDNS...compile-time constant Objects optimization 14 Mutable? Create new object Yes Object type? value in [-5...256]? result of

Default mutable argument

10

Page 11: данных иммутабельные типы - SkyDNS...compile-time constant Objects optimization 14 Mutable? Create new object Yes Object type? value in [-5...256]? result of

Default mutable argument: solution

11

Page 12: данных иммутабельные типы - SkyDNS...compile-time constant Objects optimization 14 Mutable? Create new object Yes Object type? value in [-5...256]? result of

PEP 505 -- None-aware operators (??=)

12

Page 13: данных иммутабельные типы - SkyDNS...compile-time constant Objects optimization 14 Mutable? Create new object Yes Object type? value in [-5...256]? result of

Side-effect

13

Page 14: данных иммутабельные типы - SkyDNS...compile-time constant Objects optimization 14 Mutable? Create new object Yes Object type? value in [-5...256]? result of

compile-time constant

Objects optimization

14

Mutable?

Create new object

Yes

Object type?

value in [-5...256]?

result of constant folding

int

stringNo

No

Refer to existing object

Yes

Yes

object length > 20?No

Yes

No

Yes

contains only ASCII letters, digits or underscores

No No

Yes

Page 15: данных иммутабельные типы - SkyDNS...compile-time constant Objects optimization 14 Mutable? Create new object Yes Object type? value in [-5...256]? result of

Contacts and links

@feofanov github.com/Ivan-Feofanov

Page 16: данных иммутабельные типы - SkyDNS...compile-time constant Objects optimization 14 Mutable? Create new object Yes Object type? value in [-5...256]? result of

bonus

+=