自分で作った関数を定義して使うこともできます

基本構文は

def 関数名(引数): 
処理

引数に使う変数は無くても問題なし
関数名には英大小文字とアンダースコアが使えます

それでは作ってみましょう
引数指定した数値までの
フィボナッチ数を出力する関数を作ります
def fib(n): 
    a, b = 0, 1
    while a < n:
        print(a, end=' ')
        a, b = b, a+b
    print()
これを実行するには関数名(引数)とします
fib(100)
0 1 1 2 3 5 8 13 21 34 55 89 

引数を変えることで結果を変えることができます
ただしこれでは必ずprintされてしまうので
使い勝手が悪いです

結果を変数にするためには return を使って
戻り値を返すようにします
def fib_b(n): 
    a, b = 0, 1
    result = []
    while a < n:
        result.append(a)
        a, b = b, a+b
    return result

print(fib_b(20))
[0, 1, 1, 2, 3, 5, 8, 13]


これで関数の結果がリストになって返ってきます
通常は処理をまとめるために使うものなので
戻り値を返すようにするのが良いでしょう

ラムダ式

pythonのコードの中で
関数名をつけずに変数として関数を記述できます
書き方は

変数名 = lambda 変数名 : 返り値

少しややこしいですが
これで処理を簡潔に書くこともできます
f = lambda a, b : a + b
print(f(3,5))
8

こうした場合、変数名として一度定義しているので
同じ処理として繰り返し使うことができます