defステートメントを用いて定義します。
sample.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
def rec(x):
return 1 if x==0 else x*rec(x-1)
for (i,x) in enumerate(range(7)):
print "%d!=%d" % (i,rec(x))
出力例
$ python sample.py
0!=1
1!=1
2!=2
3!=6
4!=24
5!=120
6!=720
sample.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
def func(x='default'):
print x
func(123)
func()
出力例
$ python sample.py
123
default
sample.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
def printTuple(*arg): # タプル化
print arg
def printDict(**arg): # ディクショナリ化
print arg
printTuple(1,2,3,4)
printDict(a=1, b=2, c=3)
実行例
$ python sample.py
(1, 2, 3, 4)
{'a': 1, 'c': 3, 'b': 2}
sample.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
def func(a,b,c):
print a,b,c
T = tuple("str")
D = dict(zip(['a','b','c'],[1,2,3]))
func(*T)
func(**D)
出力例
$ python sample.py
s t r
1 2 3
sample.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
if False:
def func(x): return x*2
else:
def func(x): return x+2
print func(10)
出力例
$ python sample.py
12
sample.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
def func(x,y): return x+y
ref = func
print ref(7,8)
出力例
$ python sample.py
15
sample.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
x = 128
def func():
global x
x = 256
func()
print x
出力例
$ python sample.py
256
sample.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
def getFact(base):
def fact(x):
return base**x
return fact
ref = getFact(1)
print ref(10)
ref = getFact(2)
print ref(10)
出力例
$ python sample.py
1
1024
いわゆるラムダ式です。Perlでは無名関数と呼ばれていたものです。
なお、ラムダ式内には一つのステートメントしか記述できません。
sample.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
def getFact(base):
return (lambda x: base**x)
ref = getFact(1)
print ref(10)
ref = getFact(2)
print ref(10)
出力例
$ python sample.py
1
1024