python 3関数のステップアップ補足
26991 ワード
Python 3関数のステップアップ補足は、「Python 3入門から実戦まで」という本を参考にしています変形可能パラメータ: ディクショナリパラメータ: 解除パラメータリスト: 関数は容器内に置くことができます: 関数は、戻り値として使用できます: 関数はネストして使用できます: ネスト関数ケース2: 関数は、他の関数のパラメータとして使用できます: lambda式: 内蔵map関数 mapケース2 filter
変形可能パラメータ:
変形可能パラメータは、次のいずれかです.
ディクショナリパラメータ:
ディクショナリパラメータは、関数に渡されるパラメータがディクショナリタイプ(キー値ペア)であることを示します.
注意:関数定義に変形可能パラメータと辞書パラメータがある場合は、辞書パラメータは変形可能パラメータの後ろにある必要があります.
パラメータのリストを非表示にするには、次の手順に従います.
2つの「*」で辞書を解封し、1つの「*」で他のオブジェクトを解封します.
関数はコンテナ内に配置できます.
関数をコンテナ内に配置するには、次の手順に従います.
関数は戻り値として使用できます.
ある関数に別の関数の名前を返します.
関数はネストして使用できます.
1つの関数で別の関数を定義して呼び出します.
ネストされた関数のケース2:
両者の異同を比較するとnonlocalはグローバル変数を宣言することに相当することに注意してください.
関数は、他の関数のパラメータとして使用できます.
Lambda式:
関数を定義することに相当します
内蔵map関数
*mapの2番目のパラメータは、複数の反復可能オブジェクトを受け入れます.関数のプロトタイプ:map(function,iterable)、iterableは変形可能パラメータ、functionは関数で、反復器オブジェクトを返します.
mapケース2
filter
filterはTrueと判断された要素を返し、関数の原型はfilter(function of None,interable)である.
変形可能パラメータ:
変形可能パラメータは、次のいずれかです.
// An highlighted block
def hello(*name):
print(name)
hello("10")
hello(" ")
:
('10',)
(' ',)
ディクショナリパラメータ:
ディクショナリパラメータは、関数に渡されるパラメータがディクショナリタイプ(キー値ペア)であることを示します.
// An highlighted block
def hello(**name):
print(name)
hello(year='2020',month=10,day=10)
:
{
'year': '2020', 'month': 10, 'day': 10}
注意:関数定義に変形可能パラメータと辞書パラメータがある場合は、辞書パラメータは変形可能パラメータの後ろにある必要があります.
パラメータのリストを非表示にするには、次の手順に従います.
2つの「*」で辞書を解封し、1つの「*」で他のオブジェクトを解封します.
// An highlighted block
def f(a,b):
print(a+b)
ab = [3,5]
f(*ab)
:
8
ab = [3,7]
l = [i for i in range(*ab)]
print(l)
:
[3, 4, 5, 6]
d = {
"name1":" ","name2":" "}
def f(name1,name2):
print(name1)
print(name2)
f(**d)
:
def f():
'''
'''
print(" ")
return 1
print(help(f))
:
f()
None
関数はコンテナ内に配置できます.
関数をコンテナ内に配置するには、次の手順に従います.
// An highlighted block
def square(x):
return x*x
def cube(x):
return x*x*x
funcs = {
'sq':square,
'cb':cube,
}
x = 2
print(square(x))
print(cube(x))
print("----- -----")
for func in funcs:
print(funcs[func](x))
:
4
8
----- -----
4
8
// An highlighted block
def square(x):
return x*x
def cube(x):
return x*x*x
funcs = {
'sq':square,
'cb':cube,
}
x = 2
func = [square,cube]
for fun in func:
print(fun(x))
:
4
8
関数は戻り値として使用できます.
ある関数に別の関数の名前を返します.
// An highlighted block
def f(a):
print(a)
def f1():
return f
a = f1()
a(0)
:
0
関数はネストして使用できます.
1つの関数で別の関数を定義して呼び出します.
// An highlighted block
def Square(x):
def f():
return x*x
y = f()
return y*x
print(Square(5))
:
125
ネストされた関数のケース2:
両者の異同を比較するとnonlocalはグローバル変数を宣言することに相当することに注意してください.
// An highlighted block
def Square(x):
def f():
#nonlocal x
x = 2
return x*x
y = f()
return y+x
print(Square(5))
9
def Square(x):
def f():
nonlocal x
x = 2
return x*x
y = f()
return y+x
print(Square(5))
6
関数は、他の関数のパラメータとして使用できます.
// An highlighted block
def square(x):
return(x*x)
def SquList(L,fun):
for e in L:
print(fun(e),end=" ")
SquList([2,3,4,5],square)
4 9 16 25
Lambda式:
関数を定義することに相当します
// An highlighted block
add = lambda x,y:x+y//add
print(add(3,5))
8
内蔵map関数
*mapの2番目のパラメータは、複数の反復可能オブジェクトを受け入れます.関数のプロトタイプ:map(function,iterable)、iterableは変形可能パラメータ、functionは関数で、反復器オブジェクトを返します.
// An highlighted block
def Square(x):
return x*x
l = [1,2,3,4,5]
ret = map(Square,l)// l Square
print(list(ret))
# ,
print(tuple(ret))
:
[1, 4, 9, 16, 25]
()
mapケース2
// An highlighted block
ret = map(lambda x,y:x*y,[1,4,3],[3,5,2,6])
print(tuple(ret))
ret = map(lambda x,y:(x*y,x+y),[1,4,3],[3,5,2,6])
print(tuple(ret))
:
(3, 20, 6)
((3, 4), (20, 9), (6, 5))
filter
filterはTrueと判断された要素を返し、関数の原型はfilter(function of None,interable)である.
// An highlighted block
a = [i for i in range(-5,5)]
ret = filter(lambda x:x<0,a)
print(list(ret))
:
[-5, -4, -3, -2, -1]