python俺的復習『関数』

pythonLOGO

自作関数と関数呼び出し

# 「サンプル」という文字列を表示する関数sample_printを定義する場合

def sample_print():
  print("サンプル")  

sample_print()

# サンプル

関数の戻り値を使う場合

# def 関数():
#    変数1 = 値
#    return 変数1

# 具体例
def number_one():
    return 1
    
value = number_one()
value

# 1
# 変数messageを用いて"HelloPython"という文字列を表示させる場合

# 定義部分
def hello_python():
    message = "HelloPython"
    return message

announce = hello_python()
print(announce)

# HelloPython

関数の引数

# 変数priceで価格の入力値を受け取り、
# それを1.1倍して戻り値として結果を返す処理

def vat(price):
    total_price = price * 1.1 
    return total_price
    
payment = 100
total_payment = vat(payment)
total_payment

# 110.00000000000001

複数の戻り値

# def 関数():
#    # 処理
#    return 値1, 値2

# 関数hello_pythonを定義する
def hello_python(version):
    message = "HelloPython" + version
    message_length = len(message)
    return message, message_length

# 変数python_versionに"3.6.8"という文字列を代入する
python_version = "3.6.8"

# 関数hello_pythonからの2つの戻り値を、変数announceと変数lengthで受け取る
announce, length = hello_python(python_version)

# announceを出力する
print(announce)

# lengthを出力する
print(length)

# HelloPython3.6.8
# 16

複数の引数

# 同様に、関数は複数の値を受け取ることもできます。

# def 関数(引数1, 引数2):
#     # 処理

# 関数sum_aveを定義する
def sum_ave(score1, score2):            # 2つの得点の合計値を変数score_sumに代入する
    score_sum = score1 + score2          # 2つの得点の平均値を変数score_aveに代入する
    score_ave = (score1 + score2) / 2    # 合計値と平均値を返す
    return score_sum, score_ave

# 2つの得点を定義する
score_A = 80
score_B = 90

# 変数score_Aと変数score_Bを引数として与え、関数sum_aveを呼び出す
# 戻り値を変数AB_sumと変数AB_aveにそれぞれ代入する
AB_sum, AB_ave = sum_ave(score_A, score_B)


# 合計値と平均値をそれぞれを出力する
print(AB_sum)
print(AB_ave)

# 170
# 85.0

引数のデフォルト値を設定する場合

# def 関数(引数1=値3, 引数2=値4):
#     # 処理

# 関数sum_aveを定義する
def sum_ave(score1=60, score2=70):       # 二人の点数の合計値を変数score_sumに代入する
    score_sum = score1 + score2          # 二人の点数の平均値を変数score_aveに代入する
    score_ave = (score1 + score2) / 2    # 合計値と平均値を返す
    return score_sum, score_ave

# 二人の点数を定義する
score_A = 80
score_B = 90

# 関数sum_aveを呼び出し、戻り値を変数AB_sumと変数AB_aveにそれぞれ代入する
AB_sum, AB_ave = sum_ave(score_A, score_B)

# デフォルト値を使用して関数sum_aveを呼び出し、戻り値を変数AB_sum_dと変数AB_ave_dにそれぞれ代入する
AB_sum_d, AB_ave_d = sum_ave()

# 合計値と平均値をそれぞれを出力する
print(AB_sum)
print(AB_ave)

# デフォルトの合計値と平均値をそれぞれを出力する
print(AB_sum_d)
print(AB_ave_d)

# 170
# 85.0
# 130
# 65.0

位置引数とキーワード引数

# def 関数(引数1, 引数2):
#    # 処理
#
# 関数(引数2=値1, 引数1=値2)

# 位置引数
# score_compute(80, 95, 75) 

# キーワード引数
# score_compute(math=80, english=75, science=95)

# 関数money_calcを定義する
def money_calc(chi_ticket, ad_fee, chi_fee, ad_ticket):    # 大人のチケット料金を計算する
    adult = ad_fee * ad_ticket    # 子供のチケット料金を計算する
    child = chi_fee * chi_ticket    # 合計金額を返す
    return adult + child

# 大人料金と子供料金を定義する
adult_fee = 1500
child_fee = 750

# 大人と子供のチケット枚数をそれぞれ定義する
adult_ticket = 6
child_ticket = 4

# キーワード引数を使用してmoney_calcを呼び出す
total = money_calc(chi_ticket=child_ticket, ad_fee=adult_fee, chi_fee=child_fee, ad_ticket=adult_ticket)

# 計算結果を出力する
print(total)

# 12000

可変長引数

# 何個の値が渡されたとしても全て受け取ることができるようにする

# def 関数(*引数):
#     # 処理

# def 関数(**引数):
#     # 処理

# 関数定義時の引数に*をつけると、呼び出し側から渡される値をタプルとして取得
def sample_tuple(*args):
    print(args)
    print(type(args))
sample_tuple(20,170)

# (20, 170)
# <class 'tuple'>


# 関数定義時の引数に**をつけると、呼び出し側から渡される値を辞書型として取得
# 上の例と異なり、引数をkey=valueの書式で与えていることに注目
def sample_dict(**kwargs):
    print(kwargs)
    print(type(kwargs))
sample_dict(age=20,height=170)

# {'age': 20, 'height': 170}
# <class 'dict'>


# argsや**kwargsなどにおけるargsやkwargsは、
# 慣習的にこの名前になっているだけであり、*をつければどのような名前でも問題なし。
#  *を使うときは辞書型として値が保存されるため、キーと値が必要になります。
# 関数呼び出し側で関数(name='A')のようにキーワード引数を使用してキー'name'と値'A'を与える必要があります。
# 関数を呼び出す際に、リストやタプルの変数にをつけたり、辞書型の変数にをつけることで、
# これらの変数の値を展開して可変長引数に渡すことができます。

無名関数 lambda(ラムダ)式

# lambda(ラムダ)式という別名もあり、その名の通りlambdaを使用して関数を定義
# lambda 引数: 処理内容

def vat(price):
    total_price = price * 1.1
    return total_price

cost = vat(100)

# 上と同じ
cost = (lambda price: price * 1.1)(100)
cost

# 110.00000000000001
# 関数addを定義する
def add(var1, var2):
    return var1 + var2

# 関数addを呼び出す
sum_def = add(1,2)

# 無名関数を定義し、呼び出す
sum_lambda = (lambda var1, var2: var1 + var2)(1,2)

print(sum_def)
print(sum_lambda)

# 3
# 3



 

あ、宜しければ・・・。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です