SlideShare une entreprise Scribd logo
1  sur  90
Télécharger pour lire hors ligne
Python WATs:
Uncovering
Odd Behavior
Hacker School Alum
Software Engineer at Venmo
!
@amygdalama
mathamy.com
Who am I?
Allison Kaptur
Tom Ballinger
Gary Bernhardt
Thanks!
Identity
Mutability
Scope
Themes
a. Trivia
b. Why?
c. Tips
for theme in themes:
Identity
>	
  ""	
  is	
  ""	
  
???
Trivia
>	
  ""	
  is	
  ""	
  
True
Trivia
>	
  0	
  is	
  0	
  
???
Trivia
>	
  0	
  is	
  0	
  
True
Trivia
>	
  []	
  is	
  []	
  
???
Trivia
>	
  []	
  is	
  []	
  
False
Trivia
>	
  {}	
  is	
  {}	
  
???
Trivia
>	
  {}	
  is	
  {}	
  
False
Trivia
>	
  a	
  =	
  256	
  
>	
  b	
  =	
  256	
  
>	
  a	
  is	
  b	
  
???
Trivia
>	
  a	
  =	
  256	
  
>	
  b	
  =	
  256	
  
>	
  a	
  is	
  b	
  
True
Trivia
>	
  a	
  =	
  257	
  
>	
  b	
  =	
  257	
  
>	
  a	
  is	
  b	
  
???
Trivia
>	
  a	
  =	
  257	
  
>	
  b	
  =	
  257	
  
>	
  a	
  is	
  b	
  
False
Trivia
>	
  a	
  =	
  257;	
  b	
  =	
  257	
  
>	
  a	
  is	
  b	
  
???
Trivia
>	
  a	
  =	
  257;	
  b	
  =	
  257	
  
>	
  a	
  is	
  b	
  
True
Trivia
a
Why?-­‐5
…
255
256
…
>	
  a	
  =	
  256	
  
!
!
a
Why?-­‐5
…
255
256
…
b
>	
  a	
  =	
  256	
  
>	
  b	
  =	
  256	
  
!
a
Why?-­‐5
…
255
256
…
b
>	
  a	
  =	
  256	
  
>	
  b	
  =	
  256	
  
>	
  a	
  is	
  b	
  
True
a
Why?…
255
256
…
257
>	
  a	
  =	
  257	
  
!
!
a
Why?…
255
256
…
257
257 b
>	
  a	
  =	
  257	
  
>	
  b	
  =	
  257	
  
!
a
Why?…
255
256
…
257
257 b
>	
  a	
  =	
  257	
  
>	
  b	
  =	
  257	
  
>	
  a	
  is	
  b	
  
False
>	
  a	
  =	
  257	
  
>	
  b	
  =	
  257	
  
>	
  id(a)	
  ==	
  id(b)	
  
False
Why?
>	
  a	
  =	
  257;	
  b	
  =	
  257	
  
>	
  id(a)	
  ==	
  id(b)	
  
True
Why?
• Use == instead of is	
  to
compare values	

• Exceptions:	

• x	
  is	
  None	
  
• tests for identity
Tips
Mutability
>	
  faves	
  =	
  ["cats",	
  "dragons"]	
  
!
!
!
Trivia
>	
  faves	
  =	
  ["cats",	
  "dragons"]	
  
>	
  temp	
  =	
  faves	
  
!
!
Trivia
>	
  faves	
  =	
  ["cats",	
  "dragons"]	
  
>	
  temp	
  =	
  faves	
  
>	
  temp.append("rainbows")	
  
!
Trivia
>	
  faves	
  =	
  ["cats",	
  "dragons"]	
  
>	
  temp	
  =	
  faves	
  
>	
  temp.append("rainbows")	
  
>	
  temp	
  
???
Trivia
>	
  faves	
  =	
  ["cats",	
  "dragons"]	
  
>	
  temp	
  =	
  faves	
  
>	
  temp.append("rainbows")	
  
>	
  temp	
  
["cats",	
  "dragons",	
  "rainbows"]
Trivia
>	
  faves	
  =	
  ["cats",	
  "dragons"]	
  
>	
  temp	
  =	
  faves	
  
>	
  temp.append("rainbows")	
  
>	
  faves	
  
???
Trivia
>	
  faves	
  =	
  ["cats",	
  "dragons"]	
  
>	
  temp	
  =	
  faves	
  
>	
  temp.append("rainbows")	
  
>	
  faves	
  
["cats",	
  "dragons",	
  "rainbows"]
Trivia
faves
Why?
"cats"
"dragons"
>	
  faves	
  =	
  ["cats",	
  "dragons"]
faves
Why?
"cats"
"dragons"
>	
  temp	
  =	
  faves
temp
faves
Why?
"cats"
"dragons"
"rainbows"
>	
  temp.append("rainbows")
temp
• lists []	

• dictionaries {}	

• sets ()
Tip: Mutable Objects
>	
  temp	
  =	
  faves[:]	
  
>	
  temp	
  =	
  list(faves)
Tip: Make Real Copies
>	
  temp	
  =	
  []	
  
>	
  for	
  element	
  in	
  faves:	
  
	
  	
  	
  	
  	
  	
  temp.append(element)
Tip: Shallow Copy
>	
  faves	
  =	
  [["cats",	
  "dragons"]]	
  
!
!
!
Tip: Deep Copy
>	
  faves	
  =	
  [["cats",	
  "dragons"]]	
  
>	
  temp	
  =	
  faves[:]	
  
!
!
Tip: Deep Copy
>	
  faves	
  =	
  [["cats",	
  "dragons"]]	
  
>	
  temp	
  =	
  faves[:]	
  
>	
  temp[0].append("rainbows")	
  
!
Tip: Deep Copy
>	
  faves	
  =	
  [["cats",	
  "dragons"]]	
  
>	
  temp	
  =	
  faves[:]	
  
>	
  temp[0].append("rainbows")	
  
>	
  faves	
  
???
Tip: Deep Copy
>	
  faves	
  =	
  [["cats",	
  "dragons"]]	
  
>	
  temp	
  =	
  faves[:]	
  
>	
  temp[0].append("rainbows")	
  
>	
  faves	
  
[["cats",	
  "dragons",	
  "rainbows"]]
Tip: Deep Copy
• For arbitrarily-nested
lists, make deep copies	

!
>	
  import	
  copy	
  
>	
  temp	
  =	
  copy.deepcopy(faves)
Tip: Deep Copy
Mutable Default
Arguments
def	
  append_cat(l=[]):	
  
!
Trivia
def	
  append_cat(l=[]):	
  
	
  	
  	
  	
  l.append(‘cat’)	
  
	
  	
  	
  	
  return	
  l
Trivia
def	
  append_cat(l=[]):	
  
	
  	
  	
  	
  l.append(‘cat’)	
  
	
  	
  	
  	
  return	
  l	
  
!
>	
  append_cat()	
  
???	
  
!
Trivia
def	
  append_cat(l=[]):	
  
	
  	
  	
  	
  l.append(‘cat’)	
  
	
  	
  	
  	
  return	
  l	
  
!
>	
  append_cat()	
  
[‘cat’]	
  
!
Trivia
def	
  append_cat(l=[]):	
  
	
  	
  	
  	
  l.append(‘cat’)	
  
	
  	
  	
  	
  return	
  l	
  
!
>	
  append_cat()	
  
[‘cat’]	
  
>	
  append_cat()	
  
???
Trivia
def	
  append_cat(l=[]):	
  
	
  	
  	
  	
  l.append(‘cat’)	
  
	
  	
  	
  	
  return	
  l	
  
!
>	
  append_cat()	
  
[‘cat’]	
  
>	
  append_cat()	
  
[‘cat’,	
  ‘cat’]
Trivia
def	
  append_cat(l=[]):	
  
	
  	
  	
  	
  l.append(‘cat’)	
  
	
  	
  	
  	
  return	
  l	
  
!
>	
  append_cat.func_defaults	
  
???	
  
Why?
def	
  append_cat(l=[]):	
  
	
  	
  	
  	
  l.append(‘cat’)	
  
	
  	
  	
  	
  return	
  l	
  
!
>	
  append_cat.func_defaults	
  
([],)	
  
Why?
def	
  append_cat(l=[]):	
  
	
  	
  	
  	
  l.append('cat')	
  
	
  	
  	
  	
  return	
  l	
  
!
>	
  append_cat()	
  
>	
  append_cat.func_defaults	
  
???
Why?
def	
  append_cat(l=[]):	
  
	
  	
  	
  	
  l.append('cat')	
  
	
  	
  	
  	
  return	
  l	
  
!
>	
  append_cat()	
  
>	
  append_cat.func_defaults	
  
(['cat'],)
Why?
>	
  append_cat.func_defaults	
  
(['cat'],)	
  
!
!
Why?
>	
  append_cat.func_defaults	
  
(['cat'],)	
  
>	
  _[0].append('dragon')	
  
!
Why?
>	
  append_cat.func_defaults	
  
(['cat'],)	
  
>	
  _[0].append('dragon')	
  
>	
  append_cat()	
  
???
Why?
>	
  append_cat.func_defaults	
  
(['cat'],)	
  
>	
  _[0].append('dragon')	
  
>	
  append_cat()	
  
['cat',	
  'dragon',	
  'cat']
Why?
def	
  append_cat(l=None):	
  
!
!
!
Tip: Use None
def	
  append_cat(l=None):	
  
	
  	
  	
  	
  if	
  l	
  is	
  None:	
  
	
  	
  	
  	
  	
  	
  	
  	
  l	
  =	
  []	
  
!
Tip: Use None
def	
  append_cat(l=None):	
  
	
  	
  	
  	
  if	
  l	
  is	
  None:	
  
	
  	
  	
  	
  	
  	
  	
  	
  l	
  =	
  []	
  
	
  	
  	
  	
  l.append(‘cat')	
  
	
  	
  	
  	
  return	
  l
Tip: Use None
def	
  sorting_hat(student,	
  cache={}):	
  
!
!
!
!
!
!
Tip: Take Advantage!
def	
  sorting_hat(student,	
  cache={}):	
  
	
  	
  	
  	
  if	
  student	
  in	
  cache:	
  
	
  	
  	
  	
  	
  	
  	
  	
  print	
  "Used	
  cache!"	
  
	
  	
  	
  	
  	
  	
  	
  	
  return	
  cache[student]	
  
	
  	
  	
  	
  else:	
  
!
!
Tip: Take Advantage!
def	
  sorting_hat(student,	
  cache={}):	
  
	
  	
  	
  	
  if	
  student	
  in	
  cache:	
  
	
  	
  	
  	
  	
  	
  	
  	
  print	
  "Used	
  cache!"	
  
	
  	
  	
  	
  	
  	
  	
  	
  return	
  cache[student]	
  
	
  	
  	
  	
  else:	
  
	
  	
  	
  	
  	
  	
  	
  	
  house	
  =	
  slow_alg(student)	
  
	
  	
  	
  	
  	
  	
  	
  	
  cache[student]	
  =	
  house	
  
	
  	
  	
  	
  	
  	
  	
  	
  return	
  house
Tip: Take Advantage!
>	
  sorting_hat('Amy	
  Hanlon')	
  
'Ravenclaw'	
  
!
!
!
!
Tip: Take Advantage!
>	
  sorting_hat('Amy	
  Hanlon')	
  
'Ravenclaw'	
  
>	
  sorting_hat('Amy	
  Hanlon')	
  
Used	
  cache!	
  
‘Ravenclaw'	
  
!
Tip: Take Advantage!
>	
  sorting_hat('Amy	
  Hanlon')	
  
'Ravenclaw'	
  
>	
  sorting_hat('Amy	
  Hanlon')	
  
Used	
  cache!	
  
‘Ravenclaw'	
  
>	
  sorting_hat.func_defaults	
  
({'Amy	
  Hanlon':	
  'Ravenclaw'},)
Tip: Take Advantage!
Scope
>	
  a	
  =	
  1	
  
!
!
!
!
Trivia
>	
  a	
  =	
  1	
  
>	
  def	
  foo():	
  
	
  	
  	
  	
  return	
  a	
  
!
!
Trivia
>	
  a	
  =	
  1	
  
>	
  def	
  foo():	
  
	
  	
  	
  	
  return	
  a	
  
!
>	
  foo()	
  
???
Trivia
>	
  a	
  =	
  1	
  
>	
  def	
  foo():	
  
	
  	
  	
  	
  return	
  a	
  
!
>	
  foo()	
  
1
Trivia
Namespaces!	

!
• locals()	
  
!
Why?
Namespaces!	

!
• locals()	
  
• globals()	
  	
  	
  	
  #	
  {'a'	
  :	
  1}	
  
Why?
Namespaces!	

!
• locals()	
  
• globals()	
  	
  	
  	
  #	
  {'a'	
  :	
  1}	
  
• __builtins__
Why?
>	
  a	
  =	
  1	
  
>	
  def	
  foo():	
  
	
  	
  	
  	
  return	
  a	
  
!
>	
  foo()	
  
1
Trivia
>	
  a	
  =	
  1	
  
>	
  def	
  foo():	
  
	
  	
  	
  	
  a	
  +=	
  1	
  
	
  	
  	
  	
  return	
  a	
  
!
>	
  foo()	
  
???
Trivia
>	
  a	
  =	
  1	
  
>	
  def	
  foo():	
  
	
  	
  	
  	
  a	
  +=	
  1	
  
	
  	
  	
  	
  return	
  a	
  
!
>	
  foo()	
  
UnboundLocalError:	
  local	
  
variable	
  'a'	
  referenced	
  before	
  
assignment
Trivia
“When you make an
assignment to a variable in a
scope, that variable becomes
local to that scope.”
Why?
Why?
>	
  a	
  =	
  1	
  
>	
  def	
  foo():	
  
	
  	
  	
  	
  #	
  a	
  +=	
  1	
  
	
  	
  	
  	
  a	
  =	
  a	
  +	
  1	
  
	
  	
  	
  	
  return	
  a
>	
  a	
  =	
  1	
  
>	
  def	
  foo():	
  
	
  	
  	
  	
  global	
  a	
  
	
  	
  	
  	
  a	
  +=	
  1	
  
	
  	
  	
  	
  return	
  a	
  
>	
  foo()	
  
2	
  
>	
  a	
  
2
Tip: Use global
>	
  def	
  foo(a):	
  
	
  	
  	
  	
  a	
  +=	
  1	
  
	
  	
  	
  	
  return	
  a	
  
>	
  a	
  =	
  1	
  
>	
  a	
  =	
  foo(a)	
  
2
Tip: Don’t Use global
Links
• https://docs.python.org/3/	

• http://eli.thegreenplace.net/	

• http://akaptur.github.io/blog/
2013/10/29/a-python-puzzle/	

• http://mathamy.com/python-wats-
mutable-default-arguments.html
Thank you!
Questions?

Contenu connexe

Tendances

Use cases in the code with AOP
Use cases in the code with AOPUse cases in the code with AOP
Use cases in the code with AOPAndrzej Krzywda
 
A Search Index is Not a Database Index - Full Stack Toronto 2017
A Search Index is Not a Database Index - Full Stack Toronto 2017A Search Index is Not a Database Index - Full Stack Toronto 2017
A Search Index is Not a Database Index - Full Stack Toronto 2017Toria Gibbs
 
Exhibition of Atrocity
Exhibition of AtrocityExhibition of Atrocity
Exhibition of AtrocityMichael Pirnat
 
Search Engines: How They Work and Why You Need Them
Search Engines: How They Work and Why You Need ThemSearch Engines: How They Work and Why You Need Them
Search Engines: How They Work and Why You Need ThemToria Gibbs
 
Getting to know Arel
Getting to know ArelGetting to know Arel
Getting to know ArelRay Zane
 
Gareth hayes. non alphanumeric javascript-php and shared fuzzing
Gareth hayes. non alphanumeric javascript-php and shared fuzzingGareth hayes. non alphanumeric javascript-php and shared fuzzing
Gareth hayes. non alphanumeric javascript-php and shared fuzzingYury Chemerkin
 
MongoDB.local Austin 2018: Tips and Tricks for Avoiding Common Query Pitfalls
MongoDB.local Austin 2018: Tips and Tricks for Avoiding Common Query PitfallsMongoDB.local Austin 2018: Tips and Tricks for Avoiding Common Query Pitfalls
MongoDB.local Austin 2018: Tips and Tricks for Avoiding Common Query PitfallsMongoDB
 
Taking Perl to Eleven with Higher-Order Functions
Taking Perl to Eleven with Higher-Order FunctionsTaking Perl to Eleven with Higher-Order Functions
Taking Perl to Eleven with Higher-Order FunctionsDavid Golden
 
Tips and Tricks for Avoiding Common Query Pitfalls
Tips and Tricks for Avoiding Common Query PitfallsTips and Tricks for Avoiding Common Query Pitfalls
Tips and Tricks for Avoiding Common Query PitfallsMongoDB
 
Perl.Hacks.On.Vim
Perl.Hacks.On.VimPerl.Hacks.On.Vim
Perl.Hacks.On.VimLin Yo-An
 
Most common mistakes of workshops applicants
Most common mistakes of workshops applicantsMost common mistakes of workshops applicants
Most common mistakes of workshops applicantsDominik Wojciechowski
 
MongoDB.local Seattle 2019: Tips & Tricks for Avoiding Common Query Pitfalls
MongoDB.local Seattle 2019: Tips & Tricks for Avoiding Common Query PitfallsMongoDB.local Seattle 2019: Tips & Tricks for Avoiding Common Query Pitfalls
MongoDB.local Seattle 2019: Tips & Tricks for Avoiding Common Query PitfallsMongoDB
 
MongoDB.local Sydney 2019: Tips and Tricks for Avoiding Common Query Pitfalls
MongoDB.local Sydney 2019: Tips and Tricks for Avoiding Common Query PitfallsMongoDB.local Sydney 2019: Tips and Tricks for Avoiding Common Query Pitfalls
MongoDB.local Sydney 2019: Tips and Tricks for Avoiding Common Query PitfallsMongoDB
 
2 BytesC++ course_2014_c2_ flow of control
2 BytesC++ course_2014_c2_ flow of control 2 BytesC++ course_2014_c2_ flow of control
2 BytesC++ course_2014_c2_ flow of control kinan keshkeh
 

Tendances (20)

Use cases in the code with AOP
Use cases in the code with AOPUse cases in the code with AOP
Use cases in the code with AOP
 
A Search Index is Not a Database Index - Full Stack Toronto 2017
A Search Index is Not a Database Index - Full Stack Toronto 2017A Search Index is Not a Database Index - Full Stack Toronto 2017
A Search Index is Not a Database Index - Full Stack Toronto 2017
 
Exhibition of Atrocity
Exhibition of AtrocityExhibition of Atrocity
Exhibition of Atrocity
 
7li7w devcon5
7li7w devcon57li7w devcon5
7li7w devcon5
 
Search Engines: How They Work and Why You Need Them
Search Engines: How They Work and Why You Need ThemSearch Engines: How They Work and Why You Need Them
Search Engines: How They Work and Why You Need Them
 
Getting to know Arel
Getting to know ArelGetting to know Arel
Getting to know Arel
 
Gareth hayes. non alphanumeric javascript-php and shared fuzzing
Gareth hayes. non alphanumeric javascript-php and shared fuzzingGareth hayes. non alphanumeric javascript-php and shared fuzzing
Gareth hayes. non alphanumeric javascript-php and shared fuzzing
 
MongoDB.local Austin 2018: Tips and Tricks for Avoiding Common Query Pitfalls
MongoDB.local Austin 2018: Tips and Tricks for Avoiding Common Query PitfallsMongoDB.local Austin 2018: Tips and Tricks for Avoiding Common Query Pitfalls
MongoDB.local Austin 2018: Tips and Tricks for Avoiding Common Query Pitfalls
 
Taking Perl to Eleven with Higher-Order Functions
Taking Perl to Eleven with Higher-Order FunctionsTaking Perl to Eleven with Higher-Order Functions
Taking Perl to Eleven with Higher-Order Functions
 
Tips and Tricks for Avoiding Common Query Pitfalls
Tips and Tricks for Avoiding Common Query PitfallsTips and Tricks for Avoiding Common Query Pitfalls
Tips and Tricks for Avoiding Common Query Pitfalls
 
1 the ruby way
1   the ruby way1   the ruby way
1 the ruby way
 
Perl.Hacks.On.Vim
Perl.Hacks.On.VimPerl.Hacks.On.Vim
Perl.Hacks.On.Vim
 
Most common mistakes of workshops applicants
Most common mistakes of workshops applicantsMost common mistakes of workshops applicants
Most common mistakes of workshops applicants
 
MongoDB.local Seattle 2019: Tips & Tricks for Avoiding Common Query Pitfalls
MongoDB.local Seattle 2019: Tips & Tricks for Avoiding Common Query PitfallsMongoDB.local Seattle 2019: Tips & Tricks for Avoiding Common Query Pitfalls
MongoDB.local Seattle 2019: Tips & Tricks for Avoiding Common Query Pitfalls
 
MongoDB.local Sydney 2019: Tips and Tricks for Avoiding Common Query Pitfalls
MongoDB.local Sydney 2019: Tips and Tricks for Avoiding Common Query PitfallsMongoDB.local Sydney 2019: Tips and Tricks for Avoiding Common Query Pitfalls
MongoDB.local Sydney 2019: Tips and Tricks for Avoiding Common Query Pitfalls
 
Python 1
Python 1Python 1
Python 1
 
Elixir
ElixirElixir
Elixir
 
2 BytesC++ course_2014_c2_ flow of control
2 BytesC++ course_2014_c2_ flow of control 2 BytesC++ course_2014_c2_ flow of control
2 BytesC++ course_2014_c2_ flow of control
 
Next Level Testing
Next Level TestingNext Level Testing
Next Level Testing
 
Swift Study #2
Swift Study #2Swift Study #2
Swift Study #2
 

Similaire à Python WATs: Uncovering Odd Behavior

Refactor like a boss
Refactor like a bossRefactor like a boss
Refactor like a bossgsterndale
 
What I learned from Seven Languages in Seven Weeks (IPRUG)
What I learned from Seven Languages in Seven Weeks (IPRUG)What I learned from Seven Languages in Seven Weeks (IPRUG)
What I learned from Seven Languages in Seven Weeks (IPRUG)Kerry Buckley
 
Introduction to Python
Introduction to PythonIntroduction to Python
Introduction to PythonUC San Diego
 
Seven Languages in Seven Days: Ruby
Seven Languages in Seven Days: RubySeven Languages in Seven Days: Ruby
Seven Languages in Seven Days: RubyZach Leatherman
 
Perl 6 in Context
Perl 6 in ContextPerl 6 in Context
Perl 6 in Contextlichtkind
 
Adventures in Optimization
Adventures in OptimizationAdventures in Optimization
Adventures in OptimizationDavid Golden
 
A Taste of Python - Devdays Toronto 2009
A Taste of Python - Devdays Toronto 2009A Taste of Python - Devdays Toronto 2009
A Taste of Python - Devdays Toronto 2009Jordan Baker
 
Beautiful python - PyLadies
Beautiful python - PyLadiesBeautiful python - PyLadies
Beautiful python - PyLadiesAlicia Pérez
 
Python于Web 2.0网站的应用 - QCon Beijing 2010
Python于Web 2.0网站的应用 - QCon Beijing 2010Python于Web 2.0网站的应用 - QCon Beijing 2010
Python于Web 2.0网站的应用 - QCon Beijing 2010Qiangning Hong
 
Php Code Audits (PHP UK 2010)
Php Code Audits (PHP UK 2010)Php Code Audits (PHP UK 2010)
Php Code Audits (PHP UK 2010)Damien Seguy
 
Frege - consequently functional programming for the JVM
Frege - consequently functional programming for the JVMFrege - consequently functional programming for the JVM
Frege - consequently functional programming for the JVMDierk König
 
Python Functions (PyAtl Beginners Night)
Python Functions (PyAtl Beginners Night)Python Functions (PyAtl Beginners Night)
Python Functions (PyAtl Beginners Night)Rick Copeland
 
A Few of My Favorite (Python) Things
A Few of My Favorite (Python) ThingsA Few of My Favorite (Python) Things
A Few of My Favorite (Python) ThingsMichael Pirnat
 
Slides chapter3part1 ruby-forjavaprogrammers
Slides chapter3part1 ruby-forjavaprogrammersSlides chapter3part1 ruby-forjavaprogrammers
Slides chapter3part1 ruby-forjavaprogrammersGiovanni924
 
Iterators, Hashes, and Arrays
Iterators, Hashes, and ArraysIterators, Hashes, and Arrays
Iterators, Hashes, and ArraysBlazing Cloud
 
Writing Apps the Google-y Way (Brisbane)
Writing Apps the Google-y Way (Brisbane)Writing Apps the Google-y Way (Brisbane)
Writing Apps the Google-y Way (Brisbane)Pamela Fox
 
PLOTCON NYC: Behind Every Great Plot There's a Great Deal of Wrangling
PLOTCON NYC: Behind Every Great Plot There's a Great Deal of WranglingPLOTCON NYC: Behind Every Great Plot There's a Great Deal of Wrangling
PLOTCON NYC: Behind Every Great Plot There's a Great Deal of WranglingPlotly
 
Functional programming in ruby
Functional programming in rubyFunctional programming in ruby
Functional programming in rubyKoen Handekyn
 

Similaire à Python WATs: Uncovering Odd Behavior (20)

Refactor like a boss
Refactor like a bossRefactor like a boss
Refactor like a boss
 
What I learned from Seven Languages in Seven Weeks (IPRUG)
What I learned from Seven Languages in Seven Weeks (IPRUG)What I learned from Seven Languages in Seven Weeks (IPRUG)
What I learned from Seven Languages in Seven Weeks (IPRUG)
 
CoffeeScript
CoffeeScriptCoffeeScript
CoffeeScript
 
Introduction to Python
Introduction to PythonIntroduction to Python
Introduction to Python
 
Seven Languages in Seven Days: Ruby
Seven Languages in Seven Days: RubySeven Languages in Seven Days: Ruby
Seven Languages in Seven Days: Ruby
 
Perl 6 in Context
Perl 6 in ContextPerl 6 in Context
Perl 6 in Context
 
Adventures in Optimization
Adventures in OptimizationAdventures in Optimization
Adventures in Optimization
 
A Taste of Python - Devdays Toronto 2009
A Taste of Python - Devdays Toronto 2009A Taste of Python - Devdays Toronto 2009
A Taste of Python - Devdays Toronto 2009
 
Beautiful python - PyLadies
Beautiful python - PyLadiesBeautiful python - PyLadies
Beautiful python - PyLadies
 
Python于Web 2.0网站的应用 - QCon Beijing 2010
Python于Web 2.0网站的应用 - QCon Beijing 2010Python于Web 2.0网站的应用 - QCon Beijing 2010
Python于Web 2.0网站的应用 - QCon Beijing 2010
 
Php Code Audits (PHP UK 2010)
Php Code Audits (PHP UK 2010)Php Code Audits (PHP UK 2010)
Php Code Audits (PHP UK 2010)
 
Frege - consequently functional programming for the JVM
Frege - consequently functional programming for the JVMFrege - consequently functional programming for the JVM
Frege - consequently functional programming for the JVM
 
Python Functions (PyAtl Beginners Night)
Python Functions (PyAtl Beginners Night)Python Functions (PyAtl Beginners Night)
Python Functions (PyAtl Beginners Night)
 
A Few of My Favorite (Python) Things
A Few of My Favorite (Python) ThingsA Few of My Favorite (Python) Things
A Few of My Favorite (Python) Things
 
Slides chapter3part1 ruby-forjavaprogrammers
Slides chapter3part1 ruby-forjavaprogrammersSlides chapter3part1 ruby-forjavaprogrammers
Slides chapter3part1 ruby-forjavaprogrammers
 
Python Puzzlers
Python PuzzlersPython Puzzlers
Python Puzzlers
 
Iterators, Hashes, and Arrays
Iterators, Hashes, and ArraysIterators, Hashes, and Arrays
Iterators, Hashes, and Arrays
 
Writing Apps the Google-y Way (Brisbane)
Writing Apps the Google-y Way (Brisbane)Writing Apps the Google-y Way (Brisbane)
Writing Apps the Google-y Way (Brisbane)
 
PLOTCON NYC: Behind Every Great Plot There's a Great Deal of Wrangling
PLOTCON NYC: Behind Every Great Plot There's a Great Deal of WranglingPLOTCON NYC: Behind Every Great Plot There's a Great Deal of Wrangling
PLOTCON NYC: Behind Every Great Plot There's a Great Deal of Wrangling
 
Functional programming in ruby
Functional programming in rubyFunctional programming in ruby
Functional programming in ruby
 

Dernier

multiple access in wireless communication
multiple access in wireless communicationmultiple access in wireless communication
multiple access in wireless communicationpanditadesh123
 
Mine Environment II Lab_MI10448MI__________.pptx
Mine Environment II Lab_MI10448MI__________.pptxMine Environment II Lab_MI10448MI__________.pptx
Mine Environment II Lab_MI10448MI__________.pptxRomil Mishra
 
Industrial Safety Unit-IV workplace health and safety.ppt
Industrial Safety Unit-IV workplace health and safety.pptIndustrial Safety Unit-IV workplace health and safety.ppt
Industrial Safety Unit-IV workplace health and safety.pptNarmatha D
 
DM Pillar Training Manual.ppt will be useful in deploying TPM in project
DM Pillar Training Manual.ppt will be useful in deploying TPM in projectDM Pillar Training Manual.ppt will be useful in deploying TPM in project
DM Pillar Training Manual.ppt will be useful in deploying TPM in projectssuserb6619e
 
UNIT III ANALOG ELECTRONICS (BASIC ELECTRONICS)
UNIT III ANALOG ELECTRONICS (BASIC ELECTRONICS)UNIT III ANALOG ELECTRONICS (BASIC ELECTRONICS)
UNIT III ANALOG ELECTRONICS (BASIC ELECTRONICS)Dr SOUNDIRARAJ N
 
IVE Industry Focused Event - Defence Sector 2024
IVE Industry Focused Event - Defence Sector 2024IVE Industry Focused Event - Defence Sector 2024
IVE Industry Focused Event - Defence Sector 2024Mark Billinghurst
 
System Simulation and Modelling with types and Event Scheduling
System Simulation and Modelling with types and Event SchedulingSystem Simulation and Modelling with types and Event Scheduling
System Simulation and Modelling with types and Event SchedulingBootNeck1
 
Software and Systems Engineering Standards: Verification and Validation of Sy...
Software and Systems Engineering Standards: Verification and Validation of Sy...Software and Systems Engineering Standards: Verification and Validation of Sy...
Software and Systems Engineering Standards: Verification and Validation of Sy...VICTOR MAESTRE RAMIREZ
 
US Department of Education FAFSA Week of Action
US Department of Education FAFSA Week of ActionUS Department of Education FAFSA Week of Action
US Department of Education FAFSA Week of ActionMebane Rash
 
"Exploring the Essential Functions and Design Considerations of Spillways in ...
"Exploring the Essential Functions and Design Considerations of Spillways in ..."Exploring the Essential Functions and Design Considerations of Spillways in ...
"Exploring the Essential Functions and Design Considerations of Spillways in ...Erbil Polytechnic University
 
TechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catchers
TechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor CatchersTechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catchers
TechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catcherssdickerson1
 
Crushers to screens in aggregate production
Crushers to screens in aggregate productionCrushers to screens in aggregate production
Crushers to screens in aggregate productionChinnuNinan
 
Unit7-DC_Motors nkkjnsdkfnfcdfknfdgfggfg
Unit7-DC_Motors nkkjnsdkfnfcdfknfdgfggfgUnit7-DC_Motors nkkjnsdkfnfcdfknfdgfggfg
Unit7-DC_Motors nkkjnsdkfnfcdfknfdgfggfgsaravananr517913
 
home automation using Arduino by Aditya Prasad
home automation using Arduino by Aditya Prasadhome automation using Arduino by Aditya Prasad
home automation using Arduino by Aditya Prasadaditya806802
 
Internet of things -Arshdeep Bahga .pptx
Internet of things -Arshdeep Bahga .pptxInternet of things -Arshdeep Bahga .pptx
Internet of things -Arshdeep Bahga .pptxVelmuruganTECE
 
Instrumentation, measurement and control of bio process parameters ( Temperat...
Instrumentation, measurement and control of bio process parameters ( Temperat...Instrumentation, measurement and control of bio process parameters ( Temperat...
Instrumentation, measurement and control of bio process parameters ( Temperat...121011101441
 
Configuration of IoT devices - Systems managament
Configuration of IoT devices - Systems managamentConfiguration of IoT devices - Systems managament
Configuration of IoT devices - Systems managamentBharaniDharan195623
 
Crystal Structure analysis and detailed information pptx
Crystal Structure analysis and detailed information pptxCrystal Structure analysis and detailed information pptx
Crystal Structure analysis and detailed information pptxachiever3003
 
Virtual memory management in Operating System
Virtual memory management in Operating SystemVirtual memory management in Operating System
Virtual memory management in Operating SystemRashmi Bhat
 

Dernier (20)

multiple access in wireless communication
multiple access in wireless communicationmultiple access in wireless communication
multiple access in wireless communication
 
Mine Environment II Lab_MI10448MI__________.pptx
Mine Environment II Lab_MI10448MI__________.pptxMine Environment II Lab_MI10448MI__________.pptx
Mine Environment II Lab_MI10448MI__________.pptx
 
Industrial Safety Unit-IV workplace health and safety.ppt
Industrial Safety Unit-IV workplace health and safety.pptIndustrial Safety Unit-IV workplace health and safety.ppt
Industrial Safety Unit-IV workplace health and safety.ppt
 
DM Pillar Training Manual.ppt will be useful in deploying TPM in project
DM Pillar Training Manual.ppt will be useful in deploying TPM in projectDM Pillar Training Manual.ppt will be useful in deploying TPM in project
DM Pillar Training Manual.ppt will be useful in deploying TPM in project
 
UNIT III ANALOG ELECTRONICS (BASIC ELECTRONICS)
UNIT III ANALOG ELECTRONICS (BASIC ELECTRONICS)UNIT III ANALOG ELECTRONICS (BASIC ELECTRONICS)
UNIT III ANALOG ELECTRONICS (BASIC ELECTRONICS)
 
IVE Industry Focused Event - Defence Sector 2024
IVE Industry Focused Event - Defence Sector 2024IVE Industry Focused Event - Defence Sector 2024
IVE Industry Focused Event - Defence Sector 2024
 
System Simulation and Modelling with types and Event Scheduling
System Simulation and Modelling with types and Event SchedulingSystem Simulation and Modelling with types and Event Scheduling
System Simulation and Modelling with types and Event Scheduling
 
Software and Systems Engineering Standards: Verification and Validation of Sy...
Software and Systems Engineering Standards: Verification and Validation of Sy...Software and Systems Engineering Standards: Verification and Validation of Sy...
Software and Systems Engineering Standards: Verification and Validation of Sy...
 
US Department of Education FAFSA Week of Action
US Department of Education FAFSA Week of ActionUS Department of Education FAFSA Week of Action
US Department of Education FAFSA Week of Action
 
"Exploring the Essential Functions and Design Considerations of Spillways in ...
"Exploring the Essential Functions and Design Considerations of Spillways in ..."Exploring the Essential Functions and Design Considerations of Spillways in ...
"Exploring the Essential Functions and Design Considerations of Spillways in ...
 
TechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catchers
TechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor CatchersTechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catchers
TechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catchers
 
Crushers to screens in aggregate production
Crushers to screens in aggregate productionCrushers to screens in aggregate production
Crushers to screens in aggregate production
 
Unit7-DC_Motors nkkjnsdkfnfcdfknfdgfggfg
Unit7-DC_Motors nkkjnsdkfnfcdfknfdgfggfgUnit7-DC_Motors nkkjnsdkfnfcdfknfdgfggfg
Unit7-DC_Motors nkkjnsdkfnfcdfknfdgfggfg
 
home automation using Arduino by Aditya Prasad
home automation using Arduino by Aditya Prasadhome automation using Arduino by Aditya Prasad
home automation using Arduino by Aditya Prasad
 
Design and analysis of solar grass cutter.pdf
Design and analysis of solar grass cutter.pdfDesign and analysis of solar grass cutter.pdf
Design and analysis of solar grass cutter.pdf
 
Internet of things -Arshdeep Bahga .pptx
Internet of things -Arshdeep Bahga .pptxInternet of things -Arshdeep Bahga .pptx
Internet of things -Arshdeep Bahga .pptx
 
Instrumentation, measurement and control of bio process parameters ( Temperat...
Instrumentation, measurement and control of bio process parameters ( Temperat...Instrumentation, measurement and control of bio process parameters ( Temperat...
Instrumentation, measurement and control of bio process parameters ( Temperat...
 
Configuration of IoT devices - Systems managament
Configuration of IoT devices - Systems managamentConfiguration of IoT devices - Systems managament
Configuration of IoT devices - Systems managament
 
Crystal Structure analysis and detailed information pptx
Crystal Structure analysis and detailed information pptxCrystal Structure analysis and detailed information pptx
Crystal Structure analysis and detailed information pptx
 
Virtual memory management in Operating System
Virtual memory management in Operating SystemVirtual memory management in Operating System
Virtual memory management in Operating System
 

Python WATs: Uncovering Odd Behavior