Skip to content

Commit

Permalink
size of scope image
Browse files Browse the repository at this point in the history
  • Loading branch information
Tetsu HARUYAMA authored and Tetsu HARUYAMA committed Jan 10, 2024
1 parent e85ae22 commit 5dc3728
Showing 1 changed file with 67 additions and 23 deletions.
90 changes: 67 additions & 23 deletions 1_Basics_III.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -1840,15 +1840,18 @@
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"heading_collapsed": true
},
"source": [
"## オブジェクトと属性"
]
},
{
"cell_type": "markdown",
"metadata": {
"heading_collapsed": true
"heading_collapsed": true,
"hidden": true
},
"source": [
"### 属性について"
Expand Down Expand Up @@ -2152,14 +2155,19 @@
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"heading_collapsed": true,
"hidden": true
},
"source": [
"### 関数とメソッドの違い"
]
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"hidden": true
},
"source": [
"本章の最初で関数について説明し,ここではメソッドについて解説した。その説明を読んでも,関数とメソッドの違いが不明瞭だと感じる読者もいるだろう。ここでは,その違いを再度考えてみる。関数とメソッドの役割は基本的には同じだが,で異なる点を図{numref}`fig:3-method`にまとめた。\n",
"\n",
Expand All @@ -2172,7 +2180,7 @@
"\n",
"```{figure} /images/method.png\n",
"---\n",
"scale: 30%\n",
"scale: 35%\n",
"name: fig:3-method\n",
"---\n",
"関数とメソッドの違い\n",
Expand All @@ -2182,6 +2190,7 @@
{
"cell_type": "markdown",
"metadata": {
"heading_collapsed": true,
"tags": [
"remove-cell"
]
Expand All @@ -2192,22 +2201,29 @@
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"hidden": true
},
"source": [
"(sec:3-scope)=\n",
"## スコープ"
]
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"heading_collapsed": true,
"hidden": true
},
"source": [
"### 説明"
]
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"hidden": true
},
"source": [
"スコープとは、変数が所属し直接アクセスできるコードの中の「領域」を示す。類似する概念に名前空間(Namespace)もあるが、スコープの情報を記す「表」のことであり、スコープ(Scope)と同義と理解すれば良い。\n",
"\n",
Expand All @@ -2226,7 +2242,9 @@
{
"cell_type": "code",
"execution_count": 57,
"metadata": {},
"metadata": {
"hidden": true
},
"outputs": [
{
"data": {
Expand All @@ -2251,15 +2269,19 @@
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"hidden": true
},
"source": [
"この関数を実行すると、Pythonはまず関数`scope_0`のローカル・スコープ内で変数`s`を探すことになる。ローカル・スコープに`s`があるので、それを返している。次の関数を考えよう。"
]
},
{
"cell_type": "code",
"execution_count": 58,
"metadata": {},
"metadata": {
"hidden": true
},
"outputs": [
{
"data": {
Expand All @@ -2281,7 +2303,9 @@
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"hidden": true
},
"source": [
"この例では、まず`Python`はローカル・スコープに`s`があるかを確かめる。ローカル・スコープにないため、次にグローバル・スコープに`s`がないかを確かめている。グローバル・スコープに`s`があったので、それを返している(ないとエラーが出る)。\n",
"\n",
Expand All @@ -2291,7 +2315,9 @@
{
"cell_type": "code",
"execution_count": 59,
"metadata": {},
"metadata": {
"hidden": true
},
"outputs": [
{
"data": {
Expand All @@ -2314,7 +2340,9 @@
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"hidden": true
},
"source": [
"`s_local`は関数`scope_2`のローカル・スコープで定義されている。グローバル・スコープからアクセスしようとするとエラーが発生する。"
]
Expand All @@ -2323,6 +2351,7 @@
"cell_type": "code",
"execution_count": 60,
"metadata": {
"hidden": true,
"tags": [
"raises-exception"
]
Expand All @@ -2346,13 +2375,15 @@
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"hidden": true
},
"source": [
"以上の説明を図{numref}`fig:3-scope`にまとめる次のようになる。\n",
"\n",
"```{figure} /images/scope.png\n",
"---\n",
"scale: 20%\n",
"scale: 35%\n",
"name: fig:3-scope\n",
"---\n",
"グローバル・スコープとローカル・スコープの関係\n",
Expand All @@ -2362,7 +2393,8 @@
{
"cell_type": "markdown",
"metadata": {
"heading_collapsed": true
"heading_collapsed": true,
"hidden": true
},
"source": [
"### 教訓1"
Expand Down Expand Up @@ -2550,14 +2582,18 @@
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"hidden": true
},
"source": [
"### 教訓2"
]
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"hidden": true
},
"source": [
"> `for`ループの1行目に使う変数は再割り当てされても構わない変数を使おう。\n",
"\n",
Expand All @@ -2569,7 +2605,9 @@
{
"cell_type": "code",
"execution_count": 67,
"metadata": {},
"metadata": {
"hidden": true
},
"outputs": [
{
"name": "stdout",
Expand All @@ -2590,15 +2628,19 @@
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"hidden": true
},
"source": [
"この`for`ループの`i`は`range(5)`の連番`0`、`1`、`2`、`3`、`4`を指す変数として使われるが、グローバル・スコープの変数として存在し、ループの最後の値が割り当てられている。確認してみよう。"
]
},
{
"cell_type": "code",
"execution_count": 68,
"metadata": {},
"metadata": {
"hidden": true
},
"outputs": [
{
"data": {
Expand All @@ -2617,7 +2659,9 @@
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"hidden": true
},
"source": [
"`for`ループで使う変数は、ループ用の変数を使うようにしよう。"
]
Expand Down

0 comments on commit 5dc3728

Please sign in to comment.