【Python】 Python ~ 基本編 / 関数 ~

■ はじめに

関数に関する以下を学ぶ

目次

【1】 関数
【2】 ローカル変数 / グローバル変数
 1)ローカル変数
 2)グローバル変数
【3】 戻り値・複数
【4】 値渡し・参照渡し
 1)値渡し(call by value)
 2)参照渡し(call by reference)

※それ以外の関数についての事項は、以下の関連記事を参照のこと。

https://dk521123.hatenablog.com/entry/2020/11/02/000000

 【1】 関数

構文

def 【関数名】(引数1, 引数2, ..., 引数n):
   ステートメントブロック

例1

def plus(value1, value2):
    return value1 + value2

例2

# coding: UTF-8

def sayHello(name = "World"):
    print("Hello %s!" % name)
def getHello(name = "World"):
    return "Hello %s!" % name
    
sayHello()
sayHello("Tom")

result = getHello("Mike")
print(result)

 出力結果

Hello World!
Hello Tom!
Hello Mike!

【2】ローカル変数 / グローバル変数

1) ローカル変数

def sample_function():
    # ローカル変数
    local_value = 'World!'

2) グローバル変数

global 宣言 (global statement)

global_value = 'Hello'

def sample_function():
    # グローバル関数であること明示する
    global global_value
    global_value = 'World!'

# 詳細は、以下の関連記事を参照

Python ~ 基本編 / global変数 ~
https://dk521123.hatenablog.com/entry/2019/12/12/232749

参考文献

https://qiita.com/msssgur/items/12992fc816e6adf32cff
https://uxmilk.jp/12505

【7】戻り値・複数

Javaなどの他のプログラム言語とは異なり、
複数の戻り値を返すことができる

サンプル

def demo():
  return 'Hello', 'World', 'Mike'

value1, value2, value3 = demo()
print("{} {}, {}!".format(value1, value2, value3))

出力結果

Hello World, Mike!

【8】値渡し・参照渡し

1)値渡し(call by value

def func(n):
  print(n)
  n = n + 1
  print(n)

# 文字列
x = 10
print(x)

print("Before")
func(x)

print("After")
print(x)

出力結果

10
Before
10
11
After
10

2)参照渡し(call by reference)

def func(n):
  print(n)
  n[0] = n[0] + 1
  print(n)

# リスト
x = [10, 20]
print(x)

print("Before")
func(x)

print("After")
print(x)

出力結果

[10, 20]
Before
[10, 20]
[11, 20]
After
[11, 20]

参考文献

動画
http://dotinstall.com/lessons/basic_python_v2/26019
http://dotinstall.com/lessons/basic_python_v2/26020

関連記事

Python ~ 基本編 / 関数・あれこれ ~
https://dk521123.hatenablog.com/entry/2020/11/02/000000
Python ~ 基本編 / 文字列 ~
https://dk521123.hatenablog.com/entry/2019/10/12/075251
Python ~ 基本編 / global変数 ~
https://dk521123.hatenablog.com/entry/2019/12/12/232749
Python ~ 基本編 / yield ~
https://dk521123.hatenablog.com/entry/2021/03/18/000000