Javaプログラマが退屈なことをPythonにやらせようとした①

コーディングとシステム開発ができるコーチ、ファシリテーターです。
こんにちは。

機械学習や深層学習を使って、やってみたいことがあるので
Python勉強。
子どもたちのプログラミング教室もPythonやるとこ多いようで、
負けてられないな。って気持ちもあります。

勉強するに一番良いのはプロジェクトに入る事(おい!)ですが、
時間も限られているので市販の教材使って勉強していきます。
私が選択したのはO’REILLYの「退屈なことはPythonにやらせよう」

開発環境構築は独自で構築しました。

この本のまえがきにあたる、開発環境の構築は全部無視しています。

VisualStudioCodeが使いたかったから・・・

今回の記事の内容は、まだPythonは仕事してくれていません。
基本的な制御構文を書いてみたくらいです。

Python入門、static void main()はどこに?

Pythonいきなり処理命令文を書き始めるのか!
javaの基礎ではなんだかわからない”public class hoge{}”から始まって
”public static void main(string args[])”というおまじないがない。

IDE使えば手間ではないとは言え、完全に書かなくていいのは
プログラミング始める人には良いと思った。

がPythonだとこれだけ

これは楽!

一方で変数の型宣言無しは、まだなんとも言えないな。
Javascriptでも思ったけど、
型検証したり、命名規約で縛るとかするのが良いのかな?

フロー制御

if、for、whileの基本制御構文たち。
言語によって少しづつ記述が違うのはやめて欲しい。

各制御ブロックをインデント(半角スペース4つ)であらわして、
コロン「:」で制御文の文末を装飾する。
代わりに中括弧「{}」を書かない。

for文がjavaのfor each のような動きなのかな。
range(n)でコレクション作って、それを順次取り出してループする。

インデント揃えないと、ブロックとして成り立たない。ってのは
可読性にも良いですね。
インデントがバラバラなコードを見なくてすむのは精神衛生上よろしいかと。

関数

開始間もなくで関数が出てきました。

Pythonでエントリーポイント(java のstatic void main~)書かないで処理が実行されるのは、
上から順に解析と実行がされているからなんだと。

後から処理を実行したい。とか
何度も同じ処理を実行したい場合は、その処理単位で関数にしておこう。

戻り値宣言無く、関数名と引数と処理の内容書けばOK。
関数は戻り値が何かあるのは当然だよね。との事らしく、
わざわざ宣言せずに、
処理の中でreturn ○○ 書けばいい。

当然ながら、引数は変数名だけ書いて、型は無し。

処理によって値が違う関数ではなくて、型が違うのが返ってくる関数もできるのか・・・

リスト

List?なのか配列なのか?

値の初期化は配列では無いかと思うけど

検索やら、並び替え、リスト通しの結合、要素削除、挿入、追加と
JavaのListと近い感じで使えます。

やっぱりリストなのか。

型による制限がないので、文字列と数値が混在するリストも可能。
混在するリストでソートさせるとエラーになるよ。
という事なんで、ここらも例外処理考えるポイントになるのか?

ここでデータ型のミュータブル(変更可能なデータ型)とイミュータブル(変更不能なデータ型)、
リストのイミュータブル型であるタプル。という言葉がでてきました。

リストはミュータブルなデータ型。
要素の中身を変更する事もできるし、サイズを変える事もできる。
イミュータブルなタプルにすると、要素の中身変えられないし、サイズ変更もダメ。

文字列型もイミュータブル。

プログラム書く側ではそれほど違いはないみたいですが、
Pythonがイミュータブルなタプルを使うと若干早くなることもある。
ということなんで、メモリ展開などで省エネなんだろうか?

というところまで来て終わります。

まとめ

プログラムを始めるなら、余分なおまじないなしで書けるので良い。

変数になんでも入るので、実行時のエラー解析力はちゃんとつける必要ありかな。

ブロックと、インデントは慣れると快適に感じます。

ここまでは、退屈なことをPythonにさせていない。
書いてるコードが退屈・・・なので早く次に進みたい。

Related post

  1. 【備忘録】Python開発環境をセットアップ【VisualStudio…

  2. Pythonでワードクラウドを作ろう

  3. Pythonでワードクラウド作り②日本語版

  4. PythonでGmail送信

  5. Javaプログラマが退屈なことをPythonにやらせようとした③

  6. Javaプログラマが退屈なことをPythonにやらせようとした②

  7. Python+Seleniumでwebスクレイピング

Comment

  1. No comments yet.

  1. No trackbacks yet.