Pythonの学習の過程とか

学習の記録をつけておきましょう。Python3に少しずつ移行していきます。過去の記事のソースを2から3に、、、と考えましたが、新しいことをやったほうがいいですね。

Pythonの基礎 関数編

今回は関数。

基礎編ではありますが、関数を使えるようになると、お!って感じになりますよね。

それでは勉強しましょう。

基本的な使い方

#coding:utf-8

def hello():
  print "hello!"

hello()
#実行結果
hello!

分かりやすいですね。defで関数を定義して、あとは呼び出すだけです。

関数名のカッコの後ろに:がついていることにも注意しましょう。

forやifと同じですね。

引数をとる使い方

関数ですから、何かしらの引数を渡すことになります。

以下は引数の例です。

  • 単一の引数
  • 複数の引数
  • デフォルト引数

を順番に見ていきましょう。

単一の引数

def hello(name):
  print "hello! %s" % name

hello("Paul")
#実行結果
hello! Paul

基礎編、って感じのサンプルコードですね!

分かりやすいと思います。

複数の引数(引数を二つ)

def hello(name, num):
  print "hello! %s " % name * num

hello("John, 3)
#実行結果
hello! John hello! John hello! John 

nameだけが3回繰り返されているのではなく、"hello! John"の全体が繰り返されていることに注意ですね!

デフォルト引数

引数を書かかなければデフォルトの値、引数を書けばその値を使います。

def hello(name, num = 3):
  print "hello! % s " % name  * num

hello("Mick")
hello("Keith", 5)
#実行結果
hello! Mick hello! Mickhello! Mick
hello! Keith hello! Keith hello! Keith hello! Keith hello! Keith 

Mickはデフォルト引数の数だけ繰り返されました。

これもよく使うことになりそうですね。

引数の順序について

明示的に引数の名前を書けば、呼び出しの際の順番を問わない

def hello(name , num = 5):
  print "hello! % s " % name  * num

hello(name = "Noel")
hello(num = 1, name ="Noel")  #引数の順番が、name, numではなく、num,nameになっている
#実行結果
hello! Noel hello! Noel hello! Noel hello! Noel hello! Noel 
hello! Noel 

便利ですね。どういう局面で使うのかな???

明示的に書く機会は。。。。あとで考えよう。

中身が無い関数(スルーしてほしい)などを明示的に

def hello()
  pass
#実行結果

何もしません。

まだ関数ができていないけれど、とりあえず書いている、っていう局面で使えるのでしょうか。

関数とリスト

def double(x):
  return x ** 2
print map(double, [1,2,3]) #map関数は、第二引数のリストを順番に第一引数の関数に渡していく
#実行結果
[1,4,9]   #引数のリストがそれぞれ二乗されているリストとして出力された

これも便利ですね!

無名関数

上のmap関数への第一引数をわざわざ書かずに、無名関数としてlambda(ラムダと読みます)が使えます。

print map(lambda x : x ** 2, [1, 2, 3])
#実行結果
[1,4,9]   #ひとつ前の例では3行で書いていましたが、ここでは1行で済みました。すごいですね!

無名関数はJavaScriptにもありますし、わざわざ関数として定義するまでもないような計算はこうすると便利です。

以上!

初めてのPython 第3版

初めてのPython 第3版