モーダルを閉じる工作HardwareHub ロゴ画像

工作HardwareHubは、ロボット工作や電子工作に関する情報やモノが行き交うコミュニティサイトです。さらに詳しく

利用規約プライバシーポリシー に同意したうえでログインしてください。

工作HardwareHub ロゴ画像 (Laptop端末利用時)
工作HardwareHub ロゴ画像 (Mobile端末利用時)
目次目次を開く/閉じる

Python 関数定義のコードスニペット

モーダルを閉じる

ステッカーを選択してください

モーダルを閉じる

お支払い内容をご確認ください

購入商品
」ステッカーの表示権
メッセージ
料金
(税込)
決済方法
GooglePayマーク
決済プラットフォーム
確認事項

利用規約をご確認のうえお支払いください

※カード情報はGoogleアカウント内に保存されます。本サイトやStripeには保存されません

※記事の執筆者は購入者のユーザー名を知ることができます

※購入後のキャンセルはできません

作成日作成日
2013/07/21
最終更新最終更新
2015/11/27
記事区分記事区分
一般公開

目次

    アカウント プロフィール画像 (サイドバー)

    プログラミング教育者。ScratchやPythonを教えています。

    0
    ステッカーを贈るとは?

    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
    

    複数の値を引数として渡す (Rubyの多値相当)

    関数定義でアスタリスクを使用

    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
    
    0
    詳細設定を開く/閉じる
    アカウント プロフィール画像 (本文下)

    プログラミング教育者。ScratchやPythonを教えています。

    記事の執筆者にステッカーを贈る

    有益な情報に対するお礼として、またはコメント欄における質問への返答に対するお礼として、 記事の読者は、執筆者に有料のステッカーを贈ることができます。

    さらに詳しく →
    ステッカーを贈る コンセプト画像

    Feedbacks

    Feedbacks コンセプト画像

      ログインするとコメントを投稿できます。

      関連記事