May 282012
 

6.スコープ

6-1.変数におけるスコープ

- Global Scope と Local Scope

# -*- coding: utf-8 -*
#6-1.変数におけるスコープ
 
#Global Scope と Local Scope
 
def func1():
    a = 100          #Local variable
    print a          #Local variable
    #100
 
a = 10               #Global variable
func1()
print a              #Global variable
#10
 
def func2():
    global a         #Global variable
    a = 100          #Global variable
    print a          #Global variable
    #100
 
a = 10               #Global variable
func2()
print a              #Global variable
#100

- Enclosing Function’s Scope

# -*- coding: utf-8 -*
#6-1.変数におけるスコープ
 
#Enclosing Function’s Scope
 
def func(a):         #Enclosing Function’s variable
    print a          #Enclosing Function’s variable
    #100
 
a = 10               #Global variable
func(100)
print a              #Global variable
#10

6-2.関数におけるスコープ

# -*- coding: utf-8 -*
#6-2.関数におけるスコープ
 
def func1():               #Global function
    print "func1"
 
    def func2():           #Local function
        print "func2"
 
    func2()
    #func2
 
func1()
#func1
#func2
 
func2()
#error

6-3.クラスにおけるスコープ

# -*- coding: utf-8 -*
#6-3.クラスにおけるスコープ
 
class Test:
 
    def __init__(self,_a):
        self.a = _a   #クラスTest()内のLocal variable
 
    def func1(self):
        a = 1         #関数func1()内のLocal variable
 
    def func2(self):
        self.a = 1    #クラスTest()内のLocal variable
 
test = Test(0)
 
test.func1()
print test.a
#0
 
test.func2()
print test.a
#1

6-4.モジュールにおけるスコープ

<モジュール-ファイル名:test.py>

# -*- coding: utf-8 -*
 
#4-3-4.モジュールにおけるスコープ
#<モジュール-ファイル名:test.py>
 
a = 0        #Global variable

<起動ファイル-ファイル名:main.py>

# -*- coding: utf-8 -*-
 
#5-2-4.モジュールにおけるスコープ
#<起動ファイル-ファイル名:main.py>
 
import test
a = 1            #Global variable
print a
#1
print test.a     #testモジュール内のGlobal variable
#0
 
from test import *
a = 1            #testモジュール内のGlobal variable
print a
#1

演習(8)

以下のクラスを作成しなさい。

属性:
pt … 球の中心点
radius … 球の半径
name … 球の名前(球の通し番号)
color0 … 互いの球が重なっていない時の色[R,G,B]
color1 … 互いの球が重なっている時の色[R,G,B]
id … 球のid(Rhinoオブジェクトのid)

メソッド:
drawSphere() … 球を描画する(引数なし)
drawData() … 中心点座標に「name」、「pt」、「radius」のテキストデータを表示する(引数なし)
checkSphere() … 自身の球と自身以外の球が重なっている場合はcolor0、重なっている場合はcolor1で、球を着色する(引数:自身以外のインスタンス)

[参考1]
Distance()
http://www.rhino3d.com/5/ironpython/functions/Distance.htm
ObjectColor()
http://www.rhino3d.com/5/ironpython/functions/ObjectColor.htm

[参考2]
球同士が重なっている=それぞれの球の中心点の距離<=それぞれの球の半径の和

[参考3]
色の設定方法

# -*- coding: utf-8 -*-
import rhinoscriptsyntax as rs

color=[]
#[Red, Green, Blue]
color.append([255,0,0])   #赤
color.append([0,255,0])   #緑
color.append([0,0,255])   #青

obj=[]
for i in range(3):
	obj.append(rs.AddPoint([i,0,0]))
	rs.ObjectColor(obj[i], color[i])

 Leave a Reply

(required)

(required)

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>