14
14

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 3 years have passed since last update.

Pythonの独特な書き方まとめ

Last updated at Posted at 2019-09-02

はじめに

Python基礎を理解した人が、ここに記載のPython独特な書き方を把握すれば大体のプログラムを読めるようにすることを目的として、Pythonの独特な書き方をまとめました。
なお記載している内容は私の主観で、以下の条件を満たすものだけとしています。

  • 初学者向けの教材に記載がない
  • Pythonプログラムの中でよく使われることがある独特な書き方

とりあえず思いついたもののみ記載しておりますので、随時更新していきます。

対象読者

Pythonの基礎を理解している人を対象としております。
そのため細かな説明は一切記載しておりません。

記載内容の説明

以下のように、「通常の書き方」→「Pyhotn独特の書き方」の順番で記載しています。
初学者向けの教材に記載している内容で記載できる方法を、「通常の書き方」と表現しています。

通常の書き方
プログラム

# 実行結果 -> XXX
Python独特の書き方
プログラム

# 実行結果 -> XXX

内包表記

リスト内包表記(その1)

通常の書き方
numbers = []
for i in range(5):
    numbers.append(i)
    
print(numbers)

# 実行結果 -> [0, 1, 2, 3, 4]
Python独特の書き方
numbers = [i for i in range(5)]
print(numbers)

# 実行結果 -> [0, 1, 2, 3, 4]

リスト内包表記(その2)

通常の書き方
numbers = []
for i in range(5):
    numbers.append("Hello")
    
print(numbers)

# 実行結果 -> ['Hello', 'Hello', 'Hello', 'Hello', 'Hello']
Python独特の書き方
numbers = ['Hello' for i in range(5)]
print(numbers)

# 実行結果 -> ['Hello', 'Hello', 'Hello', 'Hello', 'Hello']

リスト内包表記(その3)

通常の書き方
numbers = []
for i in range(5):
    if i % 2 == 0:
        numbers.append(i)
    
print(numbers)

# 実行結果 -> [0, 2, 4]
Python独特の書き方
numbers = [i for i in range(5) if i % 2 ==0]
print(numbers)

# 実行結果 -> [0, 2, 4]

ディクショナリ内包表記

通常の書き方
square = {}
for i in range(5):
    square[i] = i * i
    
print(square)

# 実行結果 -> {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
Python独特の書き方
square = {i : i * i for i in range(5)}
print(square)

# 実行結果 -> {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

関数の引数

アスタリスクが1つの引数

通常の書き方
def test(args1, args2, args3):
    print(args1)
    print(args2)
    print(args3)
    
test('1st', '2nd', '3rd')

# 実行結果 -> 
1st
2nd
3rd
Python独特の書き方
# *をつけると可変長引数となる
# *argsで引数を全て受け取る(アスタリスクから始まれば、名前は*args以外でも良い)
def test(*args):
    for arg in args:
        print(arg)
    
test('1st', '2nd', '3rd')

# 実行結果 -> 
1st
2nd
3rd
Python独特の書き方
# *argsで引数の残りを全て受け取る
def test(args1, *args):
    for arg in args:
        print(arg)
    
test('1st', '2nd', '3rd')

# 実行結果 ->
2nd
3rd

アスタリスクが2つの引数

通常の書き方
def test(k1, k2, k3):
    print(k1)
    print(k2)
    print(k3)
    
test(k1='Key1', k2='Key2', k3='Key3')

# 実行結果 -> 
Key1
Key2
Key3
Python独特の書き方
# **をつけると可変長引数となる
# **kwargsでキーワード付き引数を辞書型で全て受け取る(アスタリスクから始まれば、名前は**kwargs以外でも良い)
def test(**kwargs):
    for key in kwargs.values():
        print(key)

test(k1='Key1', k2='Key2', k3='Key3')

# 実行結果 -> 
Key1
Key2
Key3
Python独特の書き方
# **kwargsでキーワード付き引数の残りを全て受け取る
def test(k1, **kwargs):
    for key in kwargs.values():
        print(key)

test(k1='Key1', k2='Key2', k3='Key3')

# 実行結果 -> 
Key2
Key3

アスタリスクが1つの引数と2つの引数の混在

通常の書き方
def test(args1, args2, args3, k1, k2, k3):
    print(args1)
    print(args2)
    print(args3)
    print(k1)
    print(k2)
    print(k3)

test('1st', '2nd', '3rd', k1='Key1', k2='Key2', k3='Key3')

# 実行結果 -> 
1st
2nd
3rd
Key1
Key2
Key3
Python独特の書き方
def test(*args, **kwargs):
    for arg in args:
        print(arg)
    for key in kwargs.values():
        print(key)

test('1st', '2nd', '3rd', k1='Key1', k2='Key2', k3='Key3')

# 実行結果 -> 
1st
2nd
3rd
Key1
Key2
Key3
Python独特の書き方
def test(args1, *args, k1, **kwargs):
    for arg in args:
        print(arg)
    for key in kwargs.values():
        print(key)

test('1st', '2nd', '3rd', k1='Key1', k2='Key2', k3='Key3')

# 実行結果 -> 
2nd
3rd
Key2
Key3

lambda(ラムダ式、無名関数)

通常の書き方
def goukei(a, b):
    print(a + b)
    
goukei(5, 10)

# 実行結果 -> 15
Python独特の書き方
# 書き方は「lambda 引数 : 処理内容」
goukei = lambda a, b : print(a + b)
goukei(5, 10)

# 実行結果 -> 15

プロパティ(getter、setter)

通常の書き方
class Test:
    def __init__(self):
        self.name = "yamada"

    def getName(self):
        return self.name
 
    def setName(self, name):
        self.name = name
 
    def delName(self):
        del self.name


obj = Test()
print(obj.getName())

obj.setName('tanaka')
print(obj.getName())

obj.delName()

# 実行結果 -> 
yamada
tanaka
通常の書き方
class Test:
    def __init__(self):
        self.name = "yamada"

    def getName(self):
        return self.name
 
    def setName(self, name):
        self.name = name
 
    def delName(self):
        del self.name
        
    name = property(getName, setName, delName)    # 追記


obj = Test()
print(obj.name)

obj.x = 'tanaka'
print(obj.name)

obj.delName()

# 実行結果 -> 
yamada
tanaka
Python独特の書き方
class Test:
    def __init__(self):
        self._name = "yamada"
 
    @property
    def name(self):
        return self._name
 
    @name.setter
    def name(self, name):
        self._name = name

    @name.deleter
    def name(self):
        del self._name
         
 
obj = Test()
print(obj.name)

obj.name = 'tanaka'
print(obj.name)

del obj.name

# 実行結果 -> 
yamada
tanaka

計算

通常の書き方
n = 1
if n < 0:
    print(5 + 5)
else:
    print(5 - 5)

# 実行結果 -> 0
Python独特の書き方
n = 1
5 + (5, -5)[n < 0]

# 実行結果 -> 10
Python独特の書き方
n = -1
5 + (5, -5)[n < 0]

# 実行結果 -> 0
14
14
4

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
14
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?