巷ではPythonブームが加熱中。もはやプログラマーの基本スキルと言ってもよさげ。GWくらいからチマチマ勉強中。【Pythonを勉強したい】③(チマチマ勉強中 Part2)【Pythonを勉強したい】④(チマチマ勉強中 Part3)【Pythonを勉強したい】⑤(チマチマ勉強中 Part4)と続きも書いてます。

  • ひとりごと
かつて、最初に習得すべき言語はC言語一択という時代があり、私もC言語を徹底的に覚えたものです。エンジニアたるもの、まず速度や堅牢性を考えるべきだよね。だとしたらC/C++/Javaあたりは最低限押さえておくべきなどと、ついつい考えてしまうワタクシですが、WEBが世の中のインフラとなった現在においてJavaScript、Ruby、PHPあたりを覚えると良く、機械学習をするにはPythonが便利、という意見を多く見かけます。WEBも興味がありますが、機械学習に強く惹かれるのでPythonに着手しました。
  • AndroidアプリでPythonを実行します

QPython3 - Python3 for Androidを使います。スマホだけでPythonプログラミングとブログ作成が出来るのがメインの理由。

IMG_20190505_131142

  • 情報源
Python入門を参考にさせて頂きました。バージョンは3を前提にします。
  • Pythonの基本
①文、式
改行セミコロンで文が区切られる。セミコロン入れなくてもエラーにならないのはいいですね。
print("abc")
print("def")
x=1; y=2; z=x+y; print(z);
②コメント
#(シャープ)の後はコメント。3連クォート(”””)(’‘’)でコメントをはさむと複数行のコメントを書ける。
# コメント行
""" 複数行の
コメント """
③インデント

同じ数の空白でインデントされた文がブロックとみなされる(超重要)
a = 10;
if a == 10:
    print("aaa") => aaa
    
print("bbb") => bbb
print("xyz") => xyz
ブロックと言われると、ついつい波カッコ(curly bracket:{})でくくりたくなる。【空白は何個が正解?】pythonのインデントについて解説を読むと、PEP8でインデントは空白4個が推奨されてるみたいですが、空白2個とか使う人も多いみたい。

④エンコードルール

文字コード、色々選べます。
# coding: utf-8
# coding: Shift_JIS
# coding: EUC-JP
# coding: cp932
日本語でコメントとか文字列を書きたいならUTF-8指定すれば良し。
# coding: utf-8
print ("ハローワールド" ) => ハローワールド
UTF-8をEmacsっぽく書くとこうなるらしい。
# -*- coding: utf-8 -*-
衝撃の事実!? "# -*- encoding: utf-8 -*-"じゃなくてもいいんです!を読むと_*_がEmacsのエンコーディング指定プラグマと呼ばれるモノということがわかります。

Pythonのcoding: ナントカのことがよく分からないから調べてみたを読むとPEP-263にエンコーディング指定方法が説明されてます。

⓹数値・文字列・型

Python3では整数(int)長整数(long)は廃止された。末尾にl(小文字のエル)L(大文字のエル)を付けるとエラーになる。長整数の桁数制限はなく、メモリが許す限りOK。計算誤差もない。
num = 10; #正の整数
num = 0o777; #8進数
num = 0xFFFF; #16進数
num = 0b01010101; #2進数
num = 12345678901234567890; #長整数

浮動小数点数(float)はこんな感じ。指数表記もできます。
num = 1.234; 
num = 1.2e2; #1.2^10**2
num = 1.2E-6; #1.2^10**-6
虚数(complex)はこんな感じ。j(小文字のジェイ)J(大文字のジェイ)を指定します。個人的には小文字のジェイがカッコいいと思う。
num = 1.23j;
論理値(bool)はこんな感じ。True、Falseという具合に頭文字は大文字。数値の0、空文字(””)、空リスト([])、空タプル(())、空辞書({})はFalse。
num = True;
num = False;
文字列(string)はこんな感じ。”(ダブルクォート)’(シングルクォート)でくくる。
str = '12345';
str = "abcde";
ダブルクォートで囲んだ文字列の中にシングルクォートを入れて良し。シングルクォートで囲んだ文字列の中にダブルクォートを入れて良し。
str = '111"111';
str = "aaa'aaa";
ダブルクォートで囲んだ文字列の中にダブルクォートを入れたいならエスケープ(バックスラッシュ\
を前に付ければ良し。
str = 'zzz\'zzz';
str = "999\"999";
文字列の途中にバックスラッシュ(\)を入れると複数行に分けられる。
str = "abcde\
fghij
文字列の前にr(小文字アール)R(大文字アール)をつけるとエスケープ(バックスラッシュ\)が無視される。
str = r'12345\67890';
str = r"abcde\fghij";
三重クォート(""")(’‘’)で文字列を囲うと途中に改行を入れることが可能。
str = """My name is
pavement1234."""
複数の文字列をスペースで区切ると連結できる。
str = "abc" "def" "efg"
Python3.3以降は普通に””、’’で囲った文字列はUnicode文字列となる、(u)(U)を付けてもUnicode文字列となる。(b)(B)を付けるとバイト列になる。Python2.xは普通の文字列はバイト列、Python3.0~3.2では(u)(U)がエラーになったみたい。Unicode文字列でエスケープシーケンス(\)を無効化したいときは(ur)(UR)をつける。
str = "あいうえお" # Unicode文字列
str = u"あいうえお" # Unicode文字列
str = b"あいうえお" # バイト列
エスケープシーケンスはこんな感じ。
\\:バックスラッシュ
\':シングルクォート
\":ダブルクォート
\a:ベル
\b:バックスペース
\f:改ページ(フォームフィード)
\n:改行
\r:復帰(キャリッジリターン)
\t:タブ
\v:垂直タブ

\N{name}:Unicodeデータベース中で名前を持つ文字(例:u"\N{LATION SMALL LETTER A}"→"a")
\uxxxx:16bitのユニコード文字(例:u"\u3042"→”あ”)
\Uxxxxxxxx:32bitのユニコード文字xxxxxxxx (例:U"\U00003042"→”あ”)

\nnn:8進表記文字(nは0~7)(例:”\061”→”1”)
\xnn:16進表記文字(nは0~f)(例:"\x31"→”1”)
書式付き文字列はこんな感じ。
print("%s" % "abcde"); => abcde
print("%d" % 12345); => 12345
print("%f" % 9.876); => 9.876000
print("%x" % 255); => ff
print("%o" % 255); => 377
print("%d%%" % 100); => 100%

print("[%5s]"   % 'XYZ'); => [  XYZ] 右寄せ5文字
print("[%-5s]"  % 'XYZ'); => [XYZ  ] 左寄せ5文字
print("[%5d]"   % 987);   => [  987] 右寄せ5桁
print("[%-5d]"  % 987);   => [987  ] 左寄せ5桁
print("[%+5d]"  % 987);   => [ +987] 左寄せ5桁(±符号)
print("[%+5d]"  % -987);  => [ -987] 右寄せ5桁(±符号)
print("[%5.2f]" % 9.87);  => [ 9.87] 右寄せ5桁.小数点以下2桁
print("[%05d]"  % 987);   => [00987] 右寄せ5桁(0埋め)
⑥変数・定数

変数はこんな感じ。アンダーバー(_)を含む英数字。1文字目は数字以外。
num_1 = 1;
_num_2 = 2;
value_eight = 8;
VALUE_TEN = 10;
定数はサポートされてない。C言語の#defineマクロみたいに英大文字とアンダーバー(_)で書くのが慣例のよう。
PI = 3.14
MAX_LENGTH = 256;
ドキュメントストリングはこんな感じ。モジュール、クラス、関数の先頭に三重クォート(""")で囲んだコメントは、ドキュメントストリング と呼ばれ、モジュールオブジェクト、クラスオブジェクト、関数オブジェクトの __doc__ アトリビュートで参照できる。
### aaa.py ###

"""[Module]"""
class aaaClass:
    """[Class]"""
    def aaaFunction(self, x, y):
        """[Function]"""
        return x + y

### EOF ###
### test.py ###

import aaa
print(aaa.__doc__);                      
print(aaa.aaaClass.__doc__);             
print(aaa.aaaClass.aaaFunction.__doc__); 

### EOF ###
インタラクティブモード中、help()にモジュール名を指定すると__doc__が参照できる。
>>> import aaa
>>> help(aaa)
Help on module aaa:

NAME
    aaa - [Module]

CLASSES
    builtins.object
        aaaClass
   
    class aaaClass(builtins.object)
     |  [Class]
     | 
     |  Methods defined here:
     | 
     |  aaaFunction(self, x, y)
     |      [Function]
     | 
     |  ----------------------------------------------------------------------
     |  Data descriptors defined here:
     | 
     |  __dict__
     |      dictionary for instance variables (if defined)
     | 
     |  __weakref__
     |      list of weak references to the object (if defined)

FILE
    c:\users\(ログインユーザ名)\appdata\local\programs\python\python37-32\aaa.py
続く



IMG_20190224_194111



スポンサードリンク