Mais conteúdo relacionado
Semelhante a Investigating Python Wats (20)
Investigating Python Wats
- 6. >>>
a
=
256
>>>
b
=
256
>>>
a
is
b
???
- 7. >>>
a
=
256
>>>
b
=
256
>>>
a
is
b
True
- 8. >>>
a
=
257
>>>
b
=
257
>>>
a
is
b
???
- 9. >>>
a
=
257
>>>
b
=
257
>>>
a
is
b
False
- 13. b
a
>>>
a
=
256
>>>
b
=
256
>>>
a
is
b
True
-‐5
…
255
256
- 17. >>>
a
=
257;
b
=
257
>>>
a
is
b
???
- 18. >>>
a
=
257;
b
=
257
>>>
a
is
b
True
- 19. >>>
a
=
257
>>>
b
=
257
>>>
a
is
b
False
!
>>>
a
=
257;
b
=
257
>>>
a
is
b
True
- 21. >>>
a
=
257
>>>
source
=
"a
=
257"
>>>
code_obj_a
=
compile(
...
source=source,
...
filename="",
...
mode="exec")
!
- 22. >>>
a
=
257
>>>
source
=
"a
=
257"
>>>
code_obj_a
=
compile(
...
source=source,
...
filename="",
...
mode="exec")
>>>
code_obj_a.co_consts
(257,
None)
- 23. >>>
source
=
"b
=
257"
>>>
code_obj_b
=
compile(
...
source=source,
...
filename="",
...
mode="exec")
!
- 24. >>>
source
=
"b
=
257"
>>>
code_obj_b
=
compile(
...
source=source,
...
filename="",
...
mode="exec")
>>>
code_obj_b.co_consts
(257,
None)
- 26. >>>
source
=
"a
=
257;
b
=
257"
>>>
code_obj
=
compile(
...
source=source,
...
filename="",
...
mode="exec")
!
- 27. >>>
source
=
"a
=
257;
b
=
257"
>>>
code_obj
=
compile(
...
source=source,
...
filename="",
...
mode="exec")
>>>
code_obj.co_consts
(257,
None)
- 29. >>>
row
=
[""]
*
3
>>>
row
['',
'',
'']
!
!
!
!
- 30. >>>
row
=
[""]
*
3
>>>
row
['',
'',
'']
>>>
board
=
[row]
*
3
!
!
!
- 31. >>>
row
=
[""]
*
3
>>>
row
['',
'',
'']
>>>
board
=
[row]
*
3
>>>
board
[['',
'',
''],
['',
'',
''],
['',
'',
'']]
- 38. >>>
board
=
[row]
*
3
row
board[0]
board[1]
board[2]
"" "" ""
- 46. def
append_cat(l=[]):
l.append(‘cat’)
return
l
!
>>>
append_cat()
['cat']
>>>
append_cat()
['cat',
'cat']
- 50. def
append_cat(l=[]):
l.append('cat')
return
l
!
>>>
append_cat()
>>>
append_cat.__defaults__
(['cat'],)
- 57. >>>
a
=
1
>>>
def
foo():
...
return
a
!
!
- 58. >>>
a
=
1
>>>
def
foo():
...
return
a
!
>>>
foo()
???
- 59. >>>
a
=
1
>>>
def
foo():
...
return
a
!
>>>
foo()
1
- 60. >>>
a
=
1
>>>
def
foo():
...
return
a
>>>
foo()
???
- 61. • locals()
#
{}
!
!
>>>
a
=
1
>>>
def
foo():
...
return
a
>>>
foo()
???
- 62. • locals()
#
{}
!
!
>>>
a
=
1
>>>
def
foo():
...
return
a
>>>
foo()
???
- 63. • locals()
#
{}
• enclosing
#
{}
!
>>>
a
=
1
>>>
def
foo():
...
return
a
>>>
foo()
???
- 64. • locals()
#
{}
• enclosing
#
{}
!
>>>
a
=
1
>>>
def
foo():
...
return
a
>>>
foo()
???
- 65. • locals()
#
{}
• enclosing
#
{}
• globals()
#
{'a':
1}
>>>
a
=
1
>>>
def
foo():
...
return
a
>>>
foo()
???
- 66. • locals()
#
{}
• enclosing
#
{}
✓ globals()
#
{'a':
1}
>>>
a
=
1
>>>
def
foo():
...
return
a
>>>
foo()
1
- 67. • locals()
#
{}
• enclosing
#
{}
✓ globals()
#
{'a':
1}
• builtins
#
{'True':
True,…}
>>>
a
=
1
>>>
def
foo():
...
return
a
>>>
foo()
1
- 68. >>>
a
=
1
>>>
def
foo():
...
return
a
!
>>>
from
dis
import
dis
!
!
- 69. >>>
a
=
1
>>>
def
foo():
...
return
a
!
>>>
from
dis
import
dis
>>>
dis(foo)
2
0
LOAD_GLOBAL
0
(a)
3
RETURN_VALUE
- 70. >>>
a
=
1
>>>
def
foo():
...
a
+=
1
...
return
a
!
>>>
foo()
???
- 71. >>>
a
=
1
>>>
def
foo():
...
a
+=
1
...
return
a
!
>>>
foo()
UnboundLocalError:
local
variable
'a'
referenced
before
assignment
- 72. “When you make an
assignment to a variable in a
scope, that variable becomes
local to that scope.”
- 73. >>>
a
=
1
>>>
def
foo():
...
#
a
+=
1
...
a
=
a
+
1
...
return
a
- 74. >>>
a
=
1
>>>
def
foo():
...
#
a
+=
1
...
a
=
a
+
1
...
return
a
- 75. >>>
a
=
1
>>>
def
foo():
...
#
a
+=
1
...
a
=
a
+
1
...
return
a
- 76. >>>
a
=
1
>>>
def
foo():
...
a
+=
1
...
return
a
...
>>>
dis(foo)
2
0
LOAD_FAST
0
(a)
3
LOAD_CONST
1
(1)
6
INPLACE_ADD
7
STORE_FAST
0
(a)
!
3
10
LOAD_FAST
0
(a)
13
RETURN_VALUE
- 77. >>>
a
=
1
>>>
def
foo():
...
a
+=
1
...
return
a
...
>>>
dis(foo)
2
0
LOAD_FAST
0
(a)
3
LOAD_CONST
1
(1)
6
INPLACE_ADD
7
STORE_FAST
0
(a)
!
3
10
LOAD_FAST
0
(a)
13
RETURN_VALUE