Pythonで関数を作成する方法をいくつか試してみます。
サンプルコード
関数の定義は「def 関数名(引数)」 の形で指定します。
# 関数の定義
def greet(name):
    print('こんにちは、' + name)
# 関数の呼び出し
greet('はるか') # こんにちは、はるか
greet(name = 'かなた') # こんにちは、かなた
関数実行時の引数は、値のみでも引数名=値の形で指定することもできます。
引数には初期値を設定することもできます。
# 関数の定義
def greet(name, serif = 'こんにちは'):
    print(serif + '、' + name)
# 関数の呼び出し
greet('はるか') # こんにちは、はるか
greet('かなた', 'こんばんは') # こんばんは、かなた
greet('クレア', serif = 'おはよう') # おはよう、クレア
可変長引数を受け取る場合は引数名の頭に*を付けます。
# 関数の定義
def greet(*names, serif = 'こんにちは'):
    for name in names:
        print(serif + '、' + name)
# 関数の呼び出し
greet('はるか', 'かなた', 'クレア', 'エミリ', serif = 'おはよう')
実行結果
おはよう、はるか おはよう、かなた おはよう、クレア おはよう、エミリ
defを使用せず、ラムダ式で無名関数を定義することもできます。
前述の2番目のサンプルを少し修正して、関数内で出力するのではなくreturnで返すようにしてみます。
# 関数の定義
def greet(name, serif = 'こんにちは'):
    return serif + '、' + name
# 関数の呼び出し
print(greet('はるか', serif = 'こんばんは')) # こんばんは、はるか
これをラムダ式で書き換えると、以下のようになります。
# ラムダ式
greet = lambda name, serif = 'こんにちは': serif + '、' + name
print(greet('はるか', serif = 'こんばんは')) # こんばんは、はるか
「def 関数名(引数): 処理」が「lambda 引数: 処理」という形になります。
上記のサンプルだとあまりメリットがありませんが、例えば以下のような場合などには便利です。
def sort_height(member):
    return member['height']
members = [{
    'name': 'はるか',
    'height': 172
}, {
    'name': 'かなた',
    'height': 151
}, {
    'name': 'クレア',
    'height': 171
}, {
    'name': 'エミリ',
    'height': 168
}]
members.sort(key=sort_height)
print(members)
sort()で使用する関数sort_heightを定義して、sort()の引数に指定しています。
これをラムダ式を使って書き換えると、以下のようにできます。
members = [{
    'name': 'はるか',
    'height': 172
}, {
    'name': 'かなた',
    'height': 151
}, {
    'name': 'クレア',
    'height': 171
}, {
    'name': 'エミリ',
    'height': 168
}]
members.sort(key=lambda member: member['height'])
print(members) # [{'name': 'かなた', 'height': 151}, {'name': 'エミリ', 'height': 168}, {'name': 'クレア', 'height': 171}, {'name': 'はるか', 'height': 172}]
sort()の引数にラムダ式を直接記述しています。
 
【参考サイト】

コメントが承認されるまで時間がかかります。