2013年5月14日火曜日

開発環境

『初めてのPython 第3版』(Mark Lutz 著、夏目 大 訳、オライリー・ジャパン、2009年、ISBN978-4-87311-393-7)のIV部(関数)の第16章(スコープと引数)の練習問題を解いてみる。

その他参考書籍

1, 2, 3, 4, 5, 6, 7, 8.

コード(BBEdit)

sample.py

#!/usr/bin/env python3.3
#-*- coding: utf-8 -*-

x = 'spam'
def func():
    print(x)
func() # 'spam'

x = 'spam'
def func():
    x = 'ni!'
func()
print(x) # 'spam'

x = 'spam'
def func():
    x = 'ni'
    print(x)
func() # 'ni'
print(x) # 'spam'

x = 'spam'
def func():
    global x
    x = 'ni'
func()
print(x) # 'ni'

x = 'spam'
def func():
    x = 'ni'
    def nested():
        print(x)
    nested()
func() # 'ni'
print(x) # 'spam'

def func(a, b, c=3, d=4):
    print(a, b, c, d)
func(1, *(5, 6)) # 1 5 6 4

# 関数でステート情報を保持する方法
# globalを使う
def func():
    global x
    x = 'egg'
func()
print(x) # 'egg'

# LEGBのEを使う(外側の関数の変数を使う)
def func():
    x = '10'
    def inner():
        print(x)
    return inner
f = func()
f() # 10

# デフォルト引数を使う
def func(a=20):
    print(a)
func() # 20

# 関数が呼び出し側に影響を与える方法
# return文を使う
def func():
    return 30
print(func()) # 30

# global宣言を使う
def func():
    global x
    x = 40
x = 50
func()
print(x)

# 可変性オブジェクトを引数に渡す
def func(a):
    a[1] = 100

x = [1,2,3,4,5]
func(x)
print(x)

入出力結果(Terminal)

$ ./sample.py
spam
spam
ni
spam
ni
ni
spam
1 5 6 4
egg
10
20
30
40
[1, 100, 3, 4, 5]
$

0 コメント:

コメントを投稿