百鬼夜行

素性を知られぬままエンジニアになることを目指します

Udacity: Introduction to Computer Science Lesson 5 の途中までやった(関数編)

関数や制御などに突入

関数について

  • 全部のリンクを見つけるWebクローラを見つけるためのコードを書く
  • その際に必要なのが関数と制御
    • 関数: Procedures
    • 制御: Control
  • 配列の:は最初からと最後まで
  • なぜコードをまとめるのか?
    • 関数を抽象化する
    • 何度も繰り返すことを避けられる
  • 関数は入力を使って行うもの
  • 結果として出力を作り出すものは複数あることもある
  • 組み込み演算子も関数のように動くが、構文が違う
    • ただし抽象的に作用するものとしては同じ概念になる

Pythonが提供する関数の構造体について

def <name>(<parameters input>):
    <block>

構造体について詳しく

  • Inputsはコンマで区切られた名前のリスト
  • 入力がない場合は何もないかっこになる
  • Blockは関数の主要部分となる実行したいコードの一連の文
  • 通常4つのインデントする
  • インタプリタはインデントじゃないところを把握する

関数を作る際のポイント

  • 結果で行いたいこと(Print)は関数の中に入れない
  • 出力したい値は、returnを使って値を戻してあげる
Return <expression>, ...
  • 出力を何も返さなければ、returnの後に何も書かない
  • 副作用 = 出力ではなく関数内の実行結果をprintで見ることができる

関数の使い方

<procedure> (<input>, <input>,,...)
  • 左から関数名、入力リスト
    • 入力リストは関数が要求する入力数と同じにしないといけない
    • operands, argument という引数
    • これまでにも同じようなものと触れてきた
ex. find('au', 3)

しかしfindには別の入力がある

page.find('au', 3)
  • .の前にある「Page」は関数を呼び出すこととよく似ているが後でやる
  • 自身で定義した関数では関数を呼び出すための手前のオブジェクトはいらない
print rest_of_string('audacity')

こうすると表示される。

中身の話

  • 関数を呼び出すと関数の主要部分を直接実行できる
  • インタプリタが何を行なっているのかを判断できる
  • 関数を呼び出すと関数内でコードを直接実行する
  • パラメータに入力として渡した値を代入する
  • returnは「ジャンプ」する
    • 関数を呼び出した場所へ一気に戻る
    • ジャンプした際に評価したも値が返した値になる
  • 入力を出力と関連づけよう
  • 値がないことを示すために特別な値Noneが使われる
  • 関数の合成 = procedure(procedure())