Differences between revisions 3 and 4
Revision 3 as of 2018-10-01 00:58:08
Size: 3680
Comment:
Revision 4 as of 2018-10-01 01:23:03
Size: 2735
Comment:
Deletions are marked like this. Additions are marked like this.
Line 92: Line 92:


グローバル変数(global)

関数の外部で定義された変数は グローバル変数 として扱われます。関数の中でグローバル変数を参照することはできますが、代入することはできません。代入する場合は、global で宣言する必要があります。

{{{#!highlight python
count = 0 # グローバル変数

def func():
    print( count ) # 参照することはできる
    global cound # global宣言してやれば
    count += 1 # 代入することもできる
}}}


globals() はグローバル変数、locals() はローカル変数の一覧を辞書として返却します。

{{{#!highlight python
def func():
    for k in globals().keys():
        print( "GLOBAL: %s = %s" % (k, globals()[k]) )
    for k in locals().keys():
        print( "LOCAL: %s = %s" % (k, locals()[k]) )

func()
}}}

返戻値(return文)

返戻値を伴う関数定義

  • 返戻値を伴う関数定義
    • def 文を用いて関数(function)を定義することができる 
    • その際に,return文で,返戻値を返すことができる.
      • 関数呼び出しは,「関数が呼び出されている部分を,その関数の計算結果で置き換える」と考えるとよい
  • 例(1): x という引数を受け取り,それを二倍して表示する関数 double() を定義する

   1 def double( x ):
   2     return( x * 2 )
   3 
   4 print( double( 12 ) )
  • 例: x と y という二つの引数を受け取り,その合計値を表示する関数 add() を定義する

   1 def add( x, y):
   2     return( x + y )
   3 
   4 print( add( 12, 23 ) )

複数の値を返す関数

  • 複数の値を返す関数
    • 関数の返戻値として,タプルを返すことで,複数の値を返すことができる
      • タプルなので,型が異なっていてもよい

   1 import datetime
   2 
   3 def today_now():
   4     now = datetime.datetime.today()
   5     return( ((now.year, now.month, now.day), (now.hour,now.minute,now.second)) )
   6 
   7 (date, time) = today_now()
   8 print( date )
   9 print( time )

下記の様に、キーワード付き引数を指定することができます。キーワード付き引数は関数定義側で、デフォルトの値を指定することができます。

   1 def repeat_msg( msg, repeat=3 ):
   2     for i in range( repeat ):
   3         print( msg )
   4 
   5 repeat_msg('Hello')                    # Hello, Hello, Hello
   6 repeat_msg('Yahho', repeat=5)          # Yahho, Yahho, Yahho, Yahho, Yahho

*name は残りの順序引数を、**name はキーワード付き引数を辞書型で受け取ります。

   1 def func( a1, a2, *args, **params ):
   2     print( a1 )                    #=> A
   3     print( a2 )                    #=> B
   4     print( args )                  #=> ('C', 'D')
   5     print( params )                #=> {'k1': 'K1', 'k2': 'K2'}
   6 
   7 
   8 func('A', 'B', 'C', 'D', k1='K1', k2='K2')

args や params を変数で渡す場合には、呼び出す側にも * や ** をつけます。

   1 args = ('C', 'D')
   2 params = {'k1': 'K1', 'k2': 'K2'}
   3 func('A', 'B', *args, **params)     #=> A, B, ('C', 'D'), {'k1': 'K1', 'k2': 'K2'}

SoftEng: Python/Lang/Function/Return/Contents (last edited 2018-10-01 01:32:34 by TadashiIijima)