関数の中の関数
Pythonは非常に柔軟な言語であり、コード内のほぼどこにでも関数を作成することができます。
if
ブロックやfor
ループ、また他の関数の中で新しい関数を定義することもできます:def process(name1, name2, name3):
def greet(name):
if len(name) < 5:
print(f'Hi, {name}')
else:
print('The name is too long')
greet(name1)
greet(name2)
greet(name3)
process('Anna', 'Bob', 'Daniel')
# Hi, Anna
# Hi, Bob
# The name is too long
ここでは、新しい関数
greet()
を定義して、process()
関数内で3つの名前すべてに対して同じif文とelse文を繰り返さないようにしています。内側の関数は、それより上で定義されたすべての変数にアクセスできることに注意してください。つまり、この例では、関数
greet()
はname1
、name2
、name3
にアクセスできます。 チャレンジ
関数を修正して、渡された数のすべての約数のリストを返すようにしてください。1つの数の約数のリストを返す内側の関数を追加しましょう。
def divisors(*numbers):
...
print(divisors(4, 5)) # [1, 2, 4, 1, 5]
print(divisors(3)) # [1, 3]
print(divisors(6, 8)) # [1, 2, 3, 6, 1, 2, 4, 8]
Constraints
Time limit: 2 seconds
Memory limit: 512 MB
Output limit: 1 MB