Skip to content

Commit

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

0 comments on commit e85ae22

Please sign in to comment.