Upgrade to Pro — share decks privately, control downloads, hide ads and more …

堅牢.py_2.pdf

Avatar for Ryusei Ohkura Ryusei Ohkura
March 06, 2026
22

 堅牢.py_2.pdf

Avatar for Ryusei Ohkura

Ryusei Ohkura

March 06, 2026
Tweet

More Decks by Ryusei Ohkura

Transcript

  1. , S k P y t h o n o

     b U k Q ‰ n K 20 26/ 03 /05( Ñ) @b . p y
  2. ¤ó Èí P y t h o n o £

    s ( n ‰ z ž g W ⁄
  3. ¤ó Èí B fi j n ê Ã Á j

    s h e l l s c r i p t ` ‹ w w
  4. ¤ó Èí ‰ L j D ž g Á ü

    à ‰ z j fi f g M j D w w
  5. ¤ó Èí ‰ L ø Q j D n ¤

    á ü ¸ L d ‹ D fi r h ] fi j S h j D
  6. ó ¯ í ¹ Þ ü È *  ˆ

    > e ü ¬ . d e v # n ª L P y t h o n ² f n ª L T y p e S c r i p t •5 ƒ(ò ¯é) 3l 4l5 3l 4i5 êñ 9Ë
  7. Á ü à g p y t h o n

    ™ ( D f W e b ( µ ü Ó ¹ ™ ‰ z W f D O k B _ c f ‰ Ò ó È ™ i n ‹ F k ; ( W f D ‰ K ÆüÞ hD Fq
  8. Target Aud i ence W e b µ ü Ó

    ¹ n ‰ z g P y t h o n ™ i n ‹ F k  b k Ý c f D ‰ K å − _ D ¹ Pythono ‰ L j O fqz` h ˛‘„ f ‰¹ ‹−Py thon ™bk ø M_ D™˛‘„fD ‰ ¹ ¿ü²Ã È
  9. j\‰ 1 2 3 4 5 6 d e f

    m a i n ( ) : u s e r = g e t _ u s e r ( 1 2 3 ) p r i n t ( u s e r . n a m e ) m a i n ( )
  10. j\‰ 1 2 3 4 5 6 d e f

    m a i n ( ) : u s e r = g e t _ u s e r ( 1 2 3 ) p r i n t ( u s e r . n a m e ) m a i n ( ) T r a c e b a c k ( m o s t r e c e n t c a l l l a s t ) : F i l e " < s t d i n > " , l i n e 3 , i n < m o d u l e > A t t r i b u t e E r r o r : ' N o n e T y p e ' o b j e c t h a s n o a t t r i b u t e ' n a m e '
  11. j\‰ 1 2 3 4 5 6 d e f

    m a i n ( ) : u s e r = g e t _ u s e r ( 1 2 3 ) p r i n t ( u s e r . n a m e ) m a i n ( ) 1 2 3 4 5 6 d e f g e t _ u s e r ( i d ) - > A n y : . . . i f u s e r _ e x i s t : r e t u r n U s e r ( ) e l s e : r e t u r n N o n e
  12. j\‰ 1 2 3 4 5 6 d e f

    m a i n ( ) : u s e r = g e t _ u s e r ( 1 2 3 ) p r i n t ( u s e r . n a m e ) m a i n ( ) 1 2 3 4 5 6 d e f g e t _ u s e r ( i d ) - > A n y : . . . i f u s e r _ e x i s t : r e t u r n U s e r ( ) e l s e : r e t u r n N o n e
  13. j\‰ 1 2 3 4 5 6 d e f

    m a i n ( ) : u s e r = g e t _ u s e r ( 1 2 3 ) p r i n t ( u s e r . n a m e ) m a i n ( ) 1 2 3 4 5 6 d e f g e t _ u s e r ( i d ) - > A n y : . . . i f u s e r _ e x i s t : r e t u r n U s e r ( ) e l s e : r e t u r n N o n e N o n e L 0 c f S j D h ˛ c f × í ° é à ™ D fi g D _ _ † ¨ é ü
  14. j\‰ 1 2 3 4 5 6 d e f

    g e t _ u s e r ( i d ) - > U s e r | N o n e : . . . i f u s e r _ e x i s t : r e t u r n U s e r ( ) e l s e : r e t u r n N o n e r e t u r n n ‰ ™  : — k ø D f B R ‰
  15. j\‰ 1 2 3 4 5 6 d e f

    g e t _ u s e r ( i d ) - > U s e r | N o n e : . . . i f u s e r _ e x i s t : r e t u r n U s e r ( ) e l s e : r e t u r n N o n e 1 2 3 4 5 6 d e f m a i n ( ) : u s e r = g e t _ u s e r ( 1 2 3 ) p r i n t ( u s e r . n a m e ) m a i n ( ) O b j e c t o f t y p e ` U s e r | N o n e ` h a s n o a t t r i b u t e ` n a m e ` LM k O L k  e OShL gM ‰›
  16. j\‰ 100⁄ @ å g ‘ „f‰Us er c lass

    1 2 3 4 5 6 @ d a t a c l a s s c l a s s U s e r i d : i n t n a m e : s t r a d d r e s s 1 : s t r a d d r e s s 2 : s t r
  17. j\‰ 1 2 3 4 5 6 @ d a

    t a c l a s s c l a s s U s e r i d : i n t n a m e : s t r a d d r e s s 1 : s t r a d d r e s s 2 : s t r | N o n e 100⁄ @ å g ‘ „f‰Us er c lass address2™NullablekgM‰˜
  18. j\‰ User class â¸åüë â¸åüë ⸠åü ë ‰ Á

    § Ã ¯ L g M j D h U s e r c l a s s ™ ( W f D ‰ â ¸ å ü ë d d ™ L g M ‰ K ™ º K † j Q „ p j › j D ‰ L Á § Ã ¯ ™ Y ‰ S h k ‹ c f L M k  n ‡ „ k  e O S h L g M ‰
  19. j\‰ ‰ Ò ó È L B ‰ S h

    k ‹ c f ( L M k ‰ n Û þ k  e O S h L g M ‰  U ~ V ~ j á ó Ð ü h h ‡ k å  ³ ü É Ù ü ¹ ™  w U [ f D O ‹ F j ( Á ü à ‰ z k J D f  ( ‰ Ò ó È n J K R g › Ã W f ³ ü É n ô ™ ( Y ‰ S h L g M ‰  ˜  A I k ³ ü É ™ ø D f ‡ › F S h L ( Š H f D ‰ ( Ê g o  ‰ n Í † ¦ L ( Ø ~ c f D ‰  SS ~gn~ h †
  20. Ho wTo b 1 2 3 4 5 d e

    f g e t _ u s e r _ a g e ( i d : i n t ) - > i n t : r e t u r n 2 0 p, Ô−$ k‰Ò óÈ ™H ›„‰ ` ¢pxn ‰ÒóÈ
  21. Ho wTo b ` ¢p xn‰Òó È( ‰ 1 2

    3 4 5 d e f g e t _ u s e r _ a g e ( i d : i n t ) - > i n t : r e t u r n 2 0 1 2 3 4 5 u s e r _ a g e = g e t _ u s e r _ a g e ( " i d - 1 " ) u s e r _ a g e . s p l i t ( " - " ) A r g u m e n t t o f u n c t i o n ` g e t _ u s e r ` i s i n c o r r e c t : E x p e c t e d ` i n t ` , f o u n d s t r i n g O b j e c t o f t y p e ` i n t ` h a s n o a t t r i b u t e ` s p l i t ` ‰kÛ þLB„p¨éü
  22. Ho wTo b b F i nal ‰P ytho n

    3.8 ˝ 1 2 3 4 f r o m t y p i n g i m p o r t F i n a l P O R T : F i n a l [ i n t ] = 9 9 9 9 P O R T = 9 0 0 0 $nô °™W ‹FhY‰h¨é ü R e a s s i g n m e n t o f ` F i n a l ` s y m b o l ` P O R T ` i s n o t a l l o w e d : S y m b o l l a t e r r e a s s i g n e d h e r e
  23. Ho wTo b b P r o tocolPy th on

    3. 8˝ 1 2 3 4 5 6 7 8 f r o m t y p i n g i m p o r t P r o t o c o l c l a s s C a l c P r o t o c o l ( P r o t o c o l ) : d e f c a l c ( s e l f ) - > i n t : . . . d e f p r o c e s s ( c a l c u l a t o r : C a l c P r o t o c o l ) : p r i n t ( c a l c u l a t o r . c a l c ( ) )  p n c a l c u l a t o r k c a l c h D F á ½ Ã É L B ‰ S h ™ ‰ g h þ Y ‰ S h L g M ‰
  24. Ho wTo b b P r o tocolPy th on

    3. 8˝ 1 2 3 4 5 6 7 8 9 1 0 1 1 c l a s s C a l c u l a t o r _ 1 : d e f c a l c ( s e l f ) - > i n t : r e t u r n 1 0 * 2 0 c l a s s C a l c u l a t o r _ 2 : d e f c a l c ( s e l f ) - > i n t : r e t u r n 2 0 * 3 0 p r o c e s s ( c a l c u l a t o r = C a l c u l a t o r _ 1 ( ) ) p r o c e s s ( c a l c u l a t o r = C a l c u l a t o r _ 2 ( ) ) e ł Y ‰ c l a s s L p j c f ‡ P r o t o c o l ™ • _ W f D ‰ n g ‰ ¨ é ü L ú j D ˆ K ™ h þ g M ‰
  25. Ho wTo b b C al l able P ython

    3.5˝ 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 f r o m t y p i n g i m p o r t C a l l a b l e d e f r o u n d _ u p ( d a t a : f l o a t ) - > i n t : r e t u r n i n t ( d a t a ) + 1 d e f r o u n d _ d o w n ( d a t a : f l o a t ) - > i n t : r e t u r n i n t ( d a t a ) d e f r o u n d ( d a t a : f l o a t , r o u n d _ f u n c : C a l l b a l e [ [ f l o a t ] , i n t ] ) : r e t u r n i n p u t _ f u n c ( d a t a ) r o u n d ( 1 . 2 2 , r o u n d _ u p ) # 2 r o u n d ( 1 . 2 2 , r o u n d _ d o w n ) # 1 ¢ p ™  p h W f × Q Ö − æ  ™ î W ÿ H ï ý k W d d ] n Q  ™ ‰ g h þ g M ‰
  26. Ho wTo b c ¸ § Íê ¯¹P y thon

    3.5˝ ‰p k‹− ½a— j‰™ hþ 1 2 3 4 n u m b e r _ l i s t : l i s t [ i n t ] = [ 1 , 2 , 3 , 4 , 5 ] s t r _ d i c t : d i c t [ s t r , s t r ] = { " a " : " v a l u e " , " b " : " v a l u e " }
  27. Ho wTo b c ¸ § Í ê¯¹Py th on

    3. 12˝ 1 2 3 4 f r o m t y p i n g i m p o r t T y p e V a r T = T y p e V a r ( " T " ) d e f f l a t t e n ( m a t r i x : l i s t [ l i s t [ T ] ] ) - > l i s t [ T ] : . . . 1 2 3 4 d e f f l a t t e n [ T ] ( m a t r i x : l i s t [ l i s t [ T ] ] ) - > l i s t [ T ] : . . . hf‡¹ êàk øQ‰‹F kjc _›
  28. Ho wTo b dat aclass da ta cla s sLjD

    hM 1 2 3 4 5 6 7 8 9 c l a s s U s e r i d : i n t n a m e : s t r a d d r e s s 1 : s t r d e f _ _ i n i t _ _ ( s e l f , i d , n a m e , a d d r e s s ) : s e l f . i d = i d s e l f . n a m e = n a m e s e l f . a d d r e s s = a d d r e s s
  29. Ho wTo b dat aclass ôM‰™ ! X k h

    þ Y ‰Sh LgM ‰› 1 2 3 4 5 6 7 f r o m d a t a c l a s s e s i m p o r t d a t a c l a s s @ d a t a c l a s s c l a s s U s e r i d : i n t n a m e : s t r a d d r e s s 1 : s t r 1 2 3 4 5 6 7 8 9 c l a s s U s e r i d : i n t n a m e : s t r a d d r e s s 1 : s t r d e f _ _ i n i t _ _ ( s e l f , i d , n a m e ; a d d r e s s ) : s e l f . i d = i d s e l f . n a m e = n a m e s e l f . a d d r e s s = a d d r e s s
  30. Ho wTo b datacl ass (‰ 1 2 3 4

    5 6 @ d a t a c l a s s c l a s s U s e r i d : i n t n a m e : s t r a d d r e s s 1 : s t r a d d r e s s 2 : s t r | N o n e 1 2 3 4 5 6 u s e r = U s e r ( i d = 1 , n a m e = " o h k u r a " , a d d r e s s = " S a i t a m a " ) p r i n t ( u s e r . a d d r e s s ) Õ£üëÉ™ ı©gM ‰ng‰ EL˙‰
  31. Ho wTo b Un io n 1 2 3 4

    5 6 7 f r o m t y p i n g i m p o r t U n i o n d e f g e t _ u s e r ( ) - > U n i o n [ U s e r , A d m i n U s e r ] : . . . # 3 . 1 0 K › d e f g e t _ u s e r ( ) - > U s e r | A d m i n U s e r : . . . ô„‰™ hþY‰ShL gM‰ª
  32. Ho wTo b ty pe ⁄ 3.12 ~ 1 2

    3 4 type Use rId L i stT y p e = l i s t[i nt] t y p e ⁄ k ‹ c f ‰ ¨ ¤ ê ¢ ¹ h W f  : — k ı ©
  33. Ho wTo b ‰ k ¢ Y ‰  è

    Ä ü ë n z U ‡ ı  h 2 fi g D ‰ m y p y  2 0 1 2 t ˝ p y r i g h t  2 0 1 9 t ˝ t y  2 0 2 5 t 1 2  ˝ ²
  34. Ho wTo b fe at ur e ma in m

    y p y c h e c k L ˆ c f j D h m e r g e g M j D P u l l R e q u e s t L \  U „ ‰ h ê Õ g m y p y Á § à ¯ L U „ ‰ ³ ü É n - k ‰ ¨ é ü L B ‰ ¶ K g ê ê ü ¹ Y ‰ S h o g M j D ê ê ü ¹ U „ f D ‰ ‡ n o h f ‰ Á § à ¯ L U „ f D ‰ ¶ K ™ Ý < CI g›h j¶K™‹‰
  35. Ho wTo b ‰ Ò ó È o B ‰

    Q i Ö ' T y p e E r r o r L z ˜ Y ‰ ï ý ' L B ‰ ³ ü É Õ — k Ô ‰ ‰ L  Y ‰ ¢ p k J D f c a s t ™ ( D f ‰ ¨ é ü ™ Q f D ‰ ± ü ¹ c o l u m n _ l i s t h v a l u e _ l i s t n w U L p j ‰ 4  k i n d e x E r r o r ø M ¹ ™ H f Y — ã ’ g  Ø Q ‰ ‹ F k W _ D Ñ o c o d e r a b b i t a i j i n A I ³ ü É ì Ó å ü Ä ü ë n × í ó × È g ‡  : g M ‰ ³üÉìÓåü/‘ 1 2 3 4 5 u s e r _ d i c t : d i c t [ s t r , i n t | s t r ] = { } u s e r _ d i c t [ " a g e " ] = 2 0 u s e r _ d i c t [ " n a m e " ] = " T a r o Y a m a d a " p r i n t ( u s e r _ d i c t [ " a d d r e s s " ] ) 1 2 3 4 5 v a l u e = g e t _ v a l u e ( o b j , " s t r " ) " " " g e t _ v a l u e ( ) - > s t r | i n t " " " s t r _ v a l u e = c a s t ( s t r , v a l u e ) 1 2 3 4 5 c o l u m n _ l i s t = [ " h o g e " , " p i y o " ] v a l u e _ l i s t = [ 1 , 2 ] r e s u l t _ d i c t = { } f o r n i n r a n g e ( l e n ( c o l u m n _ l i s t ) ) : r e s u l t _ d i c t [ c o l u m n _ l i s t [ n ] ] = v a l u e _ l i s t [ n ]
  36. Ho wTo b mypyn-ı 1 2 3 4 5 [

    t o o l . m y p y ] d i s a l l o w _ a n y _ u n i m p o r t e d = t r u e # ‰ L j D é ¤ Ö é ê 1 e n A n y ™ † b d i s a l l o w _ a n y _ e x p r = t r u e #  L A n y k j ‰ n ™ 1 U j D d i s a l l o w _ a n y _ e x p l i c i t = t r u e # : A n y ™ 1 U j D d i s a l l o w _ a n y _ g e n e r i c s = t r u e # - > l i s t ™ 1 U j D m y p y n - ı  î n ‰ Ö k ‡ U ~ V ~ j - ı ³ W O Y ‰ S h ‡ è  — k ƒ ‰ O Y ‰ S h ‡ ï ý × í ¸ § ¯ È k  ‘ [ _ - ı ™
  37. è¹ L Bko‰ L‹H‰ 1 2 3 4 5 num

    _value: int = "ho g e ho ge " ¨éüjOLogMfW~F ê ê ü ¹ M n ² – — ‰ c h e c k h ë ü ë g ÷ e ™ 2 P S h L Í †
  38. è¹ An yL˛ Y‰ 1 2 3 4 v a

    l u e : a n y = g e t _ v a l u e ( ) v a l u e . f o o . b a r ( ) " " " ‚ ‰ ¨ é ü ú j D " " " ¦ A n y k j ‰ h A n y ™  : — k þ æ Y ‰ ~ g f J L ú j D m y p y n - ı — ³ ü É ì Ó å ü g A n y L ÷ e W j D ‹ F k ‹ ‰
  39. è¹ Ddn fi k KAn y kjcf‰ 1 2 3

    4 5 6 7 m e m b e r _ l i s t = [ ] m e m b e r _ l i s t . a p p e n d ( v a l u e _ 1 ) m e m b e r _ l i s t . a p p e n d ( v a l u e _ 2 ) m e m b e r _ l i s t " " " ™ l i s t [ A n y ] " " "  ý k ê ¹ È k a p p e n d Y ‰ h D d n fi k K ‰ L D j O j c f ‰  : — k ‰  ı Y ‰ ‹ F k Y ‰  S „ ‡ m y p y n - ı j i g f J L ú ‰ ‹ F k g M ‰