回答編集履歴
1
修正。
answer
CHANGED
@@ -35,7 +35,7 @@
|
|
35
35
|
return 計算結果
|
36
36
|
```
|
37
37
|
|
38
|
-
例えば例示だけど、本当だったらこの程度
|
38
|
+
例えば例示だけど、本当だったらこの程度は次のようにして書いた方がいい。
|
39
39
|
|
40
40
|
```Python
|
41
41
|
#!/usr/bin/env python3
|
@@ -50,14 +50,14 @@
|
|
50
50
|
|
51
51
|
もう直接```a + b```を返しちゃうね。わざわざ```c```に代入しない。冗長になるから。
|
52
52
|
```result```なんて変数も用意しない。変数に「代入」するのは、**使い回し前提**、ってのが原則なんだ。関数内で一回しか登場せんような「計算」はわざわざ代入せんでもエエです。
|
53
|
-
あと、早いうちに慣れてた方がいい作法は、出力関数(```print```)の使用は```if __name__ == 'main':```の後に
|
53
|
+
あと、早いうちに慣れてた方がいい作法は、出力関数(```print```)の使用は[```if __name__ == 'main':```](https://note.nkmk.me/python-if-name-main/)の後に置く。
|
54
|
-
もっと慣れれば[ユニットテスト](https://docs.python.org/ja/3.13/library/unittest.html)とか使うかもしんないけど、まぁ、その辺は
|
54
|
+
もっと慣れれば[ユニットテスト](https://docs.python.org/ja/3.13/library/unittest.html)とか使うかもしんないけど、まぁ、その辺は追々、で。
|
55
55
|
|
56
56
|
> 引数と戻り値の扱い方がよくわかりません。
|
57
57
|
|
58
58
|
これも割に良くある説明だけど、基本的には「関数」って言った場合、数学の「関数」と同一視していいです。
|
59
59
|
引数ってのは単純には数学の関数に於ける[**独立変数**](http://kentiku-kouzou.jp/suugaku-dokurituhensuu.html)だ。
|
60
|
-
まぁ、こう言い切っちゃうと、じゃあ「引数に文字列を取った場合は?」とか「引数に構造体を取った場合は?」とかツッコミどころもあるんだけど(笑)、取り敢えずはそう思ってていいです。プログラミング言語に於ける「関数」とは数学で言う関数をベースにし
|
60
|
+
まぁ、こう言い切っちゃうと、じゃあ「引数に文字列を取った場合は?」とか「引数に構造体を取った場合は?」とかツッコミどころもあるんだけど(笑)、取り敢えずはそう思ってていいです。プログラミング言語に於ける「関数」とは数学で言う関数をベースにした上で、もうちょっと抽象化したもの、と捉える事ができる。
|
61
61
|
むしろ、プログラミング初心者が意外と概念的に捉えづらいのが「戻り値」の方かね。これはPythonだと「```return```する値」を戻り値と呼ぶ、って捉えた方が逆説的だけど分かりやすいかも。
|
62
62
|
この辺、プログラミング言語の「設計」に纏わる話なんだけど、世の中には「明示的に```return```」する言語と「暗黙に```return```する」言語の二種類があるのね。後者は端的に言うと「計算の最後が**自動的に**```return```される」言語だ。
|
63
63
|
例えば、[Ruby](https://www.ruby-lang.org/ja/)って言語は基本的には「計算の最後が自動的に```return```される」。
|
@@ -95,7 +95,7 @@
|
|
95
95
|
3
|
96
96
|
|
97
97
|
```
|
98
|
-
とかね。こう書けば1と3は捨てられる。より正確に言うと、処理系は```return```を見た時点で、2を持って関数```bar```を**脱出**しちまうんだ。
|
98
|
+
とかね。こう書けば1と3は捨てられる。より正確に言うと、Python処理系は```return```を見た時点で、2を持って関数```bar```を**脱出**しちまうんだ。
|
99
99
|
結果、Pythonでは次のようなプログラムを書くと、文法違反ではないけど、この関数は1しか返さない。
|
100
100
|
|
101
101
|
```Python
|
@@ -133,7 +133,7 @@
|
|
133
133
|
> 複数の値を返すにはどうすれば良いでしょうか?
|
134
134
|
|
135
135
|
Pythonでは複数の値を返す事は出来ない。複数の値を返すにはそのプログラミング言語は**多値関数**と言う機能が無いといけない。言い換えると、Pythonは多値関数を持たない。
|
136
|
-
代わりと言ってはなんだが、Pythonではタプルを用いる。```return```する複数の値をコンマで並べる。
|
136
|
+
代わりと言ってはなんだが、Pythonではタプルを用いる。```return```する複数の値をコンマで区切って並べる。
|
137
137
|
|
138
138
|
```Python
|
139
139
|
def foo(a, b):
|
@@ -190,7 +190,7 @@
|
|
190
190
|
File "/usr/lib/python3.12/idlelib/run.py", line 580, in runcode
|
191
191
|
exec(code, self.locals)
|
192
192
|
File "<pyshell#18>", line 1, in <module>
|
193
|
-
File "/home/
|
193
|
+
File "/home/hoge/test.py", line 3, in bar
|
194
194
|
n += i
|
195
195
|
^
|
196
196
|
UnboundLocalError: cannot access local variable 'n' where it is not associated with a value
|