LoginSignup
1
1

More than 1 year has passed since last update.

Python で コード を 見やすく

Posted at

プログラムを書くときは見栄えはとても大切です。
きちんと整理しないと自分でも何のプログラムかわからなくなってしまうことがあります。
そこで、コードの見栄えをよくする方法を教えます。

スペースは一つではなく四つで

Before
for x in l:
 print(x) # 1スペース
 if x == 1:
  print("1!!") # 2スペース
 print("")

Pythonではforifなどを書くときfor x in l:のあとに改行してスペースを入れます。
その時、1スペースではなく、4っつスペースを入力します。

after
for x in l:
    print(x) # 4スペース
    if x == 1:
        print("1!!") # 8スペース
    print("")

こうする事でどこからループに入っているかなどがはっきりわかります。
2スペースは4倍して8スペースです。
わざわざ4回スペースキーを押すのがめんどくさいときはタブキーを使うといいです。

整列

Before
a={8:4,2:7,4:1,9:3,42.53:21,61:54.22}

パっと何が何に対応しているかわかりません。
こういう時は,のあとに改行します。

after
a={ 8    :  4,
    2    :  7,
    4    :  1,
    9    :  3,
   42.53 : 21,
   61    : 54.22}

少数点、:をそろえるのもおすすめです。

こういう場合もあります。

Before
def all_add(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18,
 x19):
    return x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9 + x10 + x11 + x12 + x13 + x14 + x15 + 
x16 + x17 + x18 + x19

エディターによりますがこのように勝手に改行されてしまいます。
Pythonは" , "の直ぐ後は改行することが許されます。
しかし、計算式の途中で改行することは許されません。
そのような時は" \ "をつかいます。
" \ "は次の改行を削除してくれます。
つまり

1+2+3\
+4+5+6

1+2+3+4+5+6

になります。
ついでに縦と揃えます

after
def all_add(x1 , x2 , x3 , x4 , x5 , x6 , x7 , x8 , x9 , x10,
            x11, x12, x13, x14, x15, x16, x17, x18, x19):
    return x1  + x2  + x3  + x4  + x5  + x6  + x7  + x8  + x9  + x10 \
         + x11 + x12 + x13 + x14 + x15 + x16 + x17 + x18 + x19

逆に次のようなこともできます。

def return_one():return 1
# 1

if True:print(True)
# True

print(1);print(2)
# 1
# 2

C言語などを使った人はやったことあるかもしれませんが
;も改行を意味します。
:の後の改行も省くことができます。
しかし次はできません。

if True:print(1)
    print(True)
#   File "<stdin>", line 2
#     print(True)
# IndentationError: unexpected indent

もしやるなら

if True:print(1);print(True)

と記述します。

型ヒントを使う

型ヒントというのは「この型を使ってほしい」、「この型が出力される」というコメントのようなものです。
以下のように記述します。

def float_add_int(a: float, b: int) -> float | int:
    return a + b

変数に使うときは:で、関数に使うときは->を使います。
|を使うことで「両方とも使っていいよ」と表します。

a: int|float|list # aという変数はint型又はfloat型又はlist型

x = x + yなどはx += y

Before
y = 0
for x in range(10)
    y = y + x

初心者がよくやることです(最初は私もやっていました)。

演算子 省略後
+ +=
- -=
* *=
/ /=
// //=
% %=
** **=
and &=
or
^ ^=
<< <<=
>> >>=

応用

下にとても見えにくいプログラムを用意しました。

Before
import hmath
__Gamma_list=[676.5203681218851,-1259.1392167224028,771.32342877765313,-176.61502916214059,12.507343278686905,-0.13857109526572012,9.9843695780195716e-6,1.5056327351493116e-7,]
def Gamma(x):
    if hmath.real_part(x)<0.5:
     ans=hmath.pi()/(hmath.sin(hmath.pi()*x)*Gamma(1-x))
    else:
     y=0.99999999999980993
     for i in range(len(__Gamma_list)):
      y=y+__Gamma_list[i]/(x+i)
     t=x+len(__Gamma_list)-1.5
     ans=hmath.sqrt(hmath.tau())*t**(x - 0.5)*hmath.exp(-t)*y
    return ans

整理します。

after
import hmath
__Gamma_list : list = [
      676.5203681218851      ,
    -1259.1392167224028      ,
      771.32342877765313     ,
     -176.61502916214059     ,
       12.507343278686905    ,
       -0.13857109526572012  ,
        9.9843695780195716e-6,
        1.5056327351493116e-7,
]
def Gamma(x : int | float | complex) -> int | float | complex:
    if hmath.real_part(x) < 0.5:
        ans = hmath.pi() / (hmath.sin(hmath.pi() * x) * Gamma(1 - x))
    else:
        y = 0.99999999999980993
        for (i, Gamma_v) in enumerate(__Gamma_list):
            y += Gamma_v / (x + i)
        t = x + len(__Gamma_list) - 1.5
        ans = hmath.sqrt(hmath.tau()) * t ** (x - 0.5) * hmath.exp(-t) * y
    return ans

終了。
ぜひ今回のことを活用してください

1
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1