Pythonのお勉強 Part3 ..
2:デフォルトの名無しさん
09/01/01 23:46:20
┌─────────┐
| |
│ _ ∩ |
│ ( ゚∀゚)彡 おっぱい! |
│ ( ⊂彡 おっぱい! .|
│ | | |
│ し ⌒J |
│ |
│ Now Oppaing. .... .|
│ |
│ そのままおっぱいでお待ちください。 |
| |
└─────────┘
3:デフォルトの名無しさん
09/01/02 00:06:47
ペニス
4:デフォルトの名無しさん
09/01/02 00:14:20
>>1
おつぱいそん
5:!omikuji !dama
09/01/02 05:14:01
乙py
6:初心者
09/01/02 08:55:53
パイパン初心者です。こんなスレがあるなんて今日初めて知りました。
7:初心者
09/01/02 13:50:22
Rubyこそが史上最強の言語であると思ってますが、パイパンがんばります!
8:デフォルトの名無しさん
09/01/02 17:00:37
>>7
そうだね、ハルマゲドンはすぐそこまで来ているよね。
9:デフォルトの名無しさん
09/01/02 17:37:39
またruby厨の自演がはじまった
10:デフォルトの名無しさん
09/01/02 18:29:45
>>1
おっぱいそん!
11:デフォルトの名無しさん
09/01/02 21:24:05
>>1
π乙
12:デフォルトの名無しさん
09/01/02 21:41:13
刑務所でも使えるRubyに感謝
13:デフォルトの名無しさん
09/01/02 22:52:59
だれか、pythonのスクリプトを難読化する
ツールを僕に紹介してちょんまげ
14:デフォルトの名無しさん
09/01/02 23:12:04
誰もお前の糞なスクリプトなんて読まないから安心汁
15:デフォルトの名無しさん
09/01/02 23:46:31
つ perl
16:デフォルトの名無しさん
09/01/03 00:25:01
つ Grass
17:デフォルトの名無しさん
09/01/03 01:17:47
.pyc
18:デフォルトの名無しさん
09/01/03 02:09:00
python -m py_compile
python -m compileall
何か面倒な事をしたいのなら、
def encode_src(src):
print("""exec '''%s'''.decode('base64')""" % src.encode('base64'))
encode/decodeは必要に応じてcompile,marshal他を組み合わせる。
19:デフォルトの名無しさん
09/01/03 02:12:42
>>18の訂正
execも関数になるんだっけ。exec -> exec(...)
20:デフォルトの名無しさん
09/01/03 02:24:15
他に、codec使う方法もある。
# -*- coding: rot13 -*-
cevag('Uryyb, jbeyq!')
21:デフォルトの名無しさん
09/01/03 04:05:31
>>> class a:
... hoge=2
... def hage(self, x):
... self.hoge=x
... def fuga(self, y):
... return self.hoge
...
>>> vars()['a'].__dict__
{'__module__': '__main__', 'fuga': <function fuga at 0x00930DF0>, 'hage': <funct
ion hage at 0x00930CF0>, '__doc__': None, 'hoge': 2}
>>> vars()['a'].hoge
2
>>> vars()['a'].__dict__['hoge']
2
>>> i=vars()['a']
>>> i.fuga(0)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unbound method fuga() must be called with a instance as first argumen
t (got int instance instead)
>>> i=vars()['a']()
>>> i.fuga(0)
2
>>> i=vars()['a']
>>> j=i()
>>> j.hoge
2
>>> j.fuga(0)
2
>>> j.__dict__
{}
生成されたインスタンスからメンバやメソッド情報を得るにはどうすればよいですか
22:デフォルトの名無しさん
09/01/03 05:18:43
j.__class__.__dict__
23:デフォルトの名無しさん
09/01/03 07:51:16
dir
inspect.getmembers
24:デフォルトの名無しさん
09/01/03 08:03:27
__class__.__dict__ にある関数はインスタンスと関連付けされてない点に注意。
a.__dict__['fuga'](j, 0) # 引数 self にあたる部分を自分で渡す必要がある
恐らくやりたいことは、dir(instance) で調べて、getattr(j, 'fuga')(0)
25:デフォルトの名無しさん
09/01/03 08:42:00
dir だと余計なメンバも混ざってくる。
__class__.__dict__だと親クラスの情報が含まれない。
メソッドのみを調べる場合は、
[name for name,boundmethod in inspect.getmembers(instance, inspect.ismethod)]
メンバを含める場合は第二引数を省略。
[name for name,boundmethod in inspect.getmembers(instance) if not name.startswith('__') and not name.endswith('__')]
26:デフォルトの名無しさん
09/01/03 09:13:18
>>> j.__class__.__dict__['hoge']
2
>>> j.__class__.__dict__['fuga'](0)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: fuga() takes exactly 2 arguments (1 given)
>>> j.__class__.__dict__['fuga'](j, 0)
2
>>> j.hoge=9
>>> j.__class__.__dict__['fuga'](j, 0)
9
できました
ありがとうございました
もっと勉強してみます
27:デフォルトの名無しさん
09/01/03 09:31:48
>>> class b(a):
... hige=3
... def fuga(self, x):
... return self.hoge + x
>>> class a:
... hoge=2
... def hage(self, x):
... self.hoge=x
>>> aa=a()
>>> bb=b()
>>> aa.__class__.__dict__
{'__module__': '__main__', '__doc__': None, 'hage': <function hage at 0x00930D70>, 'hoge': 2}
>>> bb.__class__.__dict__
{'__module__': '__main__', 'fuga': <function fuga at 0x00930D30>, 'hige': 3, '__doc__': None}
>>> dir(aa)
['__doc__', '__module__', 'hage', 'hoge']
>>> dir(bb)
['__doc__', '__module__', 'fuga', 'hage', 'hige', 'hoge']
>>> import inspect
>>> inspect.getmembers(aa)
[('__doc__', None), ('__module__', '__main__'), ('hage', <bound method a.hage of <__main__.a instance at 0x00934738>>), ('hoge', 2)]
>>> inspect.getmembers(bb)
[('__doc__', None), ('__module__', '__main__'), ('fuga', <bound method b.fuga of <__main__.b instance at 0x009347B0>>), ('hage', <bound method b.hage of <__main__.b instance at 0x009347B0>>), ('hige', 3), ('hoge', 2)]
>>> [name for name,boundmethod in inspect.getmembers(aa, inspect.ismethod)]
['hage']
>>> [name for name,boundmethod in inspect.getmembers(bb, inspect.ismethod)]
['fuga', 'hage']
>>> [name for name,boundmethod in inspect.getmembers(aa) if not name.startswith('__') and not name.endswith('__')]
['hage', 'hoge']
>>> [name for name,boundmethod in inspect.getmembers(bb) if not name.startswith('__') and not name.endswith('__')]
['fuga', 'hage', 'hige', 'hoge']
28:デフォルトの名無しさん
09/01/03 12:20:06
もしかしてpythonのソースをYAMLだけで書いて
exec使わずに実行とか出来るんですか
29:デフォルトの名無しさん
09/01/03 18:02:59
>>28
exec使わずに実行て?
普通、言語のインスペクトではメソッドの中身とか取れないのが普通。
JavaScriptはソースが見れたっけ?
Pythonでの話に戻すけど、ソースコードをparserモジュールで構文木にして、
その構文木をソースとして実行とかできるのかな。やってみたことないけど。
30:デフォルトの名無しさん
09/01/03 18:10:04
rubyなら出来ますよ
31:デフォルトの名無しさん
09/01/03 18:12:40
そうだね、神の名はエホバだね。
32:デフォルトの名無しさん
09/01/03 19:02:45
はあ?
33:デフォルトの名無しさん
09/01/03 21:37:30
今、下記のようなリストがあり、
list1 = ['cat', 'dog', 'spam', 'egg']
下のマップで上記リストを変換したいと思います。
maps = {'animal': ['cat', 'dog']}
結果は以下を期待しています。
['animal', 'animal', 'spam', 'egg'](あるいは、set(['animal', 'spam', 'egg'])
その際、安直に上記を実装した、下のようなコードが思いつきました。
下のコードをmap関数やセット、lambda関数などなんでもいいので標準関数等を駆使して、とにかく短く表現できないか考えています。下記のコードはスマートな方でしょうか?
ans = []
for elem in list1:
for key, vals in maps.items():
if elem in vals:
ans.append(key)
else:
ans.append(elem)
print ans
さらに、マップの要素が増えた場合、
maps = {'animal': ['cat', 'dog'],'food':['egg']}
他に、list1 = ['animal', 'spam', 'egg']
をもとにmaps = {'animal': ['cat', 'dog']}を用いて、元が復元できないか考えています。
>> ['cat','dog','spam', 'egg']
どなたかわかりますでしょうか?
34:デフォルトの名無しさん
09/01/03 21:39:01
改行がくずれたので、、、
ans = []
for elem in list1:
for key, vals in maps.items():
if elem in vals:
ans.append(key)
else:
ans.append(elem)
print ans
35:デフォルトの名無しさん
09/01/03 21:50:26
>>33
変換したい方向とmapsのデータの持ち方が逆なので意図がちょっと分かりにくかった
list1 = ['cat', 'dog', 'spam', 'egg']
maps = {'animal': ['cat', 'dog']}
reverse_maps = dict((x, key) for key, xs in maps.iteritems() for x in xs)
print [ reverse_maps.get(x) or x for x in list1 ]
こういうことでいいのかな?
36:デフォルトの名無しさん
09/01/03 22:08:25
>>35
やばい。目から鱗どころじゃないっす。。
マップをつくるなんて、、。
しかも、以前valuesだったものをkeyにして、、なんて思いも浮かばなかった。
ありがとうございます!
しかし、実質1行とは。。予想以上でした。
これより最短はないですね。
ありがとうございます!
37:デフォルトの名無しさん
09/01/03 22:29:30
def foo(l, i, k):
l[i] = k
for k, v in maps.items():
for w in v:
if list1.count(w):
foo(list1, list1.index(w), k)
print(list1)
for k, v in maps.items():
for w in v:
if list1.count(k):
foo(list1, list1.index(k), w)
print(list1)
初心者なので腕試しのつもりで書きました
かなり行数使ってますが
38:デフォルトの名無しさん
09/01/03 22:30:11
>>35
コードもらいました
これで逆変換
list1 = ["cat", "dog", "spam", "egg"]
maps = {"animal": ["cat", "dog"]}
transpose = lambda mps: dict((x, key) for key, xs in maps.iteritems() for x in xs)
transform = lambda lst, mps: [item in mps.keys() and mps[item] or item for item in lst]
itransform = lambda lst, mps: sum([item in mps.keys() and mps[item] or [item] for item in lst], [])
#>>> import trans
#>>> m = trans.transpose(trans.maps)
##>>> trans.transform(trans.list1, m)
#['animal', 'animal', 'spam', 'egg']
#>>> s = set(trans.transform(trans.list1, m))
#>>> trans.itransform(trans.list1, trans.maps)
#['cat', 'dog', 'spam', 'egg']
39:37
09/01/03 22:31:06
一行で書けるのか
代入せずに新しくリストを作ればいいのか
勉強になるなあ
40:デフォルトの名無しさん
09/01/03 22:34:06
ああー 最後はtrans.list1じゃなくてs
41:38
09/01/03 22:38:56
transpose関数ももmapsではなくmpsですねサーセン
42:37
09/01/03 22:41:40
カウントとか効率悪そうだし
foo関数定義した意味がわからないな
駄コード書いて反省してます
すみませんでした
43:37
09/01/03 22:59:21
ちょっと増やすだけで破綻するし
駄目すぎるな
44:デフォルトの名無しさん
09/01/03 23:28:11
setでよかったのか
考えて損した
一から勉強し直そう
45:デフォルトの名無しさん
09/01/04 01:04:26
>>27
細かいとこだけど。それだと class b(a) の後に class a を定義しているので
偶然前に定義した class a が残っていただけで、意図したテストになっていないはず。
後、クラス名はなるべく頭に大文字を使おう。
hige, hoge はクラス変数になっているので、
fuga をインスタンス作らずに呼び出したいなら、@classmethod
インスタンス変数にしたい場合コンストラクタ(__init__メソッド)内でhige,hogeを作る。
46:デフォルトの名無しさん
09/01/04 01:49:36
なんぞこれ
47:デフォルトの名無しさん
09/01/04 02:56:38
>>29
JavaScriptは実装依存じゃないかな。toSourceとかunevalがあったよーな気がする。
Pythonだとinspect.getsoruce
>構文木をソースとして実行
構文木もコンパイルしたコードオブジェクトも実行可能。ただ、実行には結局exec/evalを使うので
構文木を弄るのでなければわざわざ変換する利点はない。see also compiler.ast, ast.parse
少し敷居は高いけど、Pythonはこの辺の標準モジュールは充実してる。
>>28
"exec を使わずに"がどういう意図なのかわからないけど、
単に字面通りなら、じゃあevalで?って話しだし。
副作用を気にしていて実行環境を分離したいのなら
>>> d = {'a': 1}
>>> exec "a = 10" in d
>>> d['a']
10
より確実にするなら、別プロセス立ち上げてsocketやpipe等で -> Rpyc等のライブラリを使う。
ところで、YAML内にPythonのソース書くって
インデントがどっちの言語のものか混ざって解らなくなったりしない?
(書いたことないけど
48:デフォルトの名無しさん
09/01/04 03:22:53
>>38
item in maps.keys() は、item in maps の方が推奨されてる。
でも、この場面なら get メソッドの第2引数を使う方がいい。
item in maps.keys() and maps[item] or item -> maps.get(item, item)
49:38
09/01/04 03:32:08
>>38
ありがとう
知りませんでした
50:38
09/01/04 03:33:58
ああー
>>48ですー
51:デフォルトの名無しさん
09/01/04 03:51:01
効率無視 && mapsのkeysと各要素間に重複がない場合限定で。
mapsをtransposeせずに探索。見つかってもまだ探索・・・。
[reduce(lambda x,(y,z): y if x in z else x, maps.iteritems(), i) for i in list1]
52:デフォルトの名無しさん
09/01/04 05:41:17
くだらないコードばっかだな
53:デフォルトの名無しさん
09/01/04 10:28:37
掲示板作ったよ。
なんかホールとか発見したら教えてね。
しばらくしたら忘れてね。
URLリンク(rail.s4.pf-x.net)
54:デフォルトの名無しさん
09/01/04 11:54:39
161さんごぶさたです
55:デフォルトの名無しさん
09/01/04 13:01:07
a = (
{'a':'b'}
)
for row in a:
print row
これだと、{'a','b'}でなく、'a'が表示されます。
a = (
{'a':'b'},
)
これだと、ちゃんと{'a':'b'}と表示されます。
これは何故でしょうか?
56:デフォルトの名無しさん
09/01/04 13:09:38
pythonでは1要素のタプルを記述するには
(x,)のように末尾のカンマが要るんだよ
>>> (1+2)*3
9
>>> (1+2,)*3
(3, 3, 3)
上の式のカッコがタプルだと思われても困るだろう?
57:デフォルトの名無しさん
09/01/04 13:18:48
なるほど
ありがとうございました
58:デフォルトの名無しさん
09/01/04 14:21:36
a = ({'a':'b'})*3
print a
a = ({'a':'b'},)*3
print a
59:デフォルトの名無しさん
09/01/04 15:38:05
>>5
for i in dict
は、for i in dict.keys()と同じだから。
60:デフォルトの名無しさん
09/01/04 16:43:35
┏━━━━━━━━━━━┓
┃ ━ ╋━╋ ╋┓┏┓ ┳┻┳┏━ ┣━┳━ ┃
┃ ━ ┏┳┓ ┃┃┗┛ ┻━┻┃ ┃ ┃ ┃
┃ ━ ┗╋┛ ┏━┓ ┃ ┣┳ ┏━╋━ ┃
┃ ━ ━╋━ ┣━┫ ━╋━┃┃ ┃ ┃ ┃
┃┏┓━╋━ ┣━┫ ┏╋┓┃┃ ━┻━╋━ ┃
┃┃┃ ┃ ┗━┛ ┃┃┃┃┃ ┃ ┃
┃┗┛━┻━ ━┛┗━ ┃┃┃┃┃ ┃ ┃
┗━━━━━━━━━━━┛
∩
〈〈〈 ヽ
〈⊃ }
(\___/) | |
( ̄l▼  ̄)! !
/ ● ● | /
/ l ___\lミ/
/▲ ( 。--。 )
/■___ (( ̄)) 新年あけましておめでとうございますーーっ!
(___)  ̄/
2009年 元旦
61:デフォルトの名無しさん
09/01/04 17:06:59
>>59嘘をかかないでください。for item in {'a':'b'}: は、'a':'b'を取り出した後自動的に'a'に加工してくれるんです
62:デフォルトの名無しさん
09/01/04 19:39:07
pythonのソースコードをsjisで書いても問題ないでしょうか?
日本語はu"ほげ"で書くので、
他言語で発生するような文字化け問題は発生しないのではと思うのですが
そのあたりどうでしょうか
63:デフォルトの名無しさん
09/01/04 19:43:58
俺はいつもsjisで書いてるよ。
64:デフォルトの名無しさん
09/01/04 19:54:22
for item in dict と for item in dict.keys() が同じになるのは、正確には 3.0 から。
2.x では dict.keys()はキーのリストを作って返すので、同じになるのは dict.iterkeys()。
でも >>61 は解らない。バイトコードで?それともC関数内で?
自動的に加工してくれるという根拠とかどこにあるのか、よければ教えてください。
65:デフォルトの名無しさん
09/01/04 19:57:14
サブクラスがオヤクラスの名前を知るにはどうすればいいのでしょうか?
class Tuple3:
def __init__(self, arg):
if isinstance(arg, Tuple3):
print 'ok'
else:
print 'ng'
class Vector3(Tuple3):
def __init__(self, arg):
Tuple3.__init__(self, arg)
と、あったとき、
vec = Vector3() --> 'ng'
vec2 = Vector3(vec)
とやった時、'ok'と表示させる事はできますか?
親クラスコンストラクタで、isinstance(arg, Vector3)と直接書けばいいのはわかるのですが、
このやり方はしたくありません。
そんな事は可能ですか?
66:デフォルトの名無しさん
09/01/04 20:01:21
必要なくね?
67:デフォルトの名無しさん
09/01/04 20:10:57
>>62
自分ひとりで同一環境で書いてる間は特に問題ない。
ブラウザからsvnレポジトリ内のソースを読む時、等
他のいろんな所とのやりとりを想定すると
ソース内には極力日本語を書かないようにするかutf-8に統一が無難。
68:デフォルトの名無しさん
09/01/04 20:31:54
>>65
どういう用途なのかわからないけど、使えそうなものをとりあえず列挙すると
issubclass
Vector3.__bases__
69:デフォルトの名無しさん
09/01/04 20:35:36
class Tuple3:
def __init__(self, arg):
if isinstance(arg, Tuple3):
print 'ok'
else:
print 'ng'
これは
class Tuple3:
def __init__(self, arg):
if self.__class is Tuple3:
print 'ok'
else:
print 'ng'
がいいんだろう
70:デフォルトの名無しさん
09/01/04 20:58:24
main.py
/hoge/
- __init__.py
- test.py
をmain.py内で、
import hoge
した場合、test.pyはimportされないのですか?
71:デフォルトの名無しさん
09/01/04 21:05:05
何に使うのかまだ解ってないけど、
やりたい事ってもしかして、コレ?
class Tuple3:
def __init__(self, arg=None):
if isinstance(arg, self.__class__):
print "ok"
else:
print "ng"
72:デフォルトの名無しさん
09/01/04 21:06:47
>>70
パッケージは、__init__.py内で明示的にimportしない限り、
import hogeでimportされるのは hoge/__init__.pyのみ。
73:デフォルトの名無しさん
09/01/04 23:21:00
import hoge.test
74:デフォルトの名無しさん
09/01/04 23:44:04
馬鹿ばっかり、ってことが証明されたなあ、このスレ。
75:デフォルトの名無しさん
09/01/04 23:59:00
馬鹿ばっかり、ってことが証明されたなあ、このスレ。
76:デフォルトの名無しさん
09/01/05 00:58:39
真面目にやれ
77:デフォルトの名無しさん
09/01/05 00:59:54
姑息なことすんな
78:デフォルトの名無しさん
09/01/05 01:02:07
くだすれの方が盛り上がってるな
79:デフォルトの名無しさん
09/01/05 01:24:52
sageないし草いし死ねば良いのに
80:デフォルトの名無しさん
09/01/05 01:48:12
2chで死ねは挨拶みたいなもんだ罠
81:デフォルトの名無しさん
09/01/05 02:32:13
[ANN] PyYAML Python 3 対応
----
yaml_make.py
----
import os, sys, yaml
def make(target):
makefile = os.path.join(os.getcwd(),'Makefile.yaml')
exec (yaml.load(open(makefile))) in vars()
if __name__ == '__main__':
make(sys.argv[1])
----
Makefile.yaml
----
hello: |
print "Hello"
test: |
print "Test"
PythonソースをYAML内に書くときのサンプル。
| がないと、関数・クラス定義する時に : が YAMLでの辞書のキー定義と解釈される。
82:デフォルトの名無しさん
09/01/05 09:40:31
そういうのは公式言ってみるからどうでもいいよ
83:デフォルトの名無しさん
09/01/06 04:37:22
15-20% average speedup on pybench and pystone
URLリンク(bugs.python.org)
84:デフォルトの名無しさん
09/01/07 10:39:49
numpyはsageに吸収されてしまうのだろうか
85:デフォルトの名無しさん
09/01/07 23:22:47
年明け首吊り失敗して顔酷いことなってるよ俺。首にアザできて外でれねえw
86:デフォルトの名無しさん
09/01/07 23:44:14
このご時世たくさん人をやとっちゃった会社は大変だね。
この状況で独立するバカは中央線を止めないようにね。
87:デフォルトの名無しさん
09/01/08 12:30:28
ま、会社が潰れるのは虚業だったことの証明なんだろうけどね。
年末が一つの山だったみたいだな。
次は年度末の3月が山だと思うよ。
88:デフォルトの名無しさん
09/01/08 12:39:13
コネない人間には虚業自体できないから
景気も関係ないんじゃないの
89:デフォルトの名無しさん
09/01/08 14:29:34
有名なpythonistaって誰?
90:デフォルトの名無しさん
09/01/08 15:16:19
guido
91:デフォルトの名無しさん
09/01/08 15:37:57
>>90
それ神様
92:デフォルトの名無しさん
09/01/08 15:49:59
Eric Steven Raymond
Peter Norvig
93:デフォルトの名無しさん
09/01/08 15:58:46
Matz
94:デフォルトの名無しさん
09/01/08 16:00:20
Ruby
95:デフォルトの名無しさん
09/01/08 19:36:53
>>93,94
もしかして: David Mertz と Sam Ruby
96:デフォルトの名無しさん
09/01/08 19:57:01
Tim Barners Lee
97:デフォルトの名無しさん
09/01/08 22:19:20
Matz
98:デフォルトの名無しさん
09/01/08 22:32:14
Notz
99:デフォルトの名無しさん
09/01/09 13:05:18
日本人では
100:デフォルトの名無しさん
09/01/09 13:47:21
俺
101:デフォルトの名無しさん
09/01/10 00:03:14
Jim Huguninは、pythonistaだと思う。
102:デフォルトの名無しさん
09/01/10 00:42:45
>>99
Matz
103:デフォルトの名無しさん
09/01/10 03:15:28
西尾さん以外ありえないだろ。
104:デフォルトの名無しさん
09/01/10 04:22:41
以下、Python系本の著者の話題が続くとさ
105:デフォルトの名無しさん
09/01/10 07:10:06
Esoteric Language みたいな本を opython で出す必要は
ないよね
106:デフォルトの名無しさん
09/01/10 10:10:01
西尾さん以外ありえないだろ。
107:デフォルトの名無しさん
09/01/10 10:15:06
西尾さん以外ありえないだろ。
108:デフォルトの名無しさん
09/01/10 10:52:58
URLリンク(www.nishiohirokazu.org)
109:デフォルトの名無しさん
09/01/10 13:09:39
西尾さんって誰?
110:デフォルトの名無しさん
09/01/10 14:21:09
西尾さん以外アッーー!!
111:デフォルトの名無しさん
09/01/10 14:28:34
彼のためを思ってやってるのかも知れないけど
一般的にこういうのは迷惑なものなんだよ>javajaの人
112:デフォルトの名無しさん
09/01/10 16:25:56
>>108
吹いた
113:デフォルトの名無しさん
09/01/10 17:28:00
>>109
URLリンク(d.hatena.ne.jp)
114:デフォルトの名無しさん
09/01/10 19:11:31
知らね。
Matzと梶山民人(ninixの作者)なら知ってる。
115:デフォルトの名無しさん
09/01/10 20:32:09
いや、まて思い出した。
どう書く.orgなら知ってるのでそれ作った人か。
116:デフォルトの名無しさん
09/01/11 00:02:16
どう書く.org って Python で作られてたの?
117:デフォルトの名無しさん
09/01/11 00:21:57
Pythonとかやってるやつが売国奴だ
118:デフォルトの名無しさん
09/01/11 00:26:07
どうせWindowsやLinux上で動かすしぃ
119:FreeBSD
09/01/11 00:27:56
たまには思い出してやって下さい
120:デフォルトの名無しさん
09/01/11 00:32:38
超漢字使え
121:デフォルトの名無しさん
09/01/11 12:47:00
sageなんてもんがあるのか
検索しにくい
Pythonはじまったな
122:デフォルトの名無しさん
09/01/11 20:01:50
クラスのimport方法が分からん・・・
今同じディレクトリに以下のPythonファイルがあるんですが、
いざ「driver.py」を実行しようとすると
Traceback (most recent call last):
File "hoge.py", line 5, in <module>
obj = Hoge()
TypeError: 'module' object is not callable
ってエラーが出る。
import自体はうまく出来てるみたいなんだけど、インスタンスを作るところでエラーになってるのか・・・?
誰かPythonで自作クラスを作成&importするヒントをくださいorz
【Hoge.py】
1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*-
3
4 class Hoge:
5 def __init__( self ):
6 print("HOGE")
7
【driver.py】
1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*-
3 import Hoge
4
5 obj = Hoge()
123:デフォルトの名無しさん
09/01/11 20:04:06
>>122
【driver.py】
5 obj =Hoge.Hoge()
124:デフォルトの名無しさん
09/01/11 20:07:41
>>122
3 from Hoge import Hoge
または
3 from Hoge import *
後者はおすすめしない
125:122
09/01/11 20:12:48
>>123 >>124
動いたあああああああああああああああああああああ
ありがとう!!
でも・・・これはどういうことなの・・・?
HogeというパッケージにHogeクラスが属しているなら分かるんだけど、パッケージは作成せずに
同じディレクトリに二つのファイルを置いているだけなんだけど・・・
このあたりの動きってJavaとかPHPとはまったく別物?
126:デフォルトの名無しさん
09/01/11 20:37:21
>>125
Pythonにとって、パッケージ=ディレクトリ、モジュール=ファイルなの。
Hoge.py という名前のファイルなら、 Hoge というモジュールの中に、 Hoge という
クラスができてた。
127:デフォルトの名無しさん
09/01/11 20:45:17
>>126
何その糞言語・・・やっぱrubyに変えようかな
128:デフォルトの名無しさん
09/01/11 20:47:16
>>126
丁寧にありがとう!
なるほどそういうことか・・・
Python慣れるまで大変そうだけど、慣れればかなり便利に使えそうな気がするぜ!
129:デフォルトの名無しさん
09/01/11 20:56:37
パッケージでも
./Hoge/__init__.py に
class Fuga 書くと
from Hoge import Fuga
になるし
./Hoge/Hage.py に
class Fuga 書くと
from Hoge.Hage import Fuga
になる
130:デフォルトの名無しさん
09/01/11 20:58:54
>>127
正直Rubyよりはマシだと思う
131:デフォルトの名無しさん
09/01/11 21:19:25
結局「どちらがより優れているか」よりも「どちらがより糞でないか」で消極的に選択される
良くない選択肢のもう一方はもっと良くない選択肢かもしれない
132:デフォルトの名無しさん
09/01/11 21:46:45
MLの流れで引いたな。なんだよあれ。
133:デフォルトの名無しさん
09/01/11 22:00:02
またruby厨の釣り質問でも来たのかい?
134:デフォルトの名無しさん
09/01/11 22:40:45
Pythonのモジュールシステムは、見通しがよくて好きだけどな。
135:デフォルトの名無しさん
09/01/11 22:49:24
俺もPythonのモジュールシステムは好きだな
136:デフォルトの名無しさん
09/01/11 22:50:42
Webアプリ開発に疲れました。
クライアント側でバリデーションをしたいので、JavaScriptで書きました。
でもサーバ側でも同じチェックをしなきゃいけないので、JavaScriptで書いたのと同じ内容のをJavaとかPHPとかで書かなきゃいけない。
もうばかばかしい。
サーバ側のバリデーション用プログラムからJavaScriptのプログラムが自動的に生成されたりできませんかね。
もう両方をメンテナンスするのに疲れた。
137:デフォルトの名無しさん
09/01/11 22:55:43
>>136
誤爆?
発想は逆だけど、JavaScriptをサーバ側で動かすAptana JaxerっていうAPサーバ?があるよ
まぁ、そういった面倒なものはフレームワークとかにそれ相応の機能があるんだけどね。
PHPのZendFrameworkならフレームワークの一部分のみ使えたりするから試してみたら?
138:デフォルトの名無しさん
09/01/11 22:56:15
よく知らんけど
ASP.NETとかその辺の高級な奴ならクライアントサイドバリデーションのコードを
自動生成してくれるんでなかったか
139:デフォルトの名無しさん
09/01/12 00:35:52
>>138
そうだよ
だけど結局手作業は残る
Don't repeat yourself! なんて夢のまた夢
140:デフォルトの名無しさん
09/01/12 00:45:40
>>137
いえ、誤爆じゃないです。
Python使いならわかってもらえると思って&&Pythonスレなら会社のやつに見つからないだろうと思って。
Djangoとかでクライアント側のバリデーションをしたい場合はどうするんでしょうか。
Djangoとしては特に支援機能はない?詳しくないので教えてちょーだい。
141:デフォルトの名無しさん
09/01/12 00:51:30
こちらでどうぞ
スレリンク(php板)
142:デフォルトの名無しさん
09/01/12 01:31:51
pydocすげぇ!!
HTMLに出力したらさらにすげぇ!
・・・見安すぎて逆になんだかなぁ
143:デフォルトの名無しさん
09/01/12 01:39:46
javadocすげぇ!!
HTMLに出力したらさらにすげぇ!
・・・見安すぎて逆になんだかなぁ
144:デフォルトの名無しさん
09/01/12 01:54:25
rubydocすげぇ!!
HTMLに出力したらさらにすげぇ!
・・・見安すぎて逆になんだかなぁ
145:デフォルトの名無しさん
09/01/12 02:01:01
phpdocすげぇ!!
HTMLに出力したらさらにすげぇ!
・・・見安すぎて逆になんだかなぁ
146:デフォルトの名無しさん
09/01/12 02:59:28
こちらでどうぞ
スレリンク(php板)
147:デフォルトの名無しさん
09/01/12 11:15:44
どうにも.orgってイカメンファッカーがダンジョーで作ってるんですね。
148:デフォルトの名無しさん
09/01/12 17:29:35
今、PYTHONクイックリファレンス買っても意味あるかな?
149:デフォルトの名無しさん
09/01/12 20:01:12
LinuxでPythonするのに、IDLEみたいな開発環境ないかな?
150:デフォルトの名無しさん
09/01/12 20:21:02
>>149
NetBeans
151:デフォルトの名無しさん
09/01/12 21:28:16
eclipseか、>>150だな。
他のだと日本語を入力してもうまく出ないし、
そもそもlatin-1でコードが書かれてるのを前提としてるのばかりだからなぁ
152:デフォルトの名無しさん
09/01/13 10:09:23
>>149
python.el
153:デフォルトの名無しさん
09/01/13 10:36:07
>>149
Kdevelop
154:デフォルトの名無しさん
09/01/13 10:50:13
>>149
komodoEditor
155:デフォルトの名無しさん
09/01/13 11:21:58
emacs
156:デフォルトの名無しさん
09/01/13 15:09:47
>>149
IDLE
157:デフォルトの名無しさん
09/01/13 18:29:30
出来ました。
ありがとうございました。
158:149
09/01/13 18:35:31
皆さんありがとうございます。
NetBeansは扱いやすいですねw
159:149
09/01/13 18:37:02
皆さんありがとうございます。
NetBeansは扱いやすいですねw
160:デフォルトの名無しさん
09/01/13 18:49:26
あいかわらずここは粘着がわいてるのかよ。
161:デフォルトの名無しさん
09/01/13 23:00:27
greenletとかいうのを今日はじめて知ったけど、なかなか楽しいね
StacklessPython風のコルーチンをCPythonに取り込むライブラリなんだが
Windows + VC9 + Python2.6で試してみたらあっさりクラッシュしたけど
URLリンク(codespeak.net)
にあるように、Stacklessのヘッダ(switch_x86_msvc.h)をコピってきて
ビルドしたら動いた
162:デフォルトの名無しさん
09/01/13 23:37:28
併せてeventletもどうぞ。
winで動くかは分からんが。
163:デフォルトの名無しさん
09/01/13 23:50:26
>>162
実はeventletも試したんだけど、posix専用のsystemcallを結構使っているんで、
結構弄らないと使えないっぽいですね
164:デフォルトの名無しさん
09/01/14 14:43:35
a = ['aho<>baka', 'chinco<>manco']
b = ['boku', 'kimi']
c = []
X = 0
for i in a:
c += [{}]
Y = 0
for f in i.split('<>'):
c[X][b[Y]] = f
Y += 1
X += 1
これだとX,Yがなんだか汚らしいのですが、なんとか綺麗にできませんか?
165:デフォルトの名無しさん
09/01/14 15:09:15
a = ['aho<>baka', 'chinco<>manco']
b = ['boku', 'kimi']
aa = [s.split("<>") for s in a]
c = [dict(zip(b, ai)) for ai in aa]
こんなのはどうだろう
166:デフォルトの名無しさん
09/01/14 15:11:29
for X, i in enumerate(a):
c += [{}]
for Y, f in enumerate(i.split('<>')):
c[X][b[Y]] = f
とか
167:デフォルトの名無しさん
09/01/14 15:11:50
c = [dict(zip(b, i.split("<>"))) for i in a]
168:デフォルトの名無しさん
09/01/14 15:37:44
('<>')
かえるさんこんにちは。
169:デフォルトの名無しさん
09/01/14 18:34:17
>>164
for i, X in zip(a, range(len(a))):
c += [{}]
for f, Y in zip(i.split('<>'), range(len(i.split('<>'))):
c[X][b[Y]] = f
170:デフォルトの名無しさん
09/01/14 22:02:23
ていうかIDLEはLinuxでも使えるだろ。
ほとんどのディストリでは標準インストールされてないけど。
171:デフォルトの名無しさん
09/01/14 22:23:00
python入ってれば、
$ python -m idlelib.idle &
でidleが立ち上がると思う
172:デフォルトの名無しさん
09/01/15 06:36:35
>>164
CSV -> Database みたいな用途?
だったら多分、辞書よりnamedtupleの方が扱いやすい。(2.6以降)
a = ['AAA<>BBB','CCC<>DDD']
b = ['A', 'B']
from collections import namedtuple
record = namedtuple('record', b)
delimiter = '<>'
maxsplit = len(b) - 1
c = [record(*x.split(delimiter, maxsplit)) for x in a]
d = [x._asdict() for x in c] # 辞書に変換 if you needed a dict
173:デフォルトの名無しさん
09/01/15 06:54:46
len(i.split('<>')) -> i.count('<>')
zip/splitの組み合わせは、splitにmaxsplitを指定しないと、
想定しないデータ('<>'の数が異なる)を受け取った場合、
末尾のデータを失う可能性がある。
namedtupleの場合、
maxsplitを指定しなければ要素数が異なる場合TypeErrorが投げれる。
2.5以前なら、namedtupleをbackportするか
レコード型のクラスを定義して、コンストラクタの引数で要素数をチェック。
174:デフォルトの名無しさん
09/01/15 11:48:21
適当な class に hoge ってインスタンス変数があるかどうかって
どうやって調べるんでしたっけ?
try:
x = myclass.hoge()
except:
pass
なんてやってるけど,if myclass.exists("hoge") みたいな感じの
何かがあるんでしたっけ?
175:デフォルトの名無しさん
09/01/15 11:55:41
hasattr(myclass, "hoge")
176:デフォルトの名無しさん
09/01/15 12:40:44
myclass はクラス?それともインスタンス?
new style classの場合は、そのクラス,親クラスの__slots__を辿る。
old style classの場合は、無理。myclass.hogeがあるとしたら、それはクラス変数。
instanceなら hasattr(obj,'hoge') and not isinstance(getattr(obj,'hoge'),types.MethodType)
177:デフォルトの名無しさん
09/01/15 13:26:41
あ インスタンスのつもりでした
なので hasattr が探していたものでした
thx です
178:デフォルトの名無しさん
09/01/15 23:29:17
WAVE DASH - FULLWIDTH TILDE問題
に対応するライブラリとかない?
179:デフォルトの名無しさん
09/01/15 23:42:29
なにそれおいしいの?
180:デフォルトの名無しさん
09/01/16 00:12:44
独断と偏見で選ぶ血液型別おすすめスクリプト言語
A型
Python
B型
Perl
O型
Ruby
AB型
NASM
181:デフォルトの名無しさん
09/01/16 00:46:26
独断と偏見で選ぶ血液型別おすすめスクリプト言語
A型
PHP
B型
ひまわり
O型
C#
AB型
SmallTalk
182:デフォルトの名無しさん
09/01/16 01:03:32
>>180
B型ですがPerlは構文的に脳が受け付けないです
Rubyは生理的にMatzを受け付けない
やっぱりおっPython!
183:デフォルトの名無しさん
09/01/16 01:07:44
PHPが好きなO型です。
最近のイスラエル情勢に不満を覚え、PHPの利用をやめます!
184:デフォルトの名無しさん
09/01/16 01:27:35
>>178
普通に unicode オブジェクトの translate() メソッドでいいのでは?
スレリンク(tech板:491番)
185:161
09/01/16 03:03:39
>>184
その書込み僕のだ、懐かしいな
186:デフォルトの名無しさん
09/01/16 07:31:42
>>178
ありますよ
187:デフォルトの名無しさん
09/01/16 10:23:17
>>178
まさか知らないの?
188:デフォルトの名無しさん
09/01/16 10:39:51
>>180 >>181
おまえらあんまABバカにすんなよこら
189:デフォルトの名無しさん
09/01/16 10:46:50
>>182
同じく (Rhマイナスだけど) B型ですがPerlは構文的に脳が受け付けないです。
ちなみにスクリプト言語どれやってみようか最後まで Python と迷ったのは Haskell というやつです。
190:デフォルトの名無しさん
09/01/16 10:47:57
>>180
>B型
>Perl
だが断る!
191:デフォルトの名無しさん
09/01/16 10:48:46
Haskellはスクリプト言語じゃねえだろ
192:デフォルトの名無しさん
09/01/16 11:03:46
>>185
このスレの161を踏んだ者だが……
紛らわしいのでやめてくれ
193:デフォルトの名無しさん
09/01/16 13:55:50
>>180 O型馬鹿にするな
194:デフォルトの名無しさん
09/01/16 13:58:57
A型はJavaじゃね?型宣言とかしたそう。
B型はマンプス。
AB型がPython。宣言はしないけど、型にうっさいという
O型はC。
195:デフォルトの名無しさん
09/01/16 14:05:09
>191
一応インタプリタもあるでよ
196:デフォルトの名無しさん
09/01/16 14:56:19
日本限定でいえば
人口比的にAB型がPythonだな
俺もAB型だし
A型はJavaScriptでいいよ
197:デフォルトの名無しさん
09/01/16 17:14:47
その年の、ある月の日数を取得するにはどうすればいいんでしょうか
たとえば、2019年の2月の日数は○○日みたいな感じのです
198:デフォルトの名無しさん
09/01/16 17:23:31
>>> from datetime import *
>>> (date(2008, 3, 1) - date(2008, 2, 1)).days
29
>>> (date(2009, 3, 1) - date(2009, 2, 1)).days
28
199:デフォルトの名無しさん
09/01/16 17:24:33
calendar.monthrange
200:デフォルトの名無しさん
09/01/16 17:27:51
# URLリンク(www.python.jp)
>>> import calendar
>>> calendar.monthrange(2019, 2)
(4, 28) # 曜日,日数
201:デフォルトの名無しさん
09/01/16 18:32:45
199,200 >>>> 越えられない壁 >>>> 198
202:デフォルトの名無しさん
09/01/16 19:29:36
>>149-156
結局どれが一番お勧めなの?
ステップライン実行デバックができるのがいいな
203:デフォルトの名無しさん
09/01/16 19:33:11
>>202
Wing IDE
204:デフォルトの名無しさん
09/01/16 21:07:10
その年の、ある月の末日を取得するにはどうすればいいんでしょうか
たとえば、2000年の2月の末日は28日みたいな感じのです
205:デフォルトの名無しさん
09/01/16 21:31:27
>>199-200を再読してください
なお2000年は閏年ですので2月の末日は29日です
206:デフォルトの名無しさん
09/01/16 22:36:49
ドラマのブラッディーマンデイで主人公がputhon多様していたみたいだが、
彼が使っていたエディタはなにかわかるひといる?
URLリンク(imagepot.net)
207:デフォルトの名無しさん
09/01/16 22:51:13
vimじゃん
208:デフォルトの名無しさん
09/01/16 23:25:13
>>207 はあ?
わかるひといます?
209:デフォルトの名無しさん
09/01/16 23:41:10
vimだろ
210:デフォルトの名無しさん
09/01/16 23:42:08
俺AB型だからPythonに惹かれたのか。
211:デフォルトの名無しさん
09/01/16 23:42:31
どう見ても vim だな。
212:デフォルトの名無しさん
09/01/16 23:52:00
gvimだな
213:デフォルトの名無しさん
09/01/16 23:54:44
俺O型だけど
214:デフォルトの名無しさん
09/01/17 00:15:05
>>206
フォントかっこいいな。なんてやつ?
215:デフォルトの名無しさん
09/01/17 01:38:47
>>214
このフォントのどこが格好いいんだ
アンチエイリアスが中途半端で汚いじゃない
216:デフォルトの名無しさん
09/01/17 01:58:36
これビットマップフォントだぞ
217:デフォルトの名無しさん
09/01/17 02:19:17
はあ?かっこいいといってるだろ。
なにこれ?
218:デフォルトの名無しさん
09/01/17 02:28:15
はあ?
219:デフォルトの名無しさん
09/01/17 03:48:25
うんこレンダリングフォント
ulf
220:デフォルトの名無しさん
09/01/17 06:27:30
>>206
1-6行目不明
7行目以降
try: host,frm,to=sys.argv[1:4]
except ValueError:
print 'Usage: %s <host> <from> <to>' % (sys.argv[0])
sys.exit(1)
print 'Connecting to %:25 ...' % (host)
sock = socket.socket()
try: idx = host.index(':')
except ValueError: addr = (host, 25)
else: addr = [host[:idx], int(host[idx+1:])]
sock.connect(addr)
print 'Connected'
1-6行目わかる?
221:デフォルトの名無しさん
09/01/17 06:33:51
import socket
import sys
あとコメントが数行入って終了じゃないか
222:デフォルトの名無しさん
09/01/17 07:14:08
本物のハッカーならGPLが書いてあるはず
223:デフォルトの名無しさん
09/01/17 07:23:49
>>222
本物のハッカーの多くは、GPLみたいな自由度の低い
ライセンスは採用しないよ。
彼等は単に何も書かないか(こっちの方が多い)、
MITやBSDライセンスにしてることだろう。
224:デフォルトの名無しさん
09/01/17 07:26:49
25って決め打ちなんか
225:デフォルトの名無しさん
09/01/17 12:18:38
>>220
普通にこれで使えるな
226:デフォルトの名無しさん
09/01/17 13:18:20
print 25のとこおかしいね。
227:デフォルトの名無しさん
09/01/17 13:19:10
これで女子高生にvim使いが増える!
228:デフォルトの名無しさん
09/01/17 14:58:57
>>226
元の画像には%sになってたからただの写し間違いだと思うが
host="hoge.fuga:587"
とかだったときにやっぱり表示は変になるね
229:デフォルトの名無しさん
09/01/17 15:00:35
1行目は #!/usr/bin/env python だと予想。
230:デフォルトの名無しさん
09/01/17 16:10:24
1. #!/usr/bin/env python
2. '''hogehoge
3. fugafuga
4. '''
5. import socket
6. import sys
でFA?
231:デフォルトの名無しさん
09/01/17 16:14:28
1. #!/usr/bin/env python
2. # -*- coding: hoge -*-
3.
4. import socket
5. import sys
6.
232:デフォルトの名無しさん
09/01/17 16:25:29
>>231
それっぽいw
233:デフォルトの名無しさん
09/01/17 16:58:53
PEP8守ってないから訓練されたPythonistaじゃないな
234:デフォルトの名無しさん
09/01/17 18:54:52
パイソニスタじゃなくてパイソニアンがいい
235:デフォルトの名無しさん
09/01/17 19:03:38
Pythonista, Pythonian, Pythonese, Pythonist, Pythoner
どれでも好きなのを選ぶといい
236:デフォルトの名無しさん
09/01/17 19:06:40
日本語なら「Py使い」でいいでしょ。
237:デフォルトの名無しさん
09/01/17 19:15:42
お、py使い
238:デフォルトの名無しさん
09/01/17 20:18:26
訓練されてないのは、盲py
239:デフォルトの名無しさん
09/01/17 20:51:27
PEP8守って書き直すとどうなりますか
240:38
09/01/18 16:23:33
へんじがない、ただのぱいそにすたのようだ
241:デフォルトの名無しさん
09/01/18 22:58:52
URLリンク(www.dotup.org)
PEP3を出来る限り守ったらこんな変なコードになってしまったんですが
どうすればいいですか?
242:241
09/01/18 22:59:26
PEP3じゃなくてPEP8でした
243:デフォルトの名無しさん
09/01/19 00:01:43
geditかこれ
244:デフォルトの名無しさん
09/01/19 00:24:11
ただものじゃないEmEditorです
245:デフォルトの名無しさん
09/01/19 00:28:20
どうすればいいですか?
246:デフォルトの名無しさん
09/01/19 00:31:27
一見して>>241のどこがヘンなのかわからなかったw
Lispならカッコは右下に連打するだろうな、とは思ったが……
一行79文字縛りがキツい、という話?
247:デフォルトの名無しさん
09/01/19 00:40:05
はい…
248:デフォルトの名無しさん
09/01/19 00:40:11
>>246
変じゃないなら別にいいです
249:デフォルトの名無しさん
09/01/19 00:42:41
>>241
正規表現を事前にコンパイルしてre.subの引数を減らせばいいんじゃね?
250:デフォルトの名無しさん
09/01/19 00:50:41
入れ子のre.subの呼び出しを、複数の文に分ければいいと思うよ
x = re.sub(a, re.sub(b, c, d), x)
みたいなのを
y = re.sub(b, c, d)
x = re.sub(a, y, x)
と書く
どうせ一行に収まらないのなら、入れ子で書いても読みにくくなってるだけでしょ
「流れるインタフェース」でもないのだし
251:デフォルトの名無しさん
09/01/19 01:40:56
まともな回答はありません‥
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5368日前に更新/69 KB
担当:undef