python関数-15関数の役割ドメイン
32472 ワード
関数の役割ドメイン
役割ドメインの定義:変数が使用できる範囲です.
1.グローバル変数
2.ローカル変数----->関数に定義
3.関数を変数とする
4.関数を関数のパラメータとする
5.関数を戻り値とする
6.匿名関数
(1)匿名関数の定義:関数のパラメータと関数の戻り値として用いる.
注意:匿名関数は関数の宣言だけで関数の実現はありません.
(2)匿名関数のフォーマット
LambdaパラメータリストLambdaパラメータリスト:戻り値式
(3)匿名関数の使用
a.匿名関数を関数のパラメータとする
b.匿名関数を戻り値とする
役割ドメインの定義:変数が使用できる範囲です.
1.グローバル変数
# :
a = 100 # :
print(a) #>>>100
# :
if True:
b = 200 # , if ,
print(b) #>>>200
# :
# :
flag = True
while flag:
c = 300 #
flag = False
print(c) #>>>300
# :
2.ローカル変数----->関数に定義
# :
def foo():
print('hello')
d = 400 #
foo()
# print(fa) #>>> fa
# :a. .
# b.
# :
e = 500
def foo_1():
print('hello')
e = 600
print(e) #>>>600
foo_1()
print(e) #>>>500
# : ,
# :
# , global
def foo_2():
global f
f = 700 #f
print(f) #>>>700
foo_2()
print(f) #>>>700
# :
# f global , .
def foo_3():
print(f)
foo_3() #>>>700
3.関数を変数とする
# :
#
def foo_4():
print('hello hanbo')
#
foo_4()
# .
g = foo_4
g()
# :
def foo_5(name):
return 'Hi'+ name
h = foo_5
# ,
print(h('hanbo'))
4.関数を関数のパラメータとする
# : ,
def cacul(num1, num2, fn):
return fn(num1, num2)
def sum(*numbers):
sum = 0
for x in numbers:
sum += x
return sum
def mul(*numbers):
sum = 1
for x in numbers:
sum *= x
return sum
print(cacul(10, 20, mul))
# : ,
5.関数を戻り値とする
# : , +, , -, .
def operation(char):
def diff(*nums): # ,
sum = nums[0]
for x in range(1, len(nums)):
sum -= nums[x]
return sum
def sum1(*nums): # ,
sum = nums[0]
for x in range(1, len(nums)):
sum += nums[x]
return sum
if char == '-':
return diff
if char == '+':
return sum1
print(operation('-')(10, 5, 2)) #>>>3
print(operation('+')(10, 5, 2)) #>>>17
# diff(10, 5, 2) >>>
6.匿名関数
(1)匿名関数の定義:関数のパラメータと関数の戻り値として用いる.
注意:匿名関数は関数の宣言だけで関数の実現はありません.
(2)匿名関数のフォーマット
LambdaパラメータリストLambdaパラメータリスト:戻り値式
# :
fn = lambda x, y:x + y
print(fn(10, 20))
# 1:
fx = lambda x:x ** 2
print(fx(6))
# 2: .
foo = lambda list1,index:list1[index]
print(foo([2, 3, 4, 5],1))
(3)匿名関数の使用
a.匿名関数を関数のパラメータとする
def cacul(num1, num2, fn):
return fn (num1, num2)
result = cacul(10, 20, lambda x, y:x+y)
print(result)
b.匿名関数を戻り値とする
def operation(char):
if char == '+':
return lambda x, y:x+y
if char == '-':
return lambda x, y:x-y
if char == '*':
return lambda x, y:x*y
if char == '/':
return lambda x, y:x/y
result = operation('+')(9, 3)
print(result)