Skip to Content
Python Distilled ―プログラミング言語Pythonのエッセンス
book

Python Distilled ―プログラミング言語Pythonのエッセンス

by David M. Beazley, 鈴木 駿
October 2023
Intermediate to advanced
336 pages
4h 31m
Japanese
O'Reilly Japan, Inc.
Content preview from Python Distilled ―プログラミング言語Pythonのエッセンス

5章関数

関数はPythonプログラムにおける基本的な構成要素です。この章では、関数定義、関数の適用、スコープ、クロージャ、デコレータ、関数型プログラミングについて説明します。特に、関数に関するさまざまなイディオム、評価モデル、パターンに着目します。

5.1 関数定義

関数はdef文で定義します。

def add(x, y):
    return x + y

関数定義はまず関数名と仮引数(parameter)を指定します。関数本体は関数が呼び出された際に実行される一連の文です。関数に実引数(argument)を適用するにはa = add(3, 4)のように関数名の後に括弧で囲んだ実引数を記述します。実引数は、関数本体が実行される前に左から右へ完全に評価されます。例えば、add(1 + 1, 2 + 2)はまずadd(2, 4)と評価されてから実引数が関数へ適用されます。これは作用的順序(applicative evaluation order)と呼ばれています。実引数の順序と個数は、関数定義で指定された仮引数の順序と個数に一致しなければなりません。不一致ならばTypeError例外が発生します。関数を呼び出す構造(必要な実引数の数など)は、関数シグネチャとも呼ばれます。

5.2 デフォルト引数

関数定義で仮引数に値を指定するとデフォルト値を設定できます。デフォルト値を指定した仮引数はデフォルト引数と呼ばれます。

def split(line, delimiter=","):
    ...

デフォルト引数を定義した場合、デフォルト引数とそれ以降の仮引数は省略可能です。デフォルト引数の後に、デフォルト値を持たない仮引数は定義できません。

デフォルト引数の値は関数が呼び出されるたびに評価されるのではなく、関数が最初に定義された際に一度だけ評価されます。このため、ミュータブルオブジェクトがデフォルト値として定義されている場合、思わぬ動きをします。 ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

Effective Python 第3版 ―Pythonプログラムを改良する125項目

Effective Python 第3版 ―Pythonプログラムを改良する125項目

Brett Slatkin, 鈴木 駿
入門 Python 3 第2版

入門 Python 3 第2版

Bill Lubanovic, 鈴木 駿, 長尾 高弘
Python Distilled

Python Distilled

David M. Beazley
Binary Hacks Rebooted ―低レイヤの世界を探検するテクニック89選

Binary Hacks Rebooted ―低レイヤの世界を探検するテクニック89選

河田 旺, 小池 悠生, 渡邉 慶一, 佐伯 学哉, 荒田 実樹, 鈴木 創, 中村 孝史, 竹腰 開, 光成 滋生, hikalium, 浜地 慎一郎

Publisher Resources

ISBN: 9784814400461Publisher Website