Coding Memos

try {coding} catch {questions}

Python3基本文法(PHPとざっくり比較)【ゼロ作DL_3】

引き続き、ちょっとずつ「ゼロから作るDeep Learning」進めていっています。 本稿では、Pythonの基本文法について。

データ型

データ型はtype()という関数で判定できる。

>>> i = 10
>>> type(i)
<class 'int'>
>>> s = "python"
>>> type(s)
<class 'str'>
>>> f = 3.14
>>> type(f)
<class 'float'>
>>> d = {'height': 100}
>>> type(d)
<class 'dict'>
>>> l = [1,3,4,5,6,8]
>>> type(l)
<class 'list'>
>>> lier = false
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'false' is not defined
>>> lier = False
>>> type(lier)
<class 'bool'>

ここで、Pythonブーリアンは、頭文字は大文字だということを覚えておかないと。falseとしたら、not definedと言われてしまったので。

  • int
  • str
  • list
  • dict
  • bool
  • float

が出て来ました。

誤解を恐れず、私レベルのPHPer的には、listとdictは配列と連想配列だな?って感じがします。

ほかは、使用時の違いはあるかもしれませんが、知識としては違和感ない感じですね。

組込型(Build-in Type)

4. 組み込み型 — Python 3.6.0 ドキュメント

Scienceとしてプログラムを書いたことはないんですが、複素数型というのもあるのですね。これは知らなかった。 (サイト作るようなWebプログラマだと使ったりしないですよね?大抵は。)

また、知らないだけかもしれませんが、数値型に書いてあるように、

>>> 3 / 2
1.5
>>> 3 // 2
1

// という演算子で、切り下げた商を得られるみたいですね。データの扱いに強いPythonて感じします。

他にも、イテレータ型、シーケンス型、ジェネレータ型などがあって、お、おう・・・という感じですが、 そのうち使うときにしっかり学ぼうと思います。

いまはこういうのがあるんだなっと知っておくにとどめます。(実用に勝る学びなしと思っていますので。)

if文

>>> hungry = True
>>> if hungry:
...     print("hungry")
... else:
...     print("not hungry")
...
hungry #出力結果

コロンで、宣言する感じですかね。これはPHPでもこのような書き方ができますが、PHPだとendif;が必要になってくるあたりが変わってくるかなって思います。

標準的な出力はprint()関数なんですね。

本書に書いてあるように、処理の先頭は、4つの空白文字を入れろってことでした。Pythonは 4 Spacesでインデントするのが一般的みたいですね。TabよりもSpaceが推奨と書いてありました。

for文

<?php for($i=0;$i<10;$i++ ){
                echo $i;
            }

Pythonで書くと

>>> for i in range(10):
...     print(i)
...
0
1
2
3
4
5
6
7
8
9

となりますかね?

<?php 
$arr = [1,2,3,4]
foreach $arr as $a {
  echo $a;
}

for i in [1,2,3,4]:
    print(i)

という感じですかね?

なんとなくつかめて来た感じします。

関数

>>> def hello():
...     print("Hello World")
...
>>> hello()
Hello World

書き方自体はPHPとだいぶ異なりますね。少ない経験から言うと、Rubyの書き方が似てますかね?

$ irb
irb(main):001:0> def hello()
irb(main):002:1>  print("Hello World")
irb(main):003:1> end
=> :hello
irb(main):004:0> hello()
Hello World=> nil

ちょっと、Rubyインタプリタをテキトーに使ってみましたが・・・。nilってでてますね・・・。まあいいか。 こんな感じだったと思います。Rubyのメソッドの書き方は。

こんなところですかね。

少しずつPythonの書き方に慣れていきたいと思います。