Python縺ォ繝昴う繝ウ繧ソ繝シ縺ッ縺ェ縺����
====================================

C/C++縺ョ蟄ヲ鄙偵�髮」髢「縺ョ縺イ縺ィ縺、縺後�繧、繝ウ繧ソ繝シ縺ョ謇ア縺�□縺ィ險€繧上l縺ヲ縺�∪縺吶€�
C/C++縺ョ繝昴う繝ウ繧ソ繝シ縺ッ鄙堤�縺吶l縺ー髱槫クク縺ォ蠑キ蜉帙↑豁ヲ蝎ィ縺ィ縺ェ逅�∪縺吶€ゅ◎縺ョ荳€譁ケ縺ァ
菴ソ縺�婿繧定ェ、繧後�縲√す繧ケ繝�Β繧堤�エ螢翫☆繧九%縺ィ縺ォ繧ゅ↑繧翫°縺ュ縺ェ縺�鴨繧呈戟縺、
縲≫€晄怙蠕後�豁ヲ蝎ィ"縺ィ繧りィ€縺医k縺ァ縺励g縺�€�

縺昴≧諤昴▲縺ヲ謾ケ繧√※Python繧定ヲ九k縺ィ縲}ython縺ョ繝��繧ソ蝙九�荳ュ縺ォ縺ッ
繝昴う繝ウ繧ソ繝シ蝙九�譛峨j縺セ縺帙s縺励€√�繧、繝ウ繧ソ繝シ繧呈桃菴懊☆繧九◆繧√�繧ェ繝壹Ξ繝シ繧ソ繝シ繧�未謨ー繧ょュ伜惠縺励∪縺帙s縲�
蜷後§繝励Ο繧ー繝ゥ繝�險€隱槭↑縺ョ縺ォ�溘→諤昴o繧後∪縺帙s縺具シ�

螳溘�縲 ̄ython縺ァ縺ッ(縺昴@縺ヲJava縺ァ繧�)縲∝、画焚縺ョ諢丞袖縺靴/C++縺ィ縺ッ逡ー縺ェ縺」縺ヲ縺�∪縺吶€�
縺ゅ∴縺ヲ荵ア證エ縺ェ險€縺�婿繧偵☆繧後�縲�"Python(Java)縺ァ縺ッ蜈ィ縺ヲ縺ョ螟画焚縺ッ繝昴う繝ウ繧ソ繝シ窶昴↑縺ョ縺ァ縺吶€�

C/C++縺ァ縺ッ縲∝、画焚縺ッ谺。縺ョ讒倥↓螳」險€縺輔l縺セ縺吶€� 

.. code-block:: c

   long l;
   double f;
   long *pl=&l;
   double *pf = &f;
   
縺薙�萓九〒縺ッ縲� l, f 縺悟、画焚蜷阪〒縲� pl, pf 縺後◎繧後i縺ョ螟画焚縺ク縺ョ繝昴う繝ウ繧ソ繧剃ソ晄戟縺吶k繝昴う繝ウ繧ソ螟画焚縺ィ縺�≧縺薙→縺ォ縺ェ繧翫∪縺吶€�
螟画焚縺ョ蛟、繧貞、画峩縺吶k縺ィ縲∝、画焚蜷阪↓蜑イ繧雁ス薙※繧峨l縺溘Γ繝「繝ェ鬆伜沺縺ォ繧ケ繝医い縺輔l縺溷€、縺悟、画峩縺輔l縺ヲ縺�k縺薙→縺悟�縺九j縺セ縺吶€�

.. code-block:: c

   l=1;
   printf("l=%ld, pl=0x%p, *pl=%ld \n", l, pl, *pl);
   l+=1;
   printf("l=%ld, pl=0x%p, *pl=%ld \n", l, pl, *pl);

.. code-block::
   
   % clang pointer.c 
   % ./a.out
   l=1, pl=0x0x304edb708, *pl=1 
   l=2, pl=0x0x304edb708, *pl=2 


荳€譁ケpython縺ァ蜷梧ァ倥�繝励Ο繧ー繝ゥ繝�繧貞ョ溯。後@縺ヲ隕九k縺ィ縲�
   
.. jupyter-kernel:: python3
    :id: python3_kernel

.. jupyter-execute::
   :linenos:

   a=1
   b=2
   print("a= {} id(1)={} id(a)={}".format(a , id(1),  id(a)))
   print("b= {} id(2)={} id(b)={}".format(b , id(2),  id(b)))
   a += 1
   print("a= {} id(1)={} id(a)={}".format(a , id(1),  id(a)))
   print("a= {} id(2)={} id(a)={}".format(a , id(2),  id(a)))
   print("b= {} id(2)={} id(b)={}".format(b , id(2),  id(b)))
   
縺ィ縺�≧繧医≧縺ォ縲∝、画焚 a縺ョ蛟、繧貞、画峩縺吶k縺ィ縲√◎縺ョid (繝。繝「繝ェ繧「繝峨Ξ繧ケ縺ォ逶ク蠖難シ峨′螟峨o縺」縺ヲ縺励∪縺�%縺ィ縺悟�縺九j縺セ縺吶€�
縺セ縺溘◎縺ョ蛟、縺ッ縲∝、画焚a縺ョ蛟、縺ィ縺ェ縺」縺ヲ縺�k繧ェ繝悶ず繧ァ繧ッ繝医�id縺ィ蜷後§縺ィ縺ェ縺」縺ヲ縺�∪縺吶€ゅ%縺ョ繧医≧縺ォ縲}ython縺ァ縺ッ螟画焚縺ッ縲�
繝。繝「繝ェ鬆伜沺縺ォ縺、縺代i繧後◆蜷榊燕縺ァ縺ッ縺ェ縺上€√◎縺ョ蛟、縺ョ繧ェ繝悶ず繧ァ繧ッ繝医r遉コ縺吶�繧、繝ウ繧ソ縺ョ讒倥↑迚ゥ縺ィ諤昴▲縺滓婿縺碁俣驕輔>縺後≠繧翫∪縺帙s縲�



.. jupyter-kernel:: SageMath
   :id: sagemath_kernel

.. jupyter-execute::
   :linenos:

   var('x y')
   y=(1+x)**20
   show(y.expand())