1
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

pythonic styleに関するまとめ(2):その他かき集め

Posted at

#概要

pythonコード規約について調べてみました。
前編は単にPEP8について自分なりにまとめましただけで。
こちらは他のソースみた内容をまとめてみました。
自分はなるほどと思った内容をチョイスしてます。

#見たページ
The Hitchhiker's Guide to Python
Be Pythonic
Code Like a Pythonista: Idiomatic Python

#全般

わかり易さを重視しよう

できるだけ黒魔術を避け、わかりやすいコードにしよう
BAD

def make_complex(*args):
    x, y = args
    return dict(**locals())

GOOD

def make_complex(x, y):
    return {'x': x, 'y': y}

関数変数のタイプと注意点

  • できるだけ可変長変数*args, **kwargsを避けましょう
    • 基本的にわかりづらい
  • 「念のため」の前提での変数を用意しない
    • 意外と消しづらい、必要な時に追加した方がまし

We are all responsible users

pythonにprivateキーワードがないらしい。文化としては、各々が責任を持ってコーティングしようという感じらしい。キーワードがないが、規約はある。いわゆるpublicにしたくないメソッドは_をprefixにすべき

Withでファイルを開け

何があってもファイルが閉じられることが保証できる

# Bad
f = open('file.txt')
a = f.read()
print a
f.close()

# Good
with open('file.txt') as f:
    for line in f:
        print line

Tips

  • enumerate, zipやunpackingを積極的に使おう
# Enumerate
for index, value in enumerate(pi_nums):
    print(index, value)
# 1 3
# 2 1
# 3 4
# 4 1
# 5 5

# Zip
for p, f in zip(pi_nums, fibonacci_nums):
    print(p, f)
# 3 1
# 1 1
# 4 2
# 1 3
# 5 5

#Unpacking after python3
a, *rest = [1, 2, 3]
# a = 1, rest = [2, 3]
a, *middle, c = [1, 2, 3, 4]
# a = 1, middle = [2, 3], c = 4

  • 不要な変数に_を使おう。例えばTastyを10回printしたい場合
for _ in range(10):
    print('Tasty')
  • 同じobjectのリストを作るには * を使う。2d-listを作るにはlist-comprehensionを利用すべき
a = [1] * 4
# a = [1, 1, 1, 1]

# WRONG
b = [[1] * 3] * 3
# b = [[1, 1, 1], [1, 1, 1], [1, 1, 1]]
# Because when
b[0][0] = 2
# b = [[2, 1, 1], [2, 1, 1], [2, 1, 1]]

# RIGHT
b = [[1] * 3 for _ in range(3)]

1
6
0

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
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?