俺のPython勉強日記
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2008/09/05(金) 17:52:570002 ◆LKDzGov2.g
2008/09/05(金) 17:58:22・代入を行うと名前がいつも最も内側のスコープに入る。
・代入はデータのコピーをしない。
⇒単に名前をオブジェクトに結びつける(bind)だけ。
0003デフォルトの名無しさん
2008/09/05(金) 18:05:42| | / / / / / | /__ __/ [][] _| |_| |__ _| |_
| |. / / /⌒ヽ/ / / ̄ ̄|. l / / | _ | |_ レ'~ ̄|
| | / / ( ^ω^ ) / /. / / | |___  ̄| | / / / /| |
| | / / ノ/ / ノ /  ̄ ̄ / \__| | |  ̄ /_ / | |_
| |. / / // / ノ / / ̄ ̄ ̄ |_| |__| \/
| |/ / ⊂( し'./ / /
|. / | ノ' / /
| /. し' ./ /
 ̄ ̄ ̄  ̄ ̄
関数から戻ったときや、関数内で例外が送出され、かつ関数内で処理され なかった場合に削除されます。
⇒``直接アクセス可能'' とは、限定なしである名前を参照 した際に、その名前空間から名前を見つけようと試みること。
実行中はいつでも、直接名前空間にアクセス可能な、少なくとも三つの 入れ子になったスコープがある。
最初に検索される最も内側のスコープには、ローカルな名前が入っている。
あるいは、最も内側のスコープを囲んでいる関数群のスコープで、最も 近傍のスコープから検索を始める。
中間のスコープが次に検索され、 このスコープには現在のモジュールのグローバルな名前が入っている。
(最後に検索される) 最も外側のスコープは、組み込みの名前が入った 名前空間。
0006デフォルトの名無しさん
2008/09/05(金) 19:59:21> 固定ハンドルが題名に入っている・固定ハンドルが占用している・
> 閉鎖的な使用法を目的としている・等は、
> 自己紹介板・最悪板・夢・独り言板・おいらロビー・なんでもあり板以外では、
> 原則として全て削除または移動対象にします。
0007デフォルトの名無しさん
2008/09/05(金) 20:15:50言語訓練のために立てたものです。
アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。
0008デフォルトの名無しさん
2008/09/06(土) 16:23:32クラスの中の__init()__メソッドや他のメソッドの中で定義されたのが「インスタンス変数」
「クラス変数」も「インスタンス変数」も
self.nameでアクセスすることができる
。
self.nameでアクセスする場合、「インスタンス変数」は同名の「クラス変数」を隠蔽する。
変更不能な値をもつクラス変数は、インスタンス変数のデフォルト値と して使える。
0009デフォルトの名無しさん
2008/09/06(土) 18:36:40違うわヴォケー
0010デフォルトの名無しさん
2008/09/06(土) 18:45:26どのあたり?
0011デフォルトの名無しさん
2008/09/06(土) 19:34:210012デフォルトの名無しさん
2008/09/06(土) 20:44:58[3, 4, 5]
>>> args = [3, 6]
>>> range(*args) # リストからアンパックされた引数での呼び出し
[3, 4, 5]
ちょっと便利だと思った
0013デフォルトの名無しさん
2008/09/06(土) 21:12:590014デフォルトの名無しさん
2008/09/06(土) 22:00:400015デフォルトの名無しさん
2008/09/06(土) 22:20:220016デフォルトの名無しさん
2008/09/06(土) 22:40:110017デフォルトの名無しさん
2008/09/06(土) 22:48:210018デフォルトの名無しさん
2008/09/06(土) 22:52:270019デフォルトの名無しさん
2008/09/07(日) 00:21:000020デフォルトの名無しさん
2008/09/07(日) 00:25:23このはてしなく遠いPython坂をよ…
0021デフォルトの名無しさん
2008/09/07(日) 00:27:240022デフォルトの名無しさん
2008/09/07(日) 04:24:30この機能知らなかったけど、
こんな機能使ってるようなコードって読みづらくないか?
インスタンス変数とクラス変数は全部違う名前にするべきでは?
0023デフォルトの名無しさん
2008/09/07(日) 09:54:330025デフォルトの名無しさん
2008/09/07(日) 21:55:567.2999999999999998
気をつける
0026デフォルトの名無しさん
2008/09/07(日) 22:39:320.10000000000000001
>>> 0.1.__str__()
'0.1'
>>> import decimal
>>> decimal.Decimal('0.1')
Decimal("0.1")
0027デフォルトの名無しさん
2008/09/07(日) 23:19:520028デフォルトの名無しさん
2008/09/08(月) 00:34:100029デフォルトの名無しさん
2008/09/08(月) 01:32:370030デフォルトの名無しさん
2008/09/08(月) 12:10:25オブジェクトが一度生成されると、そのオブジェクトの アイデンティティ値 は決して変化することがない。
アイデンティ ティ値をオブジェクトのメモリ上のアドレスと考えてもかまわない。
演算子 `is' は、二つのオブジェクト間のアイデンティティ値を比 較する。
関数 id() は、オブジェクトのアイデ ンティティ値を表す整数 (現在の実装ではオブジェクトのメモリ上のアドレス) を返す。
外部リソースを明示的に解放する 方法は大抵 close() メソッドを使う。
この場合`try...finally' 文を使うと 便利。
他のオブジェクトに対する参照をもつオブジェクトもあり、コンテナと呼ぶ。
コンテナオブジェクトの例 として、タプル、リスト、および辞書がある。
"a = 1; b = 1" とすると、 a と b は値 1 を持つ 同じオブジェクトを参照するときもあるし、そうでないときもある。
"c = []; d = []" とすると、 c と d はそれぞれ 二つの異なった、互いに一意な、新たに作成された空のリストを参照する ことが保証されている。
"c = d = []" とすると、 c と d の両方に同じ オブジェクトを代入する。
0031デフォルトの名無しさん
2008/09/08(月) 13:04:20は旧式のクラスになり、
class X(object):
は新しい形式のクラスになる。
クラス定義から普通に (定義の終端に到達して) 抜けると、 クラスオブジェクト (class object) が生成される。
0032デフォルトの名無しさん
2008/09/08(月) 13:22:380033デフォルトの名無しさん
2008/09/08(月) 15:24:44オブジェクトの (書き込み可能な) 属性を保存するために使われる辞書または 他のマップ型オブジェクト。
module.__dict__
はモジュールのシンボルテーブルを含む辞書。
この辞書を修正すると、実際にはモジュールのシンボルテーブルを変更するが、
__dict__ 属性を直接代入することはできない。
m.__dict__['a'] = 1
と書いて m.a を 1 に定義することはでるが、m.__dict__ = {} と 書くことはできない。
0034デフォルトの名無しさん
2008/09/08(月) 16:52:28class X(object):
pass
import sys
sys.modules[__name__] = X()
のようにモジュールファイル「mdl.py」下部に下2行を追加すると、
import mdl
したときに、クラスXのインスタンスがモジュールのようにロードされる。
インポート元で
import sys
sys.modules["mdl"]
の値を比較するとわかる。
0035デフォルトの名無しさん
2008/09/08(月) 18:22:02あんまそういうuglyなことすんな
それと削除依頼出してこい
0036デフォルトの名無しさん
2008/09/08(月) 19:36:02仕様書どおりにしかプログラム書けない底辺野郎はROMってろ
0037デフォルトの名無しさん
2008/09/08(月) 21:59:070038デフォルトの名無しさん
2008/09/08(月) 22:11:210039デフォルトの名無しさん
2008/09/08(月) 23:27:580040デフォルトの名無しさん
2008/09/09(火) 00:10:140041デフォルトの名無しさん
2008/09/09(火) 11:02:07これは使える
0042デフォルトの名無しさん
2008/09/09(火) 12:54:52クラスのテンプレートはメタクラス。
type(obj) はオブジェクトobj の型/クラスを返す。
新しいtype クラスは、関数new.classobj が提供してきたのと同様のクラス・ファクトリーの役割を果たす。
>>> X = type('X',(),{'foo':lambda self:'foo'})
>>> X, X().foo()
(<class '__main__.X'>, 'foo')
Xはクラスオブジェクト
0043デフォルトの名無しさん
2008/09/09(火) 20:14:440044デフォルトの名無しさん
2008/09/09(火) 22:32:44式 lambda arguments: expression は関数オブジェクトになる。
そして
def name(arguments):
return expression
と同じ動作をする。
0045デフォルトの名無しさん
2008/09/09(火) 23:39:290046デフォルトの名無しさん
2008/09/10(水) 00:26:37メタクラスは
旧式クラスはtypes.ClassType
新式クラスはtype
自分でtypeをサブクラス化してカスタムメタクラスを作る事も可能。
クラス定義が読み込まれる際、__metaclass__ が定義されていれば、
type() の代わりに __metaclass__ が指している 呼び出し可能オブジェクトが呼び出される。
__metaclass__
この変数は name、bases、および dict を引数として 取るような任意の呼び出し可能オブジェクトにできる。
【メタクラスの決定順】
dict['__metaclass__'] があればそれを使います。
それ以外の場合で、最低でも一つ基底クラスを持っているなら、 基底クラスのメタクラス (__class__ 属性を探し、なければ 基底クラスの型) を使います。
それ以外の場合で、__metaclass__ という名前のグローバル変数 があれば、それをつかいます。
それ以外の場合には、旧形式のメタクラス (types.ClassType) を使います。
0047デフォルトの名無しさん
2008/09/10(水) 00:33:39>>> import inspect
>>> inspect.isclass(type)
True
0048デフォルトの名無しさん
2008/09/10(水) 01:43:33今週金曜日のお題になってたところだな
0049デフォルトの名無しさん
2008/09/10(水) 09:19:56はあ?俺のオリジナルだカス
消えろ
0050デフォルトの名無しさん
2008/09/10(水) 09:33:21>Python Code Reading
ttp://coreblog.org/ats/python-code-reading-04
こんな楽しそうなイベントがあったとは。。
けど開催日が金曜の午後7時って一般的にみんなキツイだろww
せめて他の平日にしてほしい。あと金払うから過去の内容も公開して欲しいな。
0051デフォルトの名無しさん
2008/09/10(水) 09:52:340052デフォルトの名無しさん
2008/09/10(水) 10:02:560053デフォルトの名無しさん
2008/09/10(水) 12:57:02class X(object):
pass
class Y():
__metaclass__ = type
Z = type("Z",(),{})
#古い形式クラス
class H():
pass
print type(X) #<type 'type'>
print type(Y) #<type 'type'>
print type(Z) #<type 'type'>
print type(H) #<type 'classobj'>
>>46のメタクラス決定順の通り、クラスオブジェクトHは旧式のメタクラスが使用されている。
0054デフォルトの名無しさん
2008/09/10(水) 13:35:10#ラッパー関数
def rap(func):
def t(self, name, value):
if name == "ok":
func(self, name, value)
else:
raise AttributeError("代入できません")
return t
class A():
class __metaclass__(type):
__setattr__ = rap(type.__setattr__)
0055デフォルトの名無しさん
2008/09/10(水) 13:53:17こっちの方が解りやすかった
class A():
class __metaclass__(type):
def __setattr__(self, name, value):
if name == "ok":
type.__setattr__(self, name, value)
else:
raise AttributeError("代入できません")
0056デフォルトの名無しさん
2008/09/10(水) 14:15:31... __slots__ = ("ok",)
...
>>> a = A()
>>> a.ok = 0
>>> a.ng = 0
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'A' object has no attribute 'ng'
0057デフォルトの名無しさん
2008/09/10(水) 14:28:54それインスタンスでしょ
0058デフォルトの名無しさん
2008/09/10(水) 14:38:13> class __metaclass__(type):
その書き方は、Guido が completely unreadable って言ってた
0059デフォルトの名無しさん
2008/09/10(水) 15:04:29まじ?class定義の中でまたclass定義してるのがイヤなのかな?
となると
class B(type):
def __setattr__(self, name, value):
if name == "ok":
type.__setattr__(self, name, value)
else:
raise AttributeError("代入できません")
class A():
__metaclass__ = B
って感じなのかな〜?
0060デフォルトの名無しさん
2008/09/11(木) 01:17:33x がこのクラスのインスタンスであるとすると、
x[i] は x.__getitem__(i) と等価になります。
特に注釈の ない限り、適切なメソッドが定義されていない場合にこのような演算を行おうと すると例外が送出されます。
#コンテナをエミュレートする
class A(object):
def __getitem__(self, key):
pass
x = A()
の場合
x[i]とx.__getitem__(i)は等価
0061デフォルトの名無しさん
2008/09/11(木) 01:21:51回りに使ってる奴皆無だろ。
0062デフォルトの名無しさん
2008/09/11(木) 01:24:560063デフォルトの名無しさん
2008/09/11(木) 02:34:47特別な理由はないよ。Rubyでもよかった。Webアプリとか作れれば。
>回りに使ってる奴皆無だろ。
そもそも周りにプログラマーがいない
0064デフォルトの名無しさん
2008/09/11(木) 02:35:490065デフォルトの名無しさん
2008/09/11(木) 02:42:28Rubyよりライブラリがあるんじゃないの?
0066デフォルトの名無しさん
2008/09/11(木) 11:22:40if k in o
と簡単に書けるようにするためのメソッド
0067デフォルトの名無しさん
2008/09/11(木) 20:16:42そのためには__iter__()メソッドを定義する。
このメソッドはイテレータオブジェクトを返すようにする。
イテレータオブジェクトはイテレータプロトコルをサポートする必要がある。
__iter__()とnext()の2つのメソッドがイテレータプロトコルを成す。
class A(object):
data = "abc"
def __iter__(self):
return iter(self.data)
>>> a = A()
>>> for c in a:
... c
...
'a'
'b'
'c'
0068デフォルトの名無しさん
2008/09/11(木) 20:21:44class B(object):
data = "abc"
index = 0
def __iter__(self):
print type(self)
return self
def next(self):
print type(self)
if self.index == len(self.data):
raise StopIteration
self.index += 1
return self.data[self.index - 1]
selfの中身はインスタンス。
selfという名前は慣習。
0069デフォルトの名無しさん
2008/09/11(木) 23:05:46そこまで手の込んだクラスがどうしても必要になる場面は
そんなに多くないよ。まあ、知ってて損はないけど
0070デフォルトの名無しさん
2008/09/11(木) 23:48:23ありがと。自分も途中で「これ使う時あんのかな?」って思ってた。
0071デフォルトの名無しさん
2008/09/12(金) 12:47:07import string
s = string.Template("$who have $what")
#キーワード引数を使用する
print s.substitute(who='I', what='apple') #I have apple
#テンプレートにないKeyはスルーされる
print s.substitute(who='I', what='apple', a="abc") #I have apple
#辞書オブジェクトが引数の場合
d = dict(who='I', what="apple")
print s.substitute(d) #I have apple
#locals()を引数にする。
#locals()は値のある変数をキーとした人工的な辞書
msg = string.Template("the square of $number is $square")
for number in range(10):
square = number * number
print msg.substitute(locals())
0072デフォルトの名無しさん
2008/09/12(金) 23:17:210073デフォルトの名無しさん
2008/09/12(金) 23:38:570074デフォルトの名無しさん
2008/09/13(土) 01:16:08きもい奴がいますね
0075デフォルトの名無しさん
2008/09/13(土) 13:10:25本は
Python クックブック 第2版
ttp://www.amazon.co.jp/gp/product/4873112761/
を買ったけど、
Python ドキュメント
http://www.python.jp/doc/release/
を見てる方が多い。
0076デフォルトの名無しさん
2008/09/13(土) 15:24:36ごめんURI間違えた
Python クックブック 第2版
http://www.amazon.co.jp/dp/4839922829
0077デフォルトの名無しさん
2008/09/14(日) 13:41:57mapping.fromkeys(seq[, value]) seq からキーを作り、値が value であるような、新しい辞書を作成します
>>> d = {"A":1,"B":2}
>>> d
{'A': 1, 'B': 2}
>>> dict.fromkeys([k.lower() for k in d])
{'a': None, 'b': None}
0078デフォルトの名無しさん
2008/09/14(日) 22:51:40サンクス。
本高いな、オライリーだからかな?
>>76
「間違えた」って言ってる割には、リンク先のタイトルと一致してないんだけど・・・
0079デフォルトの名無しさん
2008/09/14(日) 23:37:460080デフォルトの名無しさん
2008/09/14(日) 23:59:050081デフォルトの名無しさん
2008/09/15(月) 00:21:30だってまったく話題にあがってこないものだったわけだからね
0082デフォルトの名無しさん
2008/09/15(月) 11:11:01/\___/\
/ / ヽ ::: \
| (●), 、(●)、 | / ̄ ̄ ̄ ̄ ̄ ̄ ̄
| ,,ノ(、_, )ヽ、,, | < まーたageた
| ,;‐=‐ヽ .:::::| \_______
\ `ニニ´ .:::/
/`ー‐--‐‐―´´\
0083デフォルトの名無しさん
2008/09/15(月) 21:33:290084デフォルトの名無しさん
2008/09/15(月) 22:08:28>>> import urllib2
>>> urllib2.urlopen("http://www.example.com").code
200
0085デフォルトの名無しさん
2008/09/16(火) 17:46:27import urllib2
#ProxyHandlerインスタンスを生成
proxies = urllib2.ProxyHandler({"http" : "http://host:port"})
#OpenerDirectorインスタンスを生成
opener = urllib2.build_opener(proxies)
#UserAgetを変更
opener.addheaders = [("User-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)")]
#インストール
urllib2.install_opener(opener)
#出力
print urllib2.urlopen(url).read() #print opener.open(url).read()でも一緒、その場合openerのインストールは不要
0086デフォルトの名無しさん
2008/09/17(水) 13:35:11except 節は例外名の後に変数が指定可能。
try:
print i
except ZeroDivisionError, e:
print "例外ZeroDivisionErrorです。:", e
except NameError:
print "例外NameErrorです。"
else:
print "else文です。"
0087デフォルトの名無しさん
2008/09/17(水) 13:45:39class MyError(Exception):
・・・
0088デフォルトの名無しさん
2008/09/17(水) 14:56:22try文で囲ってない部分で例外が発生したら、そのプログラムが強制終了すると。
0089デフォルトの名無しさん
2008/10/13(月) 10:04:44もともと何が作りたかったのか忘れてることってない?
0090デフォルトの名無しさん
2008/10/13(月) 15:23:40HaskellやらLispやらの勉強は特にそうだよなwww
奴らじゃなきゃ出来ない事なんてないわけだし、むしろ一般的なライブラリやドキュメントが少くて不便なことも多い。
例えばGUIとか。
0091sage
2008/10/13(月) 16:46:23あるある。
もともと作りたいものが具体的にないんだけどね。
勉強している時は、これであんなことやこんな事が出来そうと思ってワクワクする。
でも気づいたら完成したソフトが出来てない。
そして、飽きて次の言語に・・・
0092デフォルトの名無しさん
2008/10/13(月) 16:59:34phpで作ったものは完成したけど楽しくなかった
rubyで作ったときは楽しかったけど完成しなかった
pythonは楽しく作れてしかも完成出来て中身もすっきり
0093デフォルトの名無しさん
2008/10/17(金) 08:24:52バイナリ配布方法も含めて
0094デフォルトの名無しさん
2008/10/24(金) 18:39:41使えないと思っていたが,Linux 上でもできた・・・
exe ファイルが出来やがった…
Windows な友人に渡すためだけに Windows 上で
setuptools 動かしてたおれって orz
0095デフォルトの名無しさん
2008/10/24(金) 21:26:36distutils/command/ にWindows用のインストーラーのexeが入ってて
bdist_wininst すると必要なファイルを作って固めてインストーラーの後ろにくっつけてるから
0096デフォルトの名無しさん
2008/12/29(月) 21:03:170097デフォルトの名無しさん
2008/12/29(月) 22:29:590098デフォルトの名無しさん
2008/12/30(火) 13:04:24今チュートリアル4が終わりそう。
3日くらいでそこそこ使えるようになるかな?
ゆっくりまったりこの正月で覚えるぜ。
0099デフォルトの名無しさん
2008/12/31(水) 00:20:21バストサイズはアップした。形だな、次は、うん。
次はどこに進めばいいんだろうか。
とりあえずもっかい読み直すか。
0100デフォルトの名無しさん
2008/12/31(水) 07:38:58一冊目ほしいなー
0101デフォルトの名無しさん
2008/12/31(水) 15:47:06フッフフウァッ!ユクゾッ ユクゾッ ユクゾッ フッフフウァッ!ユクゾッ ユクゾッ ユクゾッ ユクゾッ
0102デフォルトの名無しさん
2009/01/04(日) 23:09:15┃ ━ ╋━╋ ╋┓┏┓ ┳┻┳┏━ ┣━┳━ ┃
┃ ━ ┏┳┓ ┃┃┗┛ ┻━┻┃ ┃ ┃ ┃
┃ ━ ┗╋┛ ┏━┓ ┃ ┣┳ ┏━╋━ ┃
┃ ━ ━╋━ ┣━┫ ━╋━┃┃ ┃ ┃ ┃
┃┏┓━╋━ ┣━┫ ┏╋┓┃┃ ━┻━╋━ ┃
┃┃┃ ┃ ┗━┛ ┃┃┃┃┃ ┃ ┃
┃┗┛━┻━ ━┛┗━ ┃┃┃┃┃ ┃ ┃
┗━━━━━━━━━━━━━━━━━━━━━┛
∩
〈〈〈 ヽ
〈⊃ }
(\___/) | |
( ̄l▼  ̄)! !
/ ● ● | /
/ l ___\lミ/
/▲ ( 。--。 )
/■___ (( ̄)) 新年あけましておめでとうございますーーっ!
(___)  ̄/
2009年 元旦
0103デフォルトの名無しさん
2009/02/23(月) 02:42:03配列に格納していきたいのですが下の書き方で
エラーが出ます。
動的に格納していくやり方はないものでしょうか?
お願いします。
oF = open("hogehoge.txt","r")
i = 0
for line in oF:
list[i] = line
i+=1
0104103
2009/02/23(月) 02:54:25oF = open("hogehoge.txt","r")
list = [] #空リスト作って
i = 0
for line in oF:
print(line)
list =list + [line] #連結していく
i+=1
これでOKでした。
f = open("hogehoge.txt")
for line in f:
L.append(line)
f.close()
とかは??
0106デフォルトの名無しさん
2009/02/23(月) 15:09:340107デフォルトの名無しさん
2009/02/23(月) 22:46:340108デフォルトの名無しさん
2009/03/20(金) 16:42:54i は何に使うの?
0109デフォルトの名無しさん
2009/03/30(月) 03:23:000110デフォルトの名無しさん
2009/04/08(水) 03:47:100111デフォルトの名無しさん
2009/09/29(火) 08:31:080112デフォルトの名無しさん
2009/11/03(火) 17:22:000113デフォルトの名無しさん
2010/08/10(火) 10:09:000114デフォルトの名無しさん
2011/01/04(火) 10:55:200115デフォルトの名無しさん
2011/01/09(日) 17:53:15やってるよ。
0116デフォルトの名無しさん
2011/09/12(月) 02:18:23.010117デフォルトの名無しさん
2011/11/20(日) 11:20:04.450118 忍法帖【Lv=40,xxxPT】
2011/11/24(木) 10:34:35.320119デフォルトの名無しさん
2011/12/07(水) 23:03:45.270120デフォルトの名無しさん
2012/02/13(月) 17:15:29.470121デフォルトの名無しさん
2012/03/10(土) 04:30:38.340122デフォルトの名無しさん
2012/03/10(土) 13:10:26.520123デフォルトの名無しさん
2012/03/12(月) 14:37:26.920124デフォルトの名無しさん
2012/06/10(日) 23:02:57.010125デフォルトの名無しさん
2012/06/15(金) 08:17:19.13│●│
└─┤
_ ∩
( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘
0126uy
2012/06/25(月) 16:31:45.66&nbsp;
覚えない奴ってほんとになんなんだ
Pythonのソースコード貼り付けてインデントなしとか半角スペースとか
そんな書き込みしか出来ないなら2chやるなよ
0127デフォルトの名無しさん
2012/06/25(月) 18:45:12.050128デフォルトの名無しさん
2012/06/25(月) 18:52:28.81「大切なものは、目に見えない」
0129デフォルトの名無しさん
2012/06/25(月) 21:04:06.930130デフォルトの名無しさん
2012/06/26(火) 11:23:25.400131デフォルトの名無しさん
2012/06/26(火) 12:59:11.40きれいな言語だって言ってたよ。
■ このスレッドは過去ログ倉庫に格納されています