5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

Pythonのお勉強 Part31

1 :デフォルトの名無しさん:2009/01/01(木) 23:44:57
Pythonオフィシャルサイト
http://www.python.org/
日本Pythonユーザ会
http://www.python.jp/Zope/
まとめWiki
http://python.rdy.jp/
関連スレ
http://find.2ch.net/?BBS=ALL&TYPE=TITLE&STR=python
前スレ
http://pc11.2ch.net/test/read.cgi/tech/1226830195/

2 :デフォルトの名無しさん:2009/01/01(木) 23:46:20

┌──────────────────┐
|                              |
│            _  ∩             |
│          ( ゚∀゚)彡 おっぱい!     |
│          (  ⊂彡   おっぱい!    .|
│           |   |            |
│           し ⌒J              |
│                              |
│         Now Oppaing. ....          .|
│                              |
│   そのままおっぱいでお待ちください。  |
|                              |
└──────────────────┘

3 :デフォルトの名無しさん:2009/01/02(金) 00:06:47
ペニス

4 :デフォルトの名無しさん:2009/01/02(金) 00:14:20
>>1
おつぱいそん

5 :!omikuji !dama:2009/01/02(金) 05:14:01
乙py

6 :初心者:2009/01/02(金) 08:55:53
パイパン初心者です。こんなスレがあるなんて今日初めて知りました。


7 :初心者:2009/01/02(金) 13:50:22
Rubyこそが史上最強の言語であると思ってますが、パイパンがんばります!

8 :デフォルトの名無しさん:2009/01/02(金) 17:00:37
>>7
そうだね、ハルマゲドンはすぐそこまで来ているよね。

9 :デフォルトの名無しさん:2009/01/02(金) 17:37:39
またruby厨の自演がはじまった

10 :デフォルトの名無しさん:2009/01/02(金) 18:29:45
>>1
おっぱいそん!

11 :デフォルトの名無しさん:2009/01/02(金) 21:24:05
>>1
π乙

12 :デフォルトの名無しさん:2009/01/02(金) 21:41:13
刑務所でも使えるRubyに感謝

13 :デフォルトの名無しさん:2009/01/02(金) 22:52:59
だれか、pythonのスクリプトを難読化する
ツールを僕に紹介してちょんまげ

14 :デフォルトの名無しさん:2009/01/02(金) 23:12:04
誰もお前の糞なスクリプトなんて読まないから安心汁

15 :デフォルトの名無しさん:2009/01/02(金) 23:46:31
つ perl

16 :デフォルトの名無しさん:2009/01/03(土) 00:25:01
つ Grass

17 :デフォルトの名無しさん:2009/01/03(土) 01:17:47
.pyc

18 :デフォルトの名無しさん:2009/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 :デフォルトの名無しさん:2009/01/03(土) 02:12:42
>>18の訂正
execも関数になるんだっけ。exec -> exec(...)

20 :デフォルトの名無しさん:2009/01/03(土) 02:24:15
他に、codec使う方法もある。

# -*- coding: rot13 -*-

cevag('Uryyb, jbeyq!')

21 :デフォルトの名無しさん:2009/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 :デフォルトの名無しさん:2009/01/03(土) 05:18:43
j.__class__.__dict__

23 :デフォルトの名無しさん:2009/01/03(土) 07:51:16
dir
inspect.getmembers

24 :デフォルトの名無しさん:2009/01/03(土) 08:03:27
__class__.__dict__ にある関数はインスタンスと関連付けされてない点に注意。
a.__dict__['fuga'](j, 0) # 引数 self にあたる部分を自分で渡す必要がある
恐らくやりたいことは、dir(instance) で調べて、getattr(j, 'fuga')(0)



25 :デフォルトの名無しさん:2009/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 :デフォルトの名無しさん:2009/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 :デフォルトの名無しさん:2009/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 :デフォルトの名無しさん:2009/01/03(土) 12:20:06
もしかしてpythonのソースをYAMLだけで書いて
exec使わずに実行とか出来るんですか

29 :デフォルトの名無しさん:2009/01/03(土) 18:02:59
>>28
exec使わずに実行て?

普通、言語のインスペクトではメソッドの中身とか取れないのが普通。
JavaScriptはソースが見れたっけ?

Pythonでの話に戻すけど、ソースコードをparserモジュールで構文木にして、
その構文木をソースとして実行とかできるのかな。やってみたことないけど。

30 :デフォルトの名無しさん:2009/01/03(土) 18:10:04
rubyなら出来ますよ

31 :デフォルトの名無しさん:2009/01/03(土) 18:12:40
そうだね、神の名はエホバだね。

32 :デフォルトの名無しさん:2009/01/03(土) 19:02:45
はあ?

33 :デフォルトの名無しさん:2009/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 :デフォルトの名無しさん:2009/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 :デフォルトの名無しさん:2009/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 :デフォルトの名無しさん:2009/01/03(土) 22:08:25
>>35
やばい。目から鱗どころじゃないっす。。
マップをつくるなんて、、。
しかも、以前valuesだったものをkeyにして、、なんて思いも浮かばなかった。
ありがとうございます!
しかし、実質1行とは。。予想以上でした。

これより最短はないですね。
ありがとうございます!

37 :デフォルトの名無しさん:2009/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 :デフォルトの名無しさん:2009/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:2009/01/03(土) 22:31:06
一行で書けるのか
代入せずに新しくリストを作ればいいのか
勉強になるなあ

40 :デフォルトの名無しさん:2009/01/03(土) 22:34:06
ああー 最後はtrans.list1じゃなくてs

41 :38:2009/01/03(土) 22:38:56
transpose関数ももmapsではなくmpsですねサーセン

42 :37:2009/01/03(土) 22:41:40
カウントとか効率悪そうだし
foo関数定義した意味がわからないな
駄コード書いて反省してます
すみませんでした

43 :37:2009/01/03(土) 22:59:21
ちょっと増やすだけで破綻するし
駄目すぎるな


44 :デフォルトの名無しさん:2009/01/03(土) 23:28:11
setでよかったのか
考えて損した
一から勉強し直そう

45 :デフォルトの名無しさん:2009/01/04(日) 01:04:26
>>27
細かいとこだけど。それだと class b(a) の後に class a を定義しているので
偶然前に定義した class a が残っていただけで、意図したテストになっていないはず。
後、クラス名はなるべく頭に大文字を使おう。

hige, hoge はクラス変数になっているので、
fuga をインスタンス作らずに呼び出したいなら、@classmethod
インスタンス変数にしたい場合コンストラクタ(__init__メソッド)内でhige,hogeを作る。



46 :デフォルトの名無しさん:2009/01/04(日) 01:49:36
なんぞこれ

47 :デフォルトの名無しさん:2009/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 :デフォルトの名無しさん:2009/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:2009/01/04(日) 03:32:08
>>38
ありがとう
知りませんでした

50 :38:2009/01/04(日) 03:33:58
ああー
>>48ですー

51 :デフォルトの名無しさん:2009/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 :デフォルトの名無しさん:2009/01/04(日) 05:41:17
くだらないコードばっかだな

53 :デフォルトの名無しさん:2009/01/04(日) 10:28:37
掲示板作ったよ。
なんかホールとか発見したら教えてね。
しばらくしたら忘れてね。
http://rail.s4.pf-x.net/bbs/

54 :デフォルトの名無しさん:2009/01/04(日) 11:54:39
161さんごぶさたです

55 :デフォルトの名無しさん:2009/01/04(日) 13:01:07
a = (
{'a':'b'}
)

for row in a:
print row

これだと、{'a','b'}でなく、'a'が表示されます。

a = (
{'a':'b'},
)

これだと、ちゃんと{'a':'b'}と表示されます。
これは何故でしょうか?

56 :デフォルトの名無しさん:2009/01/04(日) 13:09:38
pythonでは1要素のタプルを記述するには
(x,)のように末尾のカンマが要るんだよ

>>> (1+2)*3
9
>>> (1+2,)*3
(3, 3, 3)

上の式のカッコがタプルだと思われても困るだろう?


57 :デフォルトの名無しさん:2009/01/04(日) 13:18:48
なるほど
ありがとうございました

58 :デフォルトの名無しさん:2009/01/04(日) 14:21:36
a = ({'a':'b'})*3
print a
a = ({'a':'b'},)*3
print a


59 :デフォルトの名無しさん:2009/01/04(日) 15:38:05
>>5
for i in dict
は、for i in dict.keys()と同じだから。

60 :デフォルトの名無しさん:2009/01/04(日) 16:43:35
┏━━━━━━━━━━━━━━━━━━━━━┓
┃ ━ ╋━╋ ╋┓┏┓ ┳┻┳┏━   ┣━┳━ ┃
┃ ━ ┏┳┓ ┃┃┗┛ ┻━┻┃     ┃  ┃   ┃
┃ ━ ┗╋┛  ┏━┓    ┃  ┣┳   ┏━╋━ ┃
┃ ━ ━╋━  ┣━┫  ━╋━┃┃   ┃  ┃   ┃
┃┏┓━╋━  ┣━┫  ┏╋┓┃┃ ━┻━╋━ ┃
┃┃┃  ┃    ┗━┛  ┃┃┃┃┃       ┃   ┃
┃┗┛━┻━ ━┛┗━ ┃┃┃┃┃       ┃   ┃
┗━━━━━━━━━━━━━━━━━━━━━┛
            ∩
            〈〈〈 ヽ
           〈⊃  }
   (\___/)  |   |
 ( ̄l▼      ̄)!   !
  /  ●   ● |   /
  /   l ___\lミ/
 /▲  (  。--。 )
/■___  (( ̄))    新年あけましておめでとうございますーーっ!
(___)   ̄/
               2009年 元旦

61 :デフォルトの名無しさん:2009/01/04(日) 17:06:59
>>59嘘をかかないでください。for item in {'a':'b'}: は、'a':'b'を取り出した後自動的に'a'に加工してくれるんです

62 :デフォルトの名無しさん:2009/01/04(日) 19:39:07
pythonのソースコードをsjisで書いても問題ないでしょうか?
日本語はu"ほげ"で書くので、
他言語で発生するような文字化け問題は発生しないのではと思うのですが
そのあたりどうでしょうか

63 :デフォルトの名無しさん:2009/01/04(日) 19:43:58
俺はいつもsjisで書いてるよ。

64 :デフォルトの名無しさん:2009/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 :デフォルトの名無しさん:2009/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 :デフォルトの名無しさん:2009/01/04(日) 20:01:21
必要なくね?

67 :デフォルトの名無しさん:2009/01/04(日) 20:10:57
>>62
自分ひとりで同一環境で書いてる間は特に問題ない。

ブラウザからsvnレポジトリ内のソースを読む時、等
他のいろんな所とのやりとりを想定すると
ソース内には極力日本語を書かないようにするかutf-8に統一が無難。



68 :デフォルトの名無しさん:2009/01/04(日) 20:31:54
>>65
どういう用途なのかわからないけど、使えそうなものをとりあえず列挙すると
issubclass
Vector3.__bases__



69 :デフォルトの名無しさん:2009/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 :デフォルトの名無しさん:2009/01/04(日) 20:58:24
main.py
/hoge/
- __init__.py
- test.py

をmain.py内で、

import hoge

した場合、test.pyはimportされないのですか?

71 :デフォルトの名無しさん:2009/01/04(日) 21:05:05
何に使うのかまだ解ってないけど、
やりたい事ってもしかして、コレ?

class Tuple3:
  def __init__(self, arg=None):
    if isinstance(arg, self.__class__):
      print "ok"
    else:
      print "ng"



72 :デフォルトの名無しさん:2009/01/04(日) 21:06:47
>>70
パッケージは、__init__.py内で明示的にimportしない限り、
import hogeでimportされるのは hoge/__init__.pyのみ。

73 :デフォルトの名無しさん:2009/01/04(日) 23:21:00
import hoge.test


74 :デフォルトの名無しさん:2009/01/04(日) 23:44:04
馬鹿ばっかり、ってことが証明されたなあ、このスレ。

75 :デフォルトの名無しさん:2009/01/04(日) 23:59:00
馬鹿ばっかり、ってことが証明されたなあ、このスレ。

76 :デフォルトの名無しさん:2009/01/05(月) 00:58:39
真面目にやれ

77 :デフォルトの名無しさん:2009/01/05(月) 00:59:54
姑息なことすんな

78 :デフォルトの名無しさん:2009/01/05(月) 01:02:07
くだすれの方が盛り上がってるな

79 :デフォルトの名無しさん:2009/01/05(月) 01:24:52
sageないし草いし死ねば良いのに

80 :デフォルトの名無しさん:2009/01/05(月) 01:48:12
2chで死ねは挨拶みたいなもんだ罠

81 :デフォルトの名無しさん:2009/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 :デフォルトの名無しさん:2009/01/05(月) 09:40:31
そういうのは公式言ってみるからどうでもいいよ

83 :デフォルトの名無しさん:2009/01/06(火) 04:37:22
15-20% average speedup on pybench and pystone
http://bugs.python.org/issue4753

84 :デフォルトの名無しさん:2009/01/07(水) 10:39:49
numpyはsageに吸収されてしまうのだろうか

85 :デフォルトの名無しさん:2009/01/07(水) 23:22:47
年明け首吊り失敗して顔酷いことなってるよ俺。首にアザできて外でれねえw

86 :デフォルトの名無しさん:2009/01/07(水) 23:44:14
このご時世たくさん人をやとっちゃった会社は大変だね。
この状況で独立するバカは中央線を止めないようにね。

87 :デフォルトの名無しさん:2009/01/08(木) 12:30:28
ま、会社が潰れるのは虚業だったことの証明なんだろうけどね。

年末が一つの山だったみたいだな。
次は年度末の3月が山だと思うよ。

88 :デフォルトの名無しさん:2009/01/08(木) 12:39:13
コネない人間には虚業自体できないから
景気も関係ないんじゃないの

89 :デフォルトの名無しさん:2009/01/08(木) 14:29:34
有名なpythonistaって誰?

90 :デフォルトの名無しさん:2009/01/08(木) 15:16:19
guido

91 :デフォルトの名無しさん:2009/01/08(木) 15:37:57
>>90
それ神様

92 :デフォルトの名無しさん:2009/01/08(木) 15:49:59
Eric Steven Raymond
Peter Norvig


93 :デフォルトの名無しさん:2009/01/08(木) 15:58:46
Matz

94 :デフォルトの名無しさん:2009/01/08(木) 16:00:20
Ruby

95 :デフォルトの名無しさん:2009/01/08(木) 19:36:53
>>93,94
もしかして: David Mertz と Sam Ruby

96 :デフォルトの名無しさん:2009/01/08(木) 19:57:01
Tim Barners Lee

97 :デフォルトの名無しさん:2009/01/08(木) 22:19:20
Matz

98 :デフォルトの名無しさん:2009/01/08(木) 22:32:14
Notz

99 :デフォルトの名無しさん:2009/01/09(金) 13:05:18
日本人では

100 :デフォルトの名無しさん:2009/01/09(金) 13:47:21


101 :デフォルトの名無しさん:2009/01/10(土) 00:03:14
Jim Huguninは、pythonistaだと思う。

102 :デフォルトの名無しさん:2009/01/10(土) 00:42:45
>>99
Matz

103 :デフォルトの名無しさん:2009/01/10(土) 03:15:28
西尾さん以外ありえないだろ。

104 :デフォルトの名無しさん:2009/01/10(土) 04:22:41
以下、Python系本の著者の話題が続くとさ

105 :デフォルトの名無しさん:2009/01/10(土) 07:10:06
Esoteric Language みたいな本を opython で出す必要は
ないよね

106 :デフォルトの名無しさん:2009/01/10(土) 10:10:01
西尾さん以外ありえないだろ。


107 :デフォルトの名無しさん:2009/01/10(土) 10:15:06
西尾さん以外ありえないだろ。

108 :デフォルトの名無しさん:2009/01/10(土) 10:52:58
ttp://www.nishiohirokazu.org/blog/2007/02/grinedit_6.html

109 :デフォルトの名無しさん:2009/01/10(土) 13:09:39
西尾さんって誰?

110 :デフォルトの名無しさん:2009/01/10(土) 14:21:09
西尾さん以外アッーー!!

111 :デフォルトの名無しさん:2009/01/10(土) 14:28:34
彼のためを思ってやってるのかも知れないけど
一般的にこういうのは迷惑なものなんだよ>javajaの人

112 :デフォルトの名無しさん:2009/01/10(土) 16:25:56
>>108

吹いた

113 :デフォルトの名無しさん:2009/01/10(土) 17:28:00
>>109
http://d.hatena.ne.jp/nishiohirokazu/20090109

114 :デフォルトの名無しさん:2009/01/10(土) 19:11:31
知らね。
Matzと梶山民人(ninixの作者)なら知ってる。

115 :デフォルトの名無しさん:2009/01/10(土) 20:32:09
いや、まて思い出した。
どう書く.orgなら知ってるのでそれ作った人か。

116 :デフォルトの名無しさん:2009/01/11(日) 00:02:16
どう書く.org って Python で作られてたの?

117 :デフォルトの名無しさん:2009/01/11(日) 00:21:57
Pythonとかやってるやつが売国奴だ

118 :デフォルトの名無しさん:2009/01/11(日) 00:26:07
どうせWindowsやLinux上で動かすしぃ

119 :FreeBSD:2009/01/11(日) 00:27:56
たまには思い出してやって下さい


120 :デフォルトの名無しさん:2009/01/11(日) 00:32:38
超漢字使え

121 :デフォルトの名無しさん:2009/01/11(日) 12:47:00
sageなんてもんがあるのか
検索しにくい
Pythonはじまったな

122 :デフォルトの名無しさん:2009/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 :デフォルトの名無しさん:2009/01/11(日) 20:04:06
>>122
【driver.py】
5 obj =Hoge.Hoge()


124 :デフォルトの名無しさん:2009/01/11(日) 20:07:41
>>122
3 from Hoge import Hoge
または
3 from Hoge import *
後者はおすすめしない

125 :122:2009/01/11(日) 20:12:48
>>123 >>124

動いたあああああああああああああああああああああ

ありがとう!!

でも・・・これはどういうことなの・・・?

HogeというパッケージにHogeクラスが属しているなら分かるんだけど、パッケージは作成せずに
同じディレクトリに二つのファイルを置いているだけなんだけど・・・

このあたりの動きってJavaとかPHPとはまったく別物?

126 :デフォルトの名無しさん:2009/01/11(日) 20:37:21
>>125
Pythonにとって、パッケージ=ディレクトリ、モジュール=ファイルなの。
Hoge.py という名前のファイルなら、 Hoge というモジュールの中に、 Hoge という
クラスができてた。

127 :デフォルトの名無しさん:2009/01/11(日) 20:45:17
>>126
何その糞言語・・・やっぱrubyに変えようかな

128 :デフォルトの名無しさん:2009/01/11(日) 20:47:16
>>126
丁寧にありがとう!
なるほどそういうことか・・・

Python慣れるまで大変そうだけど、慣れればかなり便利に使えそうな気がするぜ!

129 :デフォルトの名無しさん:2009/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 :デフォルトの名無しさん:2009/01/11(日) 20:58:54
>>127
正直Rubyよりはマシだと思う

131 :デフォルトの名無しさん:2009/01/11(日) 21:19:25
結局「どちらがより優れているか」よりも「どちらがより糞でないか」で消極的に選択される
良くない選択肢のもう一方はもっと良くない選択肢かもしれない

132 :デフォルトの名無しさん:2009/01/11(日) 21:46:45
MLの流れで引いたな。なんだよあれ。

133 :デフォルトの名無しさん:2009/01/11(日) 22:00:02
またruby厨の釣り質問でも来たのかい?

134 :デフォルトの名無しさん:2009/01/11(日) 22:40:45
Pythonのモジュールシステムは、見通しがよくて好きだけどな。

135 :デフォルトの名無しさん:2009/01/11(日) 22:49:24
俺もPythonのモジュールシステムは好きだな

136 :デフォルトの名無しさん:2009/01/11(日) 22:50:42
Webアプリ開発に疲れました。
クライアント側でバリデーションをしたいので、JavaScriptで書きました。
でもサーバ側でも同じチェックをしなきゃいけないので、JavaScriptで書いたのと同じ内容のをJavaとかPHPとかで書かなきゃいけない。
もうばかばかしい。

サーバ側のバリデーション用プログラムからJavaScriptのプログラムが自動的に生成されたりできませんかね。
もう両方をメンテナンスするのに疲れた。

137 :デフォルトの名無しさん:2009/01/11(日) 22:55:43
>>136
誤爆?

発想は逆だけど、JavaScriptをサーバ側で動かすAptana JaxerっていうAPサーバ?があるよ
まぁ、そういった面倒なものはフレームワークとかにそれ相応の機能があるんだけどね。

PHPのZendFrameworkならフレームワークの一部分のみ使えたりするから試してみたら?

138 :デフォルトの名無しさん:2009/01/11(日) 22:56:15
よく知らんけど
ASP.NETとかその辺の高級な奴ならクライアントサイドバリデーションのコードを
自動生成してくれるんでなかったか

139 :デフォルトの名無しさん:2009/01/12(月) 00:35:52
>>138
そうだよ
だけど結局手作業は残る
Don't repeat yourself! なんて夢のまた夢

140 :デフォルトの名無しさん:2009/01/12(月) 00:45:40
>>137
いえ、誤爆じゃないです。
Python使いならわかってもらえると思って&&Pythonスレなら会社のやつに見つからないだろうと思って。

Djangoとかでクライアント側のバリデーションをしたい場合はどうするんでしょうか。
Djangoとしては特に支援機能はない?詳しくないので教えてちょーだい。

141 :デフォルトの名無しさん:2009/01/12(月) 00:51:30
こちらでどうぞ
http://pc11.2ch.net/test/read.cgi/php/1156612854/

142 :デフォルトの名無しさん:2009/01/12(月) 01:31:51
pydocすげぇ!!
HTMLに出力したらさらにすげぇ!

・・・見安すぎて逆になんだかなぁ

143 :デフォルトの名無しさん:2009/01/12(月) 01:39:46
javadocすげぇ!!
HTMLに出力したらさらにすげぇ!

・・・見安すぎて逆になんだかなぁ

144 :デフォルトの名無しさん:2009/01/12(月) 01:54:25
rubydocすげぇ!!
HTMLに出力したらさらにすげぇ!

・・・見安すぎて逆になんだかなぁ

145 :デフォルトの名無しさん:2009/01/12(月) 02:01:01
phpdocすげぇ!!
HTMLに出力したらさらにすげぇ!

・・・見安すぎて逆になんだかなぁ


146 :デフォルトの名無しさん:2009/01/12(月) 02:59:28
こちらでどうぞ
http://pc11.2ch.net/test/read.cgi/php/1156612854/

147 :デフォルトの名無しさん:2009/01/12(月) 11:15:44
どうにも.orgってイカメンファッカーがダンジョーで作ってるんですね。

148 :デフォルトの名無しさん:2009/01/12(月) 17:29:35
今、PYTHONクイックリファレンス買っても意味あるかな?

149 :デフォルトの名無しさん:2009/01/12(月) 20:01:12
LinuxでPythonするのに、IDLEみたいな開発環境ないかな?

150 :デフォルトの名無しさん:2009/01/12(月) 20:21:02
>>149
NetBeans

151 :デフォルトの名無しさん:2009/01/12(月) 21:28:16
eclipseか、>>150だな。
他のだと日本語を入力してもうまく出ないし、
そもそもlatin-1でコードが書かれてるのを前提としてるのばかりだからなぁ

152 :デフォルトの名無しさん:2009/01/13(火) 10:09:23
>>149
python.el

153 :デフォルトの名無しさん:2009/01/13(火) 10:36:07
>>149
Kdevelop

154 :デフォルトの名無しさん:2009/01/13(火) 10:50:13
>>149
komodoEditor

155 :デフォルトの名無しさん:2009/01/13(火) 11:21:58
emacs

156 :デフォルトの名無しさん:2009/01/13(火) 15:09:47
>>149
IDLE

157 :デフォルトの名無しさん:2009/01/13(火) 18:29:30
出来ました。
ありがとうございました。

158 :149:2009/01/13(火) 18:35:31
皆さんありがとうございます。
NetBeansは扱いやすいですねw

159 :149:2009/01/13(火) 18:37:02
皆さんありがとうございます。
NetBeansは扱いやすいですねw

160 :デフォルトの名無しさん:2009/01/13(火) 18:49:26
あいかわらずここは粘着がわいてるのかよ。

161 :デフォルトの名無しさん:2009/01/13(火) 23:00:27
greenletとかいうのを今日はじめて知ったけど、なかなか楽しいね
StacklessPython風のコルーチンをCPythonに取り込むライブラリなんだが

Windows + VC9 + Python2.6で試してみたらあっさりクラッシュしたけど
ttps://codespeak.net/issue/py-dev/issue65
にあるように、Stacklessのヘッダ(switch_x86_msvc.h)をコピってきて
ビルドしたら動いた

162 :デフォルトの名無しさん:2009/01/13(火) 23:37:28
併せてeventletもどうぞ。
winで動くかは分からんが。

163 :デフォルトの名無しさん:2009/01/13(火) 23:50:26
>>162
実はeventletも試したんだけど、posix専用のsystemcallを結構使っているんで、
結構弄らないと使えないっぽいですね

164 :デフォルトの名無しさん:2009/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 :デフォルトの名無しさん:2009/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 :デフォルトの名無しさん:2009/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 :デフォルトの名無しさん:2009/01/14(水) 15:11:50
c = [dict(zip(b, i.split("<>"))) for i in a]

168 :デフォルトの名無しさん:2009/01/14(水) 15:37:44
('<>')
かえるさんこんにちは。

169 :デフォルトの名無しさん:2009/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 :デフォルトの名無しさん:2009/01/14(水) 22:02:23
ていうかIDLEはLinuxでも使えるだろ。
ほとんどのディストリでは標準インストールされてないけど。

171 :デフォルトの名無しさん:2009/01/14(水) 22:23:00
python入ってれば、
$ python -m idlelib.idle &
でidleが立ち上がると思う

172 :デフォルトの名無しさん:2009/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 :デフォルトの名無しさん:2009/01/15(木) 06:54:46
len(i.split('<>')) -> i.count('<>')

zip/splitの組み合わせは、splitにmaxsplitを指定しないと、
想定しないデータ('<>'の数が異なる)を受け取った場合、
末尾のデータを失う可能性がある。

namedtupleの場合、
maxsplitを指定しなければ要素数が異なる場合TypeErrorが投げれる。

2.5以前なら、namedtupleをbackportするか
レコード型のクラスを定義して、コンストラクタの引数で要素数をチェック。

174 :デフォルトの名無しさん:2009/01/15(木) 11:48:21
適当な class に hoge ってインスタンス変数があるかどうかって
どうやって調べるんでしたっけ?

try:
x = myclass.hoge()
except:
pass

なんてやってるけど,if myclass.exists("hoge") みたいな感じの
何かがあるんでしたっけ?

175 :デフォルトの名無しさん:2009/01/15(木) 11:55:41
hasattr(myclass, "hoge")

176 :デフォルトの名無しさん:2009/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 :デフォルトの名無しさん:2009/01/15(木) 13:26:41
あ インスタンスのつもりでした

なので hasattr が探していたものでした

thx です

178 :デフォルトの名無しさん:2009/01/15(木) 23:29:17
WAVE DASH - FULLWIDTH TILDE問題
に対応するライブラリとかない?

179 :デフォルトの名無しさん:2009/01/15(木) 23:42:29
なにそれおいしいの?

180 :デフォルトの名無しさん:2009/01/16(金) 00:12:44
独断と偏見で選ぶ血液型別おすすめスクリプト言語

A型
Python

B型
Perl

O型
Ruby

AB型
NASM


181 :デフォルトの名無しさん:2009/01/16(金) 00:46:26
独断と偏見で選ぶ血液型別おすすめスクリプト言語

A型
PHP

B型
ひまわり

O型
C#

AB型
SmallTalk

182 :デフォルトの名無しさん:2009/01/16(金) 01:03:32
>>180
B型ですがPerlは構文的に脳が受け付けないです
Rubyは生理的にMatzを受け付けない
やっぱりおっPython!

183 :デフォルトの名無しさん:2009/01/16(金) 01:07:44
PHPが好きなO型です。
最近のイスラエル情勢に不満を覚え、PHPの利用をやめます!

184 :デフォルトの名無しさん:2009/01/16(金) 01:27:35
>>178
普通に unicode オブジェクトの translate() メソッドでいいのでは?
http://pc11.2ch.net/test/read.cgi/tech/1218155094/491


185 :161:2009/01/16(金) 03:03:39
>>184
その書込み僕のだ、懐かしいな

186 :デフォルトの名無しさん:2009/01/16(金) 07:31:42
>>178
ありますよ

187 :デフォルトの名無しさん:2009/01/16(金) 10:23:17
>>178
まさか知らないの?

188 :デフォルトの名無しさん:2009/01/16(金) 10:39:51
>>180 >>181
おまえらあんまABバカにすんなよこら

189 :デフォルトの名無しさん:2009/01/16(金) 10:46:50
>>182
同じく (Rhマイナスだけど) B型ですがPerlは構文的に脳が受け付けないです。
ちなみにスクリプト言語どれやってみようか最後まで Python と迷ったのは Haskell というやつです。

190 :デフォルトの名無しさん:2009/01/16(金) 10:47:57
>>180
>B型
>Perl
だが断る!


191 :デフォルトの名無しさん:2009/01/16(金) 10:48:46
Haskellはスクリプト言語じゃねえだろ

192 :デフォルトの名無しさん:2009/01/16(金) 11:03:46
>>185
このスレの161を踏んだ者だが……
紛らわしいのでやめてくれ

193 :デフォルトの名無しさん:2009/01/16(金) 13:55:50
>>180 O型馬鹿にするな

194 :デフォルトの名無しさん:2009/01/16(金) 13:58:57
A型はJavaじゃね?型宣言とかしたそう。
B型はマンプス。
AB型がPython。宣言はしないけど、型にうっさいという
O型はC。

195 :デフォルトの名無しさん:2009/01/16(金) 14:05:09
>191
一応インタプリタもあるでよ

196 :デフォルトの名無しさん:2009/01/16(金) 14:56:19
日本限定でいえば
人口比的にAB型がPythonだな
俺もAB型だし

A型はJavaScriptでいいよ

197 :デフォルトの名無しさん:2009/01/16(金) 17:14:47
その年の、ある月の日数を取得するにはどうすればいいんでしょうか
たとえば、2019年の2月の日数は○○日みたいな感じのです

198 :デフォルトの名無しさん:2009/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 :デフォルトの名無しさん:2009/01/16(金) 17:24:33
calendar.monthrange

200 :デフォルトの名無しさん:2009/01/16(金) 17:27:51
# http://www.python.jp/doc/release/lib/module-calendar.html
>>> import calendar
>>> calendar.monthrange(2019, 2)
(4, 28) # 曜日,日数

201 :デフォルトの名無しさん:2009/01/16(金) 18:32:45
199,200 >>>> 越えられない壁 >>>> 198

202 :デフォルトの名無しさん:2009/01/16(金) 19:29:36
>>149-156
結局どれが一番お勧めなの?
ステップライン実行デバックができるのがいいな


203 :デフォルトの名無しさん:2009/01/16(金) 19:33:11
>>202
Wing IDE

204 :デフォルトの名無しさん:2009/01/16(金) 21:07:10
その年の、ある月の末日を取得するにはどうすればいいんでしょうか
たとえば、2000年の2月の末日は28日みたいな感じのです


205 :デフォルトの名無しさん:2009/01/16(金) 21:31:27
>>199-200を再読してください
なお2000年は閏年ですので2月の末日は29日です

206 :デフォルトの名無しさん:2009/01/16(金) 22:36:49
ドラマのブラッディーマンデイで主人公がputhon多様していたみたいだが、
彼が使っていたエディタはなにかわかるひといる?
ttp://imagepot.net/view/123211290262.jpg

207 :デフォルトの名無しさん:2009/01/16(金) 22:51:13
vimじゃん

208 :デフォルトの名無しさん:2009/01/16(金) 23:25:13
>>207 はあ?

わかるひといます?

209 :デフォルトの名無しさん:2009/01/16(金) 23:41:10
vimだろ

210 :デフォルトの名無しさん:2009/01/16(金) 23:42:08
俺AB型だからPythonに惹かれたのか。

211 :デフォルトの名無しさん:2009/01/16(金) 23:42:31
どう見ても vim だな。

212 :デフォルトの名無しさん:2009/01/16(金) 23:52:00
gvimだな

213 :デフォルトの名無しさん:2009/01/16(金) 23:54:44
俺O型だけど

214 :デフォルトの名無しさん:2009/01/17(土) 00:15:05
>>206
フォントかっこいいな。なんてやつ?

215 :デフォルトの名無しさん:2009/01/17(土) 01:38:47
>>214
このフォントのどこが格好いいんだ
アンチエイリアスが中途半端で汚いじゃない

216 :デフォルトの名無しさん:2009/01/17(土) 01:58:36
これビットマップフォントだぞ

217 :デフォルトの名無しさん:2009/01/17(土) 02:19:17
はあ?かっこいいといってるだろ。
なにこれ?

218 :デフォルトの名無しさん:2009/01/17(土) 02:28:15
はあ?

219 :デフォルトの名無しさん:2009/01/17(土) 03:48:25
うんこレンダリングフォント
ulf

220 :デフォルトの名無しさん:2009/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 :デフォルトの名無しさん:2009/01/17(土) 06:33:51
import socket
import sys

あとコメントが数行入って終了じゃないか

222 :デフォルトの名無しさん:2009/01/17(土) 07:14:08
本物のハッカーならGPLが書いてあるはず

223 :デフォルトの名無しさん:2009/01/17(土) 07:23:49
>>222
本物のハッカーの多くは、GPLみたいな自由度の低い
ライセンスは採用しないよ。

彼等は単に何も書かないか(こっちの方が多い)、
MITやBSDライセンスにしてることだろう。

224 :デフォルトの名無しさん:2009/01/17(土) 07:26:49
25って決め打ちなんか

225 :デフォルトの名無しさん:2009/01/17(土) 12:18:38
>>220
普通にこれで使えるな

226 :デフォルトの名無しさん:2009/01/17(土) 13:18:20
print 25のとこおかしいね。

227 :デフォルトの名無しさん:2009/01/17(土) 13:19:10
これで女子高生にvim使いが増える!

228 :デフォルトの名無しさん:2009/01/17(土) 14:58:57
>>226
元の画像には%sになってたからただの写し間違いだと思うが
host="hoge.fuga:587"
とかだったときにやっぱり表示は変になるね

229 :デフォルトの名無しさん:2009/01/17(土) 15:00:35
1行目は #!/usr/bin/env python だと予想。

230 :デフォルトの名無しさん:2009/01/17(土) 16:10:24
1. #!/usr/bin/env python
2. '''hogehoge
3. fugafuga
4. '''
5. import socket
6. import sys

でFA?

231 :デフォルトの名無しさん:2009/01/17(土) 16:14:28
1. #!/usr/bin/env python
2. # -*- coding: hoge -*-
3.
4. import socket
5. import sys
6.

232 :デフォルトの名無しさん:2009/01/17(土) 16:25:29
>>231
それっぽいw

233 :デフォルトの名無しさん:2009/01/17(土) 16:58:53
PEP8守ってないから訓練されたPythonistaじゃないな

234 :デフォルトの名無しさん:2009/01/17(土) 18:54:52
パイソニスタじゃなくてパイソニアンがいい

235 :デフォルトの名無しさん:2009/01/17(土) 19:03:38
Pythonista, Pythonian, Pythonese, Pythonist, Pythoner
どれでも好きなのを選ぶといい

236 :デフォルトの名無しさん:2009/01/17(土) 19:06:40
日本語なら「Py使い」でいいでしょ。

237 :デフォルトの名無しさん:2009/01/17(土) 19:15:42
お、py使い

238 :デフォルトの名無しさん:2009/01/17(土) 20:18:26
訓練されてないのは、盲py

239 :デフォルトの名無しさん:2009/01/17(土) 20:51:27
PEP8守って書き直すとどうなりますか

240 :38:2009/01/18(日) 16:23:33
へんじがない、ただのぱいそにすたのようだ

241 :デフォルトの名無しさん:2009/01/18(日) 22:58:52
ttp://www.dotup.org/uploda/www.dotup.org17528.png
PEP3を出来る限り守ったらこんな変なコードになってしまったんですが
どうすればいいですか?

242 :241:2009/01/18(日) 22:59:26
PEP3じゃなくてPEP8でした

243 :デフォルトの名無しさん:2009/01/19(月) 00:01:43
geditかこれ

244 :デフォルトの名無しさん:2009/01/19(月) 00:24:11
ただものじゃないEmEditorです

245 :デフォルトの名無しさん:2009/01/19(月) 00:28:20
どうすればいいですか?

246 :デフォルトの名無しさん:2009/01/19(月) 00:31:27
一見して>>241のどこがヘンなのかわからなかったw
Lispならカッコは右下に連打するだろうな、とは思ったが……

一行79文字縛りがキツい、という話?

247 :デフォルトの名無しさん:2009/01/19(月) 00:40:05
はい…

248 :デフォルトの名無しさん:2009/01/19(月) 00:40:11
>>246
変じゃないなら別にいいです

249 :デフォルトの名無しさん:2009/01/19(月) 00:42:41
>>241
正規表現を事前にコンパイルしてre.subの引数を減らせばいいんじゃね?

250 :デフォルトの名無しさん:2009/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 :デフォルトの名無しさん:2009/01/19(月) 01:40:56
まともな回答はありません‥

252 :デフォルトの名無しさん:2009/01/19(月) 04:19:25
)に違和感

253 :デフォルトの名無しさん:2009/01/19(月) 04:40:45
>>241
うわっ、汚い。。。
普通は re_subs みたいな関数書いて、順にre.subが適用されるようにする。
あと、そのエディター酷いね。。色付けすらちゃんとされてないじゃん。


254 :241:2009/01/19(月) 04:50:38
>>253
そのカンスゥー貼って下さい…

255 :デフォルトの名無しさん:2009/01/19(月) 05:16:45
>>254
そのぐらい自分で書けないと。
初心者レベルの難易度だよ。

256 :デフォルトの名無しさん:2009/01/19(月) 08:15:14
>>255
あのー、かんすーお願いします‥
なぜPythonスレの人たちはレベル低いのだろう

257 :デフォルトの名無しさん:2009/01/19(月) 08:40:29
お前のレベルが低いだけ

258 :デフォルトの名無しさん:2009/01/19(月) 08:41:27
お前のレベルが低いだけ

259 :デフォルトの名無しさん:2009/01/19(月) 08:44:36
>>256
知能低いのかね。小学生でも書けそうな関数だとおもうが。

260 :デフォルトの名無しさん:2009/01/19(月) 14:35:17
あの、カンスゥーまだですか・・・?

261 :デフォルトの名無しさん:2009/01/19(月) 18:07:26
>>260 こんなんでいいのか?
ttp://stat001.ameba.jp/user_images/cb/2d/10040538808.png

262 :デフォルトの名無しさん:2009/01/19(月) 18:07:44
http://jp.youtube.com/watch?v=LC1xSR_xxuk

263 :デフォルトの名無しさん:2009/01/19(月) 18:08:51
>>262
このカンスゥーは無表情すぎて怖い

264 :デフォルトの名無しさん:2009/01/19(月) 18:23:11
>>1の和訳チュートリヤルに嘘ばっかり書いてあるな
print 'Hello, world!'
ってやってもエラーになる
嘘ばっかだなと思って
英語のほうを見たら
print ('Hello, world!')
って書いてあったので
そのとおりやったらできた。
>>1はうそつき超汚染人だ!

265 :デフォルトの名無しさん:2009/01/19(月) 18:24:56
>>1の和訳チュートリヤルに嘘ばっかり書いてあるな
print 'Hello, world!'
ってやってもエラーになる
嘘ばっかだなと思って
英語のほうを見たら
print ('Hello, world!')
って書いてあったので
そのとおりやったらできた。
>>1はうそつき超汚染人だ!

266 :デフォルトの名無しさん:2009/01/19(月) 18:25:00
>>1の和訳チュートリヤルに嘘ばっかり書いてあるな
print 'Hello, world!'
ってやってもエラーになる
嘘ばっかだなと思って
英語のほうを見たら
print ('Hello, world!')
って書いてあったので
そのとおりやったらできた。
>>1はうそつき超汚染人だ!

267 :デフォルトの名無しさん:2009/01/19(月) 18:35:47
>>264-266
初心者丸出し

と釣られてみる

268 :デフォルトの名無しさん:2009/01/19(月) 21:01:28
初心者っていきなり 3 触るの?

269 :デフォルトの名無しさん:2009/01/19(月) 21:43:20
最新版にβとつければ初心者はさわらないかもね

270 :デフォルトの名無しさん:2009/01/19(月) 22:04:50
Python初めて1週間
3.0→2.3.4jp→2.6.1→2.5.1

271 :デフォルトの名無しさん:2009/01/19(月) 22:14:51
2.5.1→2.6.1→3.0→2.5.1→2.6.1

printが強制的にカンスゥーになってたり
rangeがオブジェクト返すようになっててちょっと困惑するんだよね

272 :デフォルトの名無しさん:2009/01/19(月) 22:52:18
printは自発的に関数になったと風の便りに聞いたよ…

273 :デフォルトの名無しさん:2009/01/19(月) 23:16:29
#2.6
x = range(100)

#3.0
x = [i for i in range(100)]

274 :デフォルトの名無しさん:2009/01/19(月) 23:34:58
list(range(100))

275 :デフォルトの名無しさん:2009/01/20(火) 00:21:09
結構変わったんだな。3は。

276 :デフォルトの名無しさん:2009/01/20(火) 01:17:08
>>273
3はなんだかちょっと面倒だなって気がしてきた

277 :デフォルトの名無しさん:2009/01/20(火) 01:19:52
志村!

278 :デフォルトの名無しさん:2009/01/20(火) 07:10:13
あのー、回答待ってるですがまだですか?
パイソンのスレッドって馬鹿しかいないなー

279 :デフォルトの名無しさん:2009/01/20(火) 08:03:22
rangeでリストを作るなんて滅多にしないだろうに。

280 :デフォルトの名無しさん:2009/01/20(火) 08:26:21
[i for i in range(100)]
に必死で突っ込むひとまだですか?

281 :デフォルトの名無しさん:2009/01/20(火) 08:35:03
ところで、2.6って2.5に対して完全に上位互換?
2.5用のライブラリで2.6で動かなくなったのってある?

282 :デフォルトの名無しさん:2009/01/20(火) 10:49:45
>>281

基本的には 2.5 -> 2.6 では減っているものはない。
The *** module has been deprecated for removal in Python 3.0.
という形で 3.0 でなくなる予定のライブラリは -3 オブションで警告がでるのみ。
実際に標準ライブラリから外されるのは 3.0 から。

但し、細部では各ライブラリのバージョン・アップによる変更があるので、
ライブラリ自体が動かなくなったものは知らないが、# >>> import test.autotest を参考に。
それを使ったコードの方で修正が必要なものはあるかもしれない。

283 :デフォルトの名無しさん:2009/01/20(火) 15:25:18
>>206
#!/usr/bin/env python
# -*- coding: ascii -*-

import socket
import sys

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 %s: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"

284 : ◆TINKO/J0J6 :2009/01/20(火) 16:54:58
import tinko

285 : ◆UNKOVIP9RM :2009/01/20(火) 16:56:15
import unko

286 :デフォルトの名無しさん:2009/01/20(火) 16:57:28
unkoはexportするものだろ

287 :デフォルトの名無しさん:2009/01/20(火) 17:56:07
from anal export unko

288 :デフォルトの名無しさん:2009/01/20(火) 17:56:14
自然数k,p,qについて
k=mp+nq(m,nは「0以上の整数」)を満たす(m,n)の組の数をv(k)とするとき
p=3, q=7, kが1から100までのときの結果vの一覧を出力したいです
どのように書いたらいいですか?


289 : ◆UNKOVIP9RM :2009/01/20(火) 17:58:02
>>288
ggks

290 :デフォルトの名無しさん:2009/01/20(火) 18:05:00
p=3
q=7
t=0
u=0
for k in range(1, 101):
v=0
for m in range(k/p+1):
if (k-m*p)%q == 0:
v+=1
print 'v(%d)=%d\n' % (k, v)
u+=v
if v:
t+=1
print 'total %d, %d\n' % (t, u)


291 :デフォルトの名無しさん:2009/01/20(火) 18:11:16
v = lambda k, p, q: \
[(m, n) for m in range(k/p + 1) for n in range(k/q + 1)
if k == m * p + n * q ]

for k in range(1, 101):
print k, '->', ', '.join(map(str, v(k, 3, 7)))


292 :291:2009/01/20(火) 18:13:44
あー計算量的に無駄なのか
まあいいや

293 :デフォルトの名無しさん:2009/01/20(火) 18:26:22
>>> p,q=3,7 ; Max=101
>>> for k in range(Max): print k, len(filter(lambda x:(k-x)>=0and(k-x)%q==0, range(0,Max,p)))
...
0 1
1 0
2 0
3 1
4 0
5 0
6 1
7 1
8 0
9 1

294 :デフォルトの名無しさん:2009/01/20(火) 18:37:45
すまん、こうだった

>>> p,q=3,7 ; Max=101
>>> for k in range(Max): print k, len(filter(lambda x:(k-x)%q==0, range(0,k+1,p)))
...
0 1
1 0
2 0
3 1
4 0
5 0
6 1
7 1
8 0
9 1

最後の len(... 以降が v みたいなもん、

295 :デフォルトの名無しさん:2009/01/20(火) 18:48:31
k=0は蛇足です

296 :デフォルトの名無しさん:2009/01/20(火) 18:51:40
>>289-
Thank you so match.

297 :デフォルトの名無しさん:2009/01/20(火) 18:56:16
>>280
待ち人来たらず

298 :デフォルトの名無しさん:2009/01/20(火) 19:11:35
p,q,d=3,7,100
for k in range(1,d+1): print k,'->',','.join(map(str,[(m/p,(k-m)/q) for m in filter(lambda x:(k-x)%q==0, range(0,k+1,p))]))
こうですか
わかりません

299 :デフォルトの名無しさん:2009/01/20(火) 19:13:47
>>283
ありがとうございました

300 :デフォルトの名無しさん:2009/01/20(火) 19:37:45
>>298
あってるっぽい気がするけど?

301 :デフォルトの名無しさん:2009/01/20(火) 19:42:11
ttp://www.toshin.com/center/sugaku-2b_mondai_6.html

302 :デフォルトの名無しさん:2009/01/20(火) 19:49:44
なるほどw

303 :デフォルトの名無しさん:2009/01/20(火) 20:16:21
python的に解くとどうなりますか?
3^(3^3)の一の位の数字は?
7^(7^7)の一の位の数字は?
13^(13^13)の一の位の数字は?
17^(17^17)の一の位の数字は?
n^(n^n)の一の位の数字は?


304 :デフォルトの名無しさん:2009/01/20(火) 20:30:34
pythonを学習しようかと考えていますが、巷で出回っているフリーの(GUI)ツール類
などはCなどで書かれていると思いますが、ptyhonでも同様のことができますか?
そこまで大規模なツールではなく簡単シンプルなツールです。
本屋でちょっと読んだ参考書にはwindows用のフォームやボタンの配置などが
書かれていなかったので、CUIのプログラミングだけかと…

305 :デフォルトの名無しさん:2009/01/20(火) 20:35:40
Tkinter, wxPython, pywin32などでぐぐれ

306 :デフォルトの名無しさん:2009/01/20(火) 20:37:08
そんなことないですよ

307 :デフォルトの名無しさん:2009/01/20(火) 20:38:38
628 名前:デフォルトの名無しさん :2009/01/20(火) 20:10:12
VB6の代わりにならないかな
VB6ユーザーには、Delphiは難し過ぎるみたいだし
PythonにVB並のRADツールを備えた統合開発環境があればいいんだけど


629 名前:デフォルトの名無しさん :2009/01/20(火) 20:20:45
そこでIronPythonですよ。


630 名前:デフォルトの名無しさん :2009/01/20(火) 20:30:35
UbuntuではNativeで動き
WindowsではVMで動くPythonキボンヌ!

308 :デフォルトの名無しさん:2009/01/20(火) 20:39:33
http://pc11.2ch.net/test/read.cgi/tech/1167996371/

309 :デフォルトの名無しさん:2009/01/20(火) 20:40:18
http://pc11.2ch.net/test/read.cgi/tech/1157686822/

310 :デフォルトの名無しさん:2009/01/20(火) 20:59:57
>>288
BASICでクソプログラム見せられたらやっぱPythonできれいに書きたくなるよね。


311 :310:2009/01/20(火) 21:01:43
俺はIIの最後で2点と統計で2点落としちまったぜ

312 :デフォルトの名無しさん:2009/01/20(火) 21:23:33
>>304
オマエが読んだクソ本を怨め

313 :デフォルトの名無しさん:2009/01/20(火) 21:38:57
from collections import defaultdict

p = 3
q = 7
d = 100
answer = defaultdict(int)

for m in xrange(d / p):
    for n in xrange(d / q):
        k = p*m + q*n
        if k > d:
            break
        answer[k] += 1
        
for k in range(d+1):
    print k, answer[k]

314 :デフォルトの名無しさん:2009/01/20(火) 22:21:03
>>303

from itertools import repeat

def _f(n):
    def _mul(n, m):
        return ((n % 10) * (m % 10)) % 10

    def _pow(n, m):
        return reduce(_mul, repeat(n, m-1), n)

    return _pow(n, _pow(n, n))


315 :314:2009/01/20(火) 22:39:22
間違えた。_powの第二引数は一の位だけじゃ駄目だ。

316 :デフォルトの名無しさん:2009/01/20(火) 22:40:16
うむ

317 :デフォルトの名無しさん:2009/01/20(火) 23:44:56
pow(n, pow(n, n), 10)

318 :デフォルトの名無しさん:2009/01/20(火) 23:49:54
>>> pow(3,pow(3,3),10)
7
>>> pow(7,pow(7,7),10)
3
>>> pow(13,pow(13,13),10)
3L
>>> pow(17,pow(17,17),10)
7L

あってる?

319 :デフォルトの名無しさん:2009/01/21(水) 00:35:03
あってるけど、
アルゴリズム的には n が大きいときの pow(n, n) が課題。



320 :デフォルトの名無しさん:2009/01/21(水) 01:37:05
遅いって言っても、1000ぐらいまでなら一瞬で出るぞ

>>> i=1
>>> while 1:print i,pow(i,i**i,10);i+=1
...
1 1
2 6
3 7
4 6
5 5
6 6
7 3
8 6
9 9
10 0
11 1
12 6
13 3
14 6
...
...
...
1197 7
1198 6
1199 9
1200 0
1201 1

321 :317:2009/01/21(水) 01:57:21
nのべき乗の1の位が、ある周期で循環することを利用して指数を小さくしてみた。

# coding: utf8

def cycle(n):
    i = n*n % 10
    lst = [i]
    while n != i:
        i = i*n % 10
        lst.append(i)
    return lst

def main():
    cycles = [cycle(i) for i in xrange(10)]
    clen = [len(item) for item in cycles]

    for i in range(10):
        print i, cycles[i]
    print ""

    for n in xrange(1, 1000):
        cl = clen[n%10]
        nn = pow(n, cycles[n%10][n%cl])
        nnn1 = pow(n, nn, 10)
        print n, nnn1
        

if __name__ == '__main__':
    main()


322 :デフォルトの名無しさん:2009/01/21(水) 02:25:02
ほぼ同じことだけど、自分もやってみた、これだと、googol(=10**100)ぐらいまでは一瞬

def f(n):
    c = cycle(n,10)
    return pow(n, pow(n, n, c) or c, 10)

def cycle(n, modulo):
    s=set() ; x = n % modulo
    while x not in s: s.add(x) ; x = x * n % modulo
    return len(s)

for i in range(7):
    print i, f(10**10**i+i)

$ python 303.py
0 0
1 1
2 6
3 7
4 6
5 5
6 6

323 :デフォルトの名無しさん:2009/01/21(水) 02:28:11
http://www.kohgakusha.co.jp/books/detail/978-4-7775-1419-9


324 :デフォルトの名無しさん:2009/01/21(水) 05:39:19
>>321
そこまでたどり着けば実はpow使わなくても答え出てるんだけどね


325 :デフォルトの名無しさん:2009/01/21(水) 05:45:02
13=10+3だから、13^nの1の位は3^nの1の位と同じで4個周期。
13=12+1だから13^13を4で割った余りは1。
13^(13^13)の1の位は3^1の1の位と同じなので3。

17=10+7だから、17^nの1の位は7^nの1の位と同じで4個周期。
17=16+1だから17^17を4で割った余りは1。
17^(17^17)の1の位は7^1の1の位と同じなので7。


326 :デフォルトの名無しさん:2009/01/21(水) 08:11:54
クソ本が改訂してクソでなくなるのかな?

327 :デフォルトの名無しさん:2009/01/21(水) 09:36:24
まあ評価は見てからですかねー


328 :デフォルトの名無しさん:2009/01/21(水) 10:30:01
はじぱい 第2版 (2004/11) \5,040
http://www.amazon.co.jp/products/dp/4873112109/
はじぱい原著 3rd Edition (2008/07/16) $26.39
http://www.amazon.com/Learning-Python-3rd-Mark-Lutz/dp/0596513984/

恥ぱい 初犯 (2007/11) \1,995
http://www.amazon.co.jp/products/dp/4777513211/
恥ぱいネットワーク 初版 (2008/06) \1,995
http://www.amazon.co.jp/products/dp/4777513688/
恥ぱい3 初版 (2009/01) \1,995
http://www.kohgakusha.co.jp/books/detail/978-4-7775-1419-9
恥ぱいが3.0用になったんですね


329 :デフォルトの名無しさん:2009/01/21(水) 11:10:29
恥の上塗りというわけですね。

330 :デフォルトの名無しさん:2009/01/21(水) 11:20:55
俺もウェブの無料チュートリヤル翻訳して金稼ぎたい

331 :デフォルトの名無しさん:2009/01/21(水) 11:40:37
ライブラリレファレンスの和訳更新・改良を
ガンガンやってくれるならお布施くらいはするでよ?

332 : ◆UNKOVIP9RM :2009/01/21(水) 11:53:01
>>312
惚れた

惚れた

惚れた


できれば結婚してくれ

333 : ◆UNKOVIP9RM :2009/01/21(水) 11:54:09
>>328

買う 買うー

334 :デフォルトの名無しさん:2009/01/21(水) 11:58:54
周期が4の公約数になるのを利用するとこれでもok?
pow(n % 10, (n & 3) or 4, 10)

335 : ◆UNKOVIP9RM :2009/01/21(水) 11:59:03
>>> import >>329
>>> print (329.star())

"星3つ"

336 :デフォルトの名無しさん:2009/01/21(水) 12:08:27
>>328
はじぱいの癖に5040円って翻訳書のはじ

337 : ◆UNKOVIP9RM :2009/01/21(水) 12:18:59
>>336
円安だったんだよ

338 :デフォルトの名無しさん:2009/01/21(水) 12:55:26
>>334
>>> [pow(n % 10, (n & 3) or 4, 10) for n in xrange(20)]
[0, 1, 4, 7, 6, 5, 6, 3, 6, 9, 0, 1, 6, 3, 6, 5, 6, 7, 4, 9]

n=2と18が血がウっぽい


339 :デフォルトの名無しさん:2009/01/21(水) 13:01:34
0 1 2 3 4 5 6 7 8 9 LSD
1 1 4 4 2 1 1 4 4 2 cycle

>>334

>>> c=[(0,), (1,), (2,4,8,6,), (3,9,7,1,), (4,6,),
... (5,), (6,), (7,9,3,1,), (8,4,2,6,), (9,1,)]
>>> [c[n%10][n%len(c[n%10])-1] for n in xrange(20)]
[0, 1, 4, 7, 6, 5, 6, 3, 6, 9, 0, 1, 6, 3, 6, 5, 6, 7, 4, 9]
これで行けるかと思ったがだめだった

>>325 の余りを出してるのは 3, 7 の時だけうまくいくのかな
少なくとも 2 のときはだめみたい(なんか勘違いしている?)

>>> c=[(0,), (1,), (2,4,8,6,), (3,9,7,1,), (4,6,),
... (5,), (6,), (7,9,3,1,), (8,4,2,6,), (9,1,)]
>>> [c[n%10][(n**n)%len(c[n%10])-1] for n in xrange(20)]
[0, 1, 6, 7, 6, 5, 6, 3, 6, 9, 0, 1, 6, 3, 6, 5, 6, 7, 6, 9]

n**n をもっと計算量減らせるはず

340 :デフォルトの名無しさん:2009/01/21(水) 13:24:25
n=2 (n**n)%4=0 n%4=2 ←これが違う
n=8 (n**n)%4=0 n%4=0
n=18 (n**n)%4=0 n%4=2 ←これが違う

nが偶数のときは常に(n**n)%4=0 だからこれでよさげ

>>> c=[(0,), (1,), (2,4,8,6,), (3,9,7,1,), (4,6,),
... (5,), (6,), (7,9,3,1,), (8,4,2,6,), (9,1,)]
>>> [c[n%10][(n%len(c[n%10]) if n%2 else 0)-1] for n in xrange(20)]
[0, 1, 6, 7, 6, 5, 6, 3, 6, 9, 0, 1, 6, 3, 6, 5, 6, 7, 6, 9]


341 :デフォルトの名無しさん:2009/01/21(水) 13:31:21
>>> c=[(0,), (1,), (2,4,8,6,), (3,9,7,1,), (4,6,),
... (5,), (6,), (7,9,3,1,), (8,4,2,6,), (9,1,)]
>>> [c[n%10][(n%2)*n%len(c[n%10])-1] for n in xrange(20)]
[0, 1, 6, 7, 6, 5, 6, 3, 6, 9, 0, 1, 6, 3, 6, 5, 6, 7, 6, 9]

342 :デフォルトの名無しさん:2009/01/21(水) 13:32:49
>>333
買わなくていいよ(ww

343 :デフォルトの名無しさん:2009/01/21(水) 13:46:57
>>> c=[(0,), (1,), (2,4,8,6,), (3,9,7,1,), (4,6,),
... (5,), (6,), (7,9,3,1,), (8,4,2,6,), (9,1,)]
>>> lista=[c[n%10][(n%2)*n%len(c[n%10])-1] for n in xrange(2000)]
>>> listb=[pow(n, pow(n, n), 10) for n in xrange(2000)]
>>> m=0
>>> for k in xrange(len(lista)):
... if lista[k] == listb[k]:
... m+=1
...
>>> m
2000


344 :デフォルトの名無しさん:2009/01/21(水) 14:00:12
0, 1, 6, 7, 6, 5, 6, 3, 6, 9

0, 1, 6, 3, 6, 5, 6, 7, 6, 9
を交互に繰り返してるだけだね
2, 4, 6, 8 が全部 6 になってる
しかも 3, 7 以外はずっと固定なんだ
もっと簡単な式になりそうw

345 :デフォルトの名無しさん:2009/01/21(水) 14:12:33
正規表現で日本語にマッチする方法はありますか?

a = 'あいうえお、亜意卯得汚'
re.sub('\\x', '', a)

だと3.0はunicodeエラー、2.xはエスケープシーケンスに\xなんてないと言われます

346 :デフォルトの名無しさん:2009/01/21(水) 14:17:13
2.xなら
a = u'あいうえお、亜意卯得汚'
でうまく行くと思うけど

347 :デフォルトの名無しさん:2009/01/21(水) 14:18:33
re.sub(r'\\x', '', a)

348 :デフォルトの名無しさん:2009/01/21(水) 14:24:46
a = u'あいうえお、亜意卯得汚'
re.sub(u'[\u1000-\u9999]', '', a)

349 :デフォルトの名無しさん:2009/01/21(水) 14:25:49
re.sub(ur'\\x', '', a)

350 :デフォルトの名無しさん:2009/01/21(水) 14:30:43
>>> a=u'あいうえお、亜依鵜絵緒'
>>> print repr(re.sub(ur'[\u1000-\u9999]', u'', a)).decode('unicode_escape')
u'鵜'

>>> a='あいうえお、亜依鵜絵緒'
>>> print repr(re.sub(r'\x81', '\x92', a).decode('cp932')).decode('unicode_escape')
u'あいうえお但亜依鵜絵緒'

351 :デフォルトの名無しさん:2009/01/21(水) 14:39:25
>>345
ユニコードブロックである程度分けることができるが
記号とかもあるし
漢字系はCJKごった煮ブロックとかに入っているし
結局「日本語とは何か」という話になる

が、単に「非ASCII文字」という意味なら
[\u0100-\uffff]とかでマッチさせればいいよ

352 :デフォルトの名無しさん:2009/01/21(水) 14:39:37
>>> a = u'abcあいうえおdef亜意卯得汚ghi'
>>> print re.sub(ur'[\u1000-\u9999]', '', a)
abcdefghi

353 :351:2009/01/21(水) 14:42:32
ああごめん、[\u0080-\uffff]だな
まあ目的から言ってLatin1が入ろうが入るまいがあまり関係ないとは思うが

354 :デフォルトの名無しさん:2009/01/21(水) 22:13:00
>日本語とは何か
うまくできたら日本語ページだけぐぐって欲しいのに
中国語まで検索するグーグルに売ってやれ。

355 :デフォルトの名無しさん:2009/01/21(水) 22:37:16
>>343
盲牌損無関係雀

356 :デフォルトの名無しさん:2009/01/22(木) 00:40:01
>>345
力技だけど、日本語の文字をずらーっと列挙して日本語の1文字にマッチする正規表現を作ったらどうかな。
ためしに日本語の仮名漢字から成る正規表現を自動生成してみた(Python 3.0 使用)。
[一-丁七万-下不-与 (・・・中略・・・)齶-齷龍龕龜-龝龠ぁ-ん゛-ゞァ-ヶ・-ヾ]
みたいな長大な正規表現になったけど自動生成もマッチングも十分速いっぽい。

# -*- coding: cp932 -*-

import re

def get_japanese_charset_ranges(enc="cp932"):
  unicode_ranges = [
    range(0x4e00, 0xa000), # U+4E00 - U+9FFF CJK Unified Ideographs
    range(0x3040, 0x3100), # U+3040 - U+30FF Hiragana and Katakana
  ]
  chars = []
  for r in unicode_ranges:
    for i in r:
      try:
        chr(i).encode(enc)
      except UnicodeError:
        continue
      chars.append(i)
  buf = []
  i, end = 0, len(chars)


357 :356の続き:2009/01/22(木) 00:42:10
  while i < end:
    start = i
    while i + 1 < end and chars[i] + 1 == chars[i + 1]:
      i += 1
    if start == i:
      buf.append(chr(chars[start]))
    else:
      buf.append(chr(chars[start]) + "-" + chr(chars[i]))
    i += 1
  return "[" + "".join(buf) + "]"
japanese_charset_ranges = get_japanese_charset_ranges()
#print(japanese_charset_ranges)
#print(len(japanese_charset_ranges))
re_japanese = re.compile(japanese_charset_ranges + "+")
text = "foo漢字barテストtest"
print(re_japanese.findall(text))
print(re.findall("[\u4e00-\u9fff\u3040-\u30ff]+", text)) # 別解

実行時に自動生成するのは無駄だから、適当なモジュール名(例えば unicode_ranges) に
ja_kanji = "一-丁七万-下不-与 (・・・中略・・・)齶-齷龍龕龜-龝龠"
ja_kana = "ぁ-ん゛-ゞァ-ヶ・-ヾ"
みたいな文字列を定義しておいて
import unicode_ranges
re_japanese = re.compile("[" + unicode_ranges.ja_kanji + unicode_ranges.ja_kana + "]+")
みたいに使うといいかも。この手のモジュール、既に誰か作ってるんじゃないかなー。


358 :デフォルトの名無しさん:2009/01/22(木) 01:56:43
別解があるのに巨大正規表現を作る意味はあるんでしょうか?

359 :デフォルトの名無しさん:2009/01/22(木) 02:01:12
>ja_kanji = "一-丁七万-下不-与 (・・・中略・・・)齶-齷龍龕龜-龝龠"
>ja_kana = "ぁ-ん゛-ゞァ-ヶ・-ヾ"
>みたいな文字列を定義しておいて

japanese_charset_ranges = get_japanese_charset_ranges()

のところで
モジュールがあればそっちをimport
無ければget_japanese_charset_ranges()を実行
するように作っておけばよさそうですね

360 :デフォルトの名無しさん:2009/01/22(木) 02:03:16
モジュールがあればそっちをimport
無ければget_japanese_charset_ranges()を実行(と同時にモジュール作成)
するように作っておけばよさそうですね

361 :デフォルトの名無しさん:2009/01/22(木) 06:30:44
python でファイルの行数を知りたいときに特に正解なやり方ってありますか?

362 :デフォルトの名無しさん:2009/01/22(木) 10:53:24
>>> a=[['']*3]*3
>>> a
[['', '', ''], ['', '', ''], ['', '', '']]
>>> a[2][1]='a'
>>> a
[['', 'a', ''], ['', 'a', ''], ['', 'a', '']]

deepcopyじゃないからこうなるのは分かるのですが、
deepcopyしたいときにはどう書けば良いのでしょうか?
a=[['']*3, ['']*3, ['']*3]
しかないですか?

363 :デフォルトの名無しさん:2009/01/22(木) 11:20:23
>>361
>>> a='ag cee\nat eatunasdg\nasd\ npoig ausd laert\na;sgu asti'
>>> len(a.split('\n'))
4

364 :デフォルトの名無しさん:2009/01/22(木) 11:21:25
a = [[''] * 3 for i in range(3)]

365 :デフォルトの名無しさん:2009/01/22(木) 11:22:46
a.count('\n')+1

366 :デフォルトの名無しさん:2009/01/22(木) 11:25:18
>>364
thx!

367 :デフォルトの名無しさん:2009/01/22(木) 11:36:42
読み込み中なら。
for idx,line in enumerate(open("foo.txt")):
  lineno = idx+1

総行数
print len(list(open("foo.txt"))) # ファイルの内容全てをリストに取り込むため効率悪
print sum(1 for _ in open("foo.txt"))
print reduce(lambda counter,line: counter+1, open("foo.txt"), 0)
下2つは、行辺りの長さが大きい時の読み込みの効率に改善の余地あり。
対象のファイルによっては、wc -l 呼んだ方が早いことも。


>>362
a = [['']*3 for _ in range(3)]

368 :デフォルトの名無しさん:2009/01/22(木) 12:42:00
これって古い情報なんかな
ttp://lightson.dip.jp/zope/ZWiki/157_e3_83_95_e3_82_a1_e3_82_a4_e3_83_ab_e3_81_ae_e8_a1_8c_e6_95_b0_e3_82_92_e6_95_b0_e3_81_88_e3_82_8b

369 :デフォルトの名無しさん:2009/01/22(木) 13:01:21
↓行長やファイルサイズがデカくてもいいように書いてみたが
面倒くせ

def linecount(file):
    with closing(open(file, 'rb')) as fp:
        line = [ None ]
        def iterread():
            for x in iter(functools.partial(fp.read, 8192), ""):
                line[0] = x
                yield x
        nl = sum(s.count('\n') for s in iterread())
        if line[0][-1] != '\n': nl += 1
        return nl


370 :369:2009/01/22(木) 13:03:42
あー空ファイルだとバグるか
まあいいや

371 :369:2009/01/22(木) 13:09:49
よく考えたらわざわざgenertor使う意味もねーし……アホか俺は

def linecount(file):
    with closing(open(file, 'rb')) as fp:
        nl, line = 0, None
        for x in iter(functools.partial(fp.read, 8192), ""):
            line = x
            nl += x.count('\n')
        if line and line[-1] != '\n': nl += 1
        return nl


372 :デフォルトの名無しさん:2009/01/22(木) 14:07:23
>>371
どのぐらい頻繁に使うかによるが、
\n のカウントぐらいだったらCで書いた方がよくないか?

373 : ◆UNKOVIP9RM :2009/01/22(木) 14:30:43
>>372
変態

374 :デフォルトの名無しさん:2009/01/22(木) 16:22:51
>>371
どのぐらい頻繁に使うかによるが、
\n のカウントぐらいだったらアッセンブッラで書いた方がよくないか?

375 : ◆UNKOVIP9RM :2009/01/22(木) 16:24:45
>>374
変態

376 :デフォルトの名無しさん:2009/01/22(木) 16:55:23
>368
URLのは、書き方は違うけど>>367の一番下のに相当。
普通はこれで十分だけど、バイナリファイルを間違って読み込んでしまった場合や、
プログラムが生成したファイルなんかだと行の長さがとても長い場合があるので、
そういった例外的なケースへの対応が >>371

実装方法は幾通りかあるけど、大筋はこんな感じ。
- read(size), readline(size)等でのバッファ長を指定しての読込。
- 改行文字 CRLF,CR,LF をカウント。

>371
fileオブジェクトは、__enter__,__exit__属性持ってるのでclosing不要なはず。

377 :デフォルトの名無しさん:2009/01/22(木) 17:31:15
>> 376
メモリマップトファイル使えば?
import mmap, sys
with open(filename, 'rb') as f:
print sum(1 for c in mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ) if c == '\n')

378 :デフォルトの名無しさん:2009/01/22(木) 17:40:15
mmap()は速いが、byte単位の比較をCのコードではなくPythonがやることになるから
そんなに速くない上にサイズ制限ができるだけに見える

379 :378:2009/01/22(木) 17:45:05
count() <= Cの実装が数える
if c == '\n' <= Pythonインタプリタレベルが比較を各バイトで行う

という意味ね

380 :デフォルトの名無しさん:2009/01/22(木) 18:23:20
>> 378
64bit環境になってからアドレス空間については無頓着になってたよ。

Cの実装うんぬん、ということなら、
m = mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ)
count = 0
while m.readline():
 count += 1
みたいにやれば良いと思う。

381 :デフォルトの名無しさん:2009/01/22(木) 18:29:36
readline()使うぐらいなら>>367でよくね?

382 :デフォルトの名無しさん:2009/01/22(木) 18:36:13
>> 381
そういわれれば。うーん。

m = mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ)
count = 0
index = m.find('\n')
while index >= 0:
 count += 1
 index = m.find('\n', index + 1)
m.close()

だんだん辛くなってきた。


383 :デフォルトの名無しさん:2009/01/22(木) 18:48:58
timeit.Timer('len(open("changelog").readlines())').timeit(1000)/1000
で測ってみた。ファイルはperlのchangelogで、85000行ぐらい

0.0115 os.popenでwc
0.0141 >>371のchunk
0.0383 >>368の一番下(enumrateいらないよね)
0.0393 一行目
0.0430 >>367のsum
0.0541 >>367のreduce
0.0557 >>380のmmap
0.9 >>377のmmap

pythonは2.5

384 :デフォルトの名無しさん:2009/01/22(木) 19:07:19
なんという悲しい結末w

385 :デフォルトの名無しさん:2009/01/22(木) 19:09:33
他のプロセスを起動するオーバヘッドを考慮に入れても
Cには勝てなかったかw

386 :デフォルトの名無しさん:2009/01/22(木) 19:11:00
まあ小さいサイズならpopen()のオーバヘッドのほうが相対的に効いて来るかな

387 :デフォルトの名無しさん:2009/01/22(木) 19:15:02
>>383
よかったらpsyco使ってみてほしい

388 :デフォルトの名無しさん:2009/01/22(木) 20:57:00
>>387
頭にpsyco.full()つけた編

0.0117 wc
0.0140 chunk
0.0219 forでcount
0.0296 mmapでreadline
0.0327 readlines
0.0601 sum
0.1082 reduce
0.9691 mmapで\nを探す

あとlen([l fo l in open(file)])ってのも試してたんだが、
0.05から0.0307に高速化


389 :デフォルトの名無しさん:2009/01/22(木) 22:10:11
reduce, map, lambda 系は psyco すると遅くなるらしい

390 :デフォルトの名無しさん:2009/01/22(木) 22:13:49
len([_ for _ in open(file)])
にするとさらに速くなるんかな

391 :デフォルトの名無しさん:2009/01/22(木) 22:30:55
テキストファイルに関していえば、順当な結果だと思うけど

lenやバッファサイズ指定のないreadline(含む for _ in open(...))を利用するものの速度は、
環境(メモリ)や読み込む対象のファイルに依存するので、
巨大なバイナリファイルでも試してみてメモリの使用量も併せて較べてみよう。

メモリ使用量が一定で、計算量が ファイルサイズ/バッファサイズ に比例になっていれば及第点。


mmapのコードは、>377は単純にpythonでのループ回数が多くなるのが問題だけど、
大域変数の参照(LOAD_GLOBAL)等、繰り返し処理する上での不利な点が多いので、
ベンチマーク対策としては、m.findをローカル変数に代入や、partialを使う等、もう少し工夫の余地在。

392 :デフォルトの名無しさん:2009/01/22(木) 23:05:18
グローバル変数を使うとスパゲッティーコードになると聞いたんですが

import os
hensu = os.environ['Path']

def main():
  print hensu
  sp()
def sp():
  print hensu.split(';')



import os

def main():
  print os.environ['Path']
  sp()
def sp():
  print os.environ['Path'].split(';')

だと前者の方が変更がかなり楽になると思うんですが…

393 :デフォルトの名無しさん:2009/01/22(木) 23:25:28
def main():
 hensu = os.environ['Path']
 print hensu
 sp(hensu)
def sp(hensu):
 print hensu.split(';')

で何か不満でも?

グローバル変数を使うと
・ 処理の汎用性が低下し、融通が利かなくなる
・ 変数を変更できる範囲が大きく、デバッグ範囲が広範になる
などの問題がある。

394 :デフォルトの名無しさん:2009/01/22(木) 23:30:04
>>393
他のスクリプトでも使おうと思い main() と sp() をコピペ
→ hensu がないぞと怒られる

死ぬほど不便じゃないか

395 :デフォルトの名無しさん:2009/01/22(木) 23:36:53
そういえばurllibとかグローバル変数使ってたね
>>394は撤回します

396 :デフォルトの名無しさん:2009/01/22(木) 23:36:56
>他のスクリプトでも使おうと思い main() と sp() をコピペ

グローバル変数使ってる方がコピペ面倒だろ

397 :デフォルトの名無しさん:2009/01/22(木) 23:38:29
mainとsp()コピペすればいけるんじゃないの?

398 :デフォルトの名無しさん:2009/01/22(木) 23:40:19
>>392
うん、global変数は
[ globals().__setitem__('global_%d' % n) for n in range(100) ]
とかで書き換えられるが
locals()はリードオンリーだし
global以外の自由変数にはPython2.xでは代入できないし
osとかmainとかspってglobal変数だよな

どんどん使うといいと思うぞ

399 :デフォルトの名無しさん:2009/01/22(木) 23:42:09
>>392
至ってまともな反応だと思うよ

でも、グローバル変数は基本的に使っちゃ駄目って言われてる。
理由は>>393の言うとおりで、それぐらいのソース量だとパッと見ればどこに
定義されてて、どこでどんな風に使われてるか分かるけど、ある程度のソース量
になってくると分からなくなってくるのね。

で、>>393のような考え方が主流になって、さらにオブジェクト指向っていう考え方
が出てきた。

利便性で言えば確かにグローバル変数は使いやすいけど、バグを生む原因になり
安いから使わないほうが良いよってこと。

400 :デフォルトの名無しさん:2009/01/22(木) 23:45:24
>>396と多分>>397
たびたび申し訳ない。>>394はアンカミスなんだ
× >>393
>>392

401 :デフォルトの名無しさん:2009/01/22(木) 23:48:01
その為のオブジェクト指向。クラスにする事で、
変数の範囲を絞った上で、異なる関数から同じ変数を参照出来る。

class App(object):
  def __init__(self):
    self.hensu = os.environ['Path']
  def main(self):
    print self.hensu
    self.sp()
  def sp(self):
    print self.hensu.split(';')

App().main()

基本的に、グローバルに置いても許容されるのは、
importしたモジュールや、設定などの定数のみ。

どうしても必要な場合は、
グローバル変数の変数名は大文字にする、もしくはprefixをつけて他の変数と区別。
利用する関数内で global hensu の様に宣言しよう。(推奨)

402 :デフォルトの名無しさん:2009/01/22(木) 23:48:38
1画面に収まるようなプログラムであればグローバル変数を使う
ほうがプログラムが簡潔になる事はよくある。グローバル変数が
推奨されない理由は、大きな規模のプログラムでは全ての変数の
状態管理をするのは難しい事、それと変数名が衝突してしまうな
どの不都合があるため。

>>392はC言語でそれなりの規模のプログラムを全てグローバル変
数で管理して書いてみるといいよ

いやというほど理解できると思うよ

403 :3q1:2009/01/23(金) 00:01:52
>>393
ひきすうが多くてややこしくなったんですが…

>>394
返り血がある関数等はもちろん引数を使ってますが
普通の関数ではグローバル変数の方が楽だと思うんですが…

>>401
クラスだと、
hoge = clas()
hoge.hoge()
print hoge.hoge_value
みたいになって気持ち悪いんですが仕方ないのですかね
後、globalは関数内でのみ適応されるのでしょうか?



404 :デフォルトの名無しさん:2009/01/23(金) 00:10:44
うん、global変数はショートコーディングの友だからどんどん使うといいぞ

405 :デフォルトの名無しさん:2009/01/23(金) 00:15:32
>グローバル変数

一番の問題は、多用したときにすぐ人間の理解の限界を超えてしまうこと。
他人に読ませる気のないホビープログラミングなら好きなだけ使えばいいと思うよ。


406 :デフォルトの名無しさん:2009/01/23(金) 00:23:15
頼むからSingletonだとかいって同じクラスのインスタンス3つも
グローバル変数で定義するのやめてくれ。
Singletonはグローバル変数の免罪符じゃないからっ!

407 :デフォルトの名無しさん:2009/01/23(金) 00:25:09
Singletonはグローバル変数だよな。ぶっちゃけ。
ただ、関数を通じてアクセスする分、比較的管理はしやすい。

408 :デフォルトの名無しさん:2009/01/23(金) 00:41:27
>>392 ってグローバル変数というより、定数をプログラム全体で使いたいんじゃないの?

409 :401:2009/01/23(金) 00:48:11
>>403
変数やクラスの名前に適切な名前を付けることで、わかり易くなるよ。

グローバル変数のスコープは、Pythonの場合はモジュール(=ファイル)内
global宣言が有効なのは関数内のみ。一応、突っ込んで書いておくと、
global宣言はグローバル変数を書き換える場合のみ必要で、参照だけなら不要なんだけど、
(global変数の初期化を関数内で行う時等に利用)

と、ここまで書いて気づいた。
global宣言は、変数名衝突時に関数内からグローバル変数を変更するリスクを引き込むので不用意に宣言しちゃ駄目だ。
関数内でどれがグローバル変数か宣言してると読みやすいと思ったんだけどなぁ。
(>>401の最後の行は取消 m(_ _)

逆に言うと、(Pythonの場合)global宣言なしに不用意な名前衝突によるグローバル変数の書換は起こらないので、
数値・文字列・タプル等の参照だけなら、問題ないかなって気がしてきた。(実質、定数としての利用)


410 :392:2009/01/23(金) 00:48:41
>>408
CGI等で、ファイル名のぢctをプログラム全体で使ったり
クエリをぢctにしてプログラム全体使うのは
グローバル変数って言わないのですか?

411 :401:2009/01/23(金) 01:12:48
>>410
Pythonでは定数が無いので変数を定数として使う慣習がある。

コード上はどちらも変数なんだけど、役割によって分類すると
プログラム内で初期化以降変更されないと約束されているなら定数。
頻繁に変更される・変更される可能性があるなら変数。

412 :デフォルトの名無しさん:2009/01/23(金) 02:10:32
>>394
コードの再利用は、コピぺせずにimportして利用しよう。

413 :デフォルトの名無しさん:2009/01/23(金) 02:27:59
>>411
globalは、コピぺせずにimport globals.pyして利用しよう。

414 :デフォルトの名無しさん:2009/01/23(金) 04:03:40
>> 390
普通の変数と _ ってメモリの使い方が違うの?

415 :デフォルトの名無しさん:2009/01/23(金) 08:51:48
>>403
グローバル変数を使わない方が分かりやすいと感じない人は
結局どんな条件でも分かりやすく書けないよ。
問題を小さな複数の問題に分割できないってことだから。



416 :デフォルトの名無しさん:2009/01/23(金) 08:55:27
細かく分割し続けた先には何がある。馬鹿らしいと思わないかね!

417 :デフォルトの名無しさん:2009/01/23(金) 09:28:22
全部自分でメンテをするという気概がありかつ
ソース書いた時の約束事をずっと覚えていられるくらい
記憶力に自信があるのだったら問題ない

418 :デフォルトの名無しさん:2009/01/23(金) 12:28:24
未だにlxmlを進めずBeautifulSoup進めるやつが理解できない。
どうしてもPurePythonじゃないとダメなら仕方ないが

419 :デフォルトの名無しさん:2009/01/23(金) 12:40:30
pythonの場合、globalで修飾しないとグローバル変数は書き換えられないから定数として使う分にはアリなんじゃない?
もちろん変数名は大文字で書いてさ

420 :デフォルトの名無しさん:2009/01/23(金) 13:02:45
別に定数じゃなくても全然アリだろ

Pythonのグローバル変数は結局のところモジュールのtoplevelの定義であって
モジュール外部からの参照には名前修飾がいるし

モジュールのtoplevelで定義されたclassだのdefだのは全部グローバル変数だし

sys.argvだのsys.stdinだのsys.pathだのはグローバル変数だし

グローバル変数使わずにPythonのコード書いてみろってんだよ

421 :デフォルトの名無しさん:2009/01/23(金) 13:13:51
>>418
だって普通のxmlパーサは口うるさいんだもの
腐ってるhtml喰えるBeautifulSoupはどうしても重宝する

422 :デフォルトの名無しさん:2009/01/23(金) 13:15:06
>>421
>>418ではないが、lxmlは腐ってるHTMLも喰えるし
BeautifulSoupよりずっと高速だしElementTree互換のAPIに加えて
XPATHとかも使えてずっと高機能だよ

423 :デフォルトの名無しさん:2009/01/23(金) 13:22:54
>>421
lxml.html.soupparser


424 :421:2009/01/23(金) 13:53:15
そうなんだ。少なくとも俺は単純に知らなかっただけ
次はlxml使ってみようと思う。あんまりxmlいじる機会ないけど

425 :デフォルトの名無しさん:2009/01/23(金) 15:18:37
>>419
標準ライブラリを参考に、どういう所で使われているか適当にピックアップしてみた。
- モジュール外から参照されたくない場合 _ 接頭子をつける。(モジュール内プライベート)
- 定数。(数値、文字列、バージョン等のタプル、) 変数名は大文字で。
- キャッシュ等の用途に使う場合は、利用する関数の直前で宣言/初期化。(re.compileや辞書等)
- Singletonのインスタンス。生成するメソッドの前で宣言。変数名は _ prefix付き。
※ クラス変数にする、若しくは2.6以降ならクロージャ内に隠せる。

名前の衝突については、宣言なしに意図しない書き換えは起きないけど、
コードを読む時には混乱の元になるので、可読性の面で問題あり。変数名の運用ルールは必須。


>>420
Pythonの"グローバル変数"についてはその通り、通常、モジュール内toplevelの変数を指す事になるのだけど、
用途を無視して極論になってるよ。誰もクラス(class)やtoplevelでの関数(def)を使うなとは言ってない。

戒めるべきグローバル変数の利用は、一般に C言語等で言われているグローバル変数の乱用で、
グローバル変数を利用した関数間の値渡し等の、主にモジュール結合度の高いとされる利用法がそれに当たる。

Pythonに当てはめると、組み込み関数(__builtin__モジュール)が
どのモジュールからも名前修飾なしに使える、本当のグローバルと言う事になるけど、
通常の利用では__builtin__内を変更する事は、まずないので。そういった意味では、
モジュール内にスコープが限定される為、C言語程ナーバスになる必要はないかもしれない。
でも、比較的影響範囲が低いというだけで、用途を無視して積極的に使っていいかどうかはまた別の議論。


>>416
綺麗に構造化されたプログラムは、高い拡張性と変更に強い柔軟性を備える事になる。ソフトウェア品質の指標の一部。



426 :デフォルトの名無しさん:2009/01/23(金) 15:25:49
>>419
PEP8には書いてなかったと思うんですが
定数名は大文字で書いていいのですか?

427 :デフォルトの名無しさん:2009/01/23(金) 15:54:04
Pythonに定数なんて無いんだからどうでもいいよ

428 :デフォルトの名無しさん:2009/01/23(金) 15:59:25
string.lowercaseなんかは大文字ではないね

429 :デフォルトの名無しさん:2009/01/23(金) 17:11:06
>>426
PEP8に書いてるよ。

Constants

Constants are usually declared on a module level and written in all
capital letters with underscores separating words. Examples include
MAX_OVERFLOW and TOTAL.


430 :デフォルトの名無しさん:2009/01/23(金) 17:22:03
もしかして、和訳に載ってない?>変数の命名規則、定数について

431 :デフォルトの名無しさん:2009/01/23(金) 17:42:09
定数の記述はごく最近加えられたっぽい (Revision 68849)
http://svn.python.org/view/peps/trunk/pep-0008.txt

432 :デフォルトの名無しさん:2009/01/23(金) 18:15:37
>>431
ホントだ。追加された日付、昨日。

433 :デフォルトの名無しさん:2009/01/23(金) 18:18:47
中の人はここの住人だったんだな

434 :デフォルトの名無しさん:2009/01/23(金) 21:03:50
>>414
違わない。

リスト内包の細かな最適化では、mapにすると早くなるケースはある。

435 :デフォルトの名無しさん:2009/01/23(金) 23:14:55
おまいらグローバル変数の恐ろしさを知らないんだ・・・
名前修飾されてればいいとかそんなのどうでもいいんだよぅ
頭にg_でも付けてろっての。

436 :デフォルトの名無しさん:2009/01/23(金) 23:17:43
そんな「構造化プログラミング」とか覚えたたてのボウヤみたいな
話はしてないから安心しろ

437 :デフォルトの名無しさん:2009/01/24(土) 09:50:28
恥ぱい3立ち読みしてきた

恥ぱいは売ってなかった
(売り切れたのかあるいは新刊を売るための書店の配慮なのか・・・)
恥ぱいネットワークはネットワークほとんど関係なくね?っていう内容だし
恥ぱい3はpythonというかプログラミング自体の初心者向けなんだろうが
買いたいとは思わなかったしこれから始める人にも薦めたいとまでには至らなかった


438 :デフォルトの名無しさん:2009/01/24(土) 12:43:15
2と3の比較・注意点とかを
さっくりまとめてあるというわけでもないんかな?

439 :デフォルトの名無しさん:2009/01/24(土) 13:17:37
恥ぱいは、言ってみればオナニー本だな。
Jython本に似てる。

440 :デフォルトの名無しさん:2009/01/24(土) 14:26:31
Rubyとかに比べても日本語の本は少ないんだから無いよりはましかな
もしかしたら俺の方がもっと良いのが書けるとか売れるのが書けるとか
思って後から日本語の本が色々出版されるようになるかもしれんし

441 :デフォルトの名無しさん:2009/01/24(土) 15:35:07
>>439
恥ぱい3は python 知ってる人には不要だろうね
Jython 本は役に立たないw
恥ぱい3は初心者に少しは役に立つから Jython 本よりはお奨め

442 :デフォルトの名無しさん:2009/01/24(土) 16:45:50
じゃあ俺らでpython本出版しようぜ。
俺から行くぜ。



    もくじ

443 :デフォルトの名無しさん:2009/01/24(土) 16:49:48
著者からのメッセージ

444 :デフォルトの名無しさん:2009/01/24(土) 16:51:39
釈明

445 :デフォルトの名無しさん:2009/01/24(土) 16:54:28
ドラッグすると動くアラビア文字
عکساولپیامآپدیتدانلودمنجررانشانمیدهد
عکسدومزمانیستکهدکمهآپدیتلآپدیتاست
عکسسومپیاممیدهدکهسروربهتران

446 :デフォルトの名無しさん:2009/01/24(土) 17:12:45
>>455
なんて書いてあるのか気になる。

447 :デフォルトの名無しさん:2009/01/24(土) 17:18:04
google翻訳はアラビア語サポートしてるので、そこに入れてみたら、
ペルシア語は対応してませんと言われた。

448 :デフォルトの名無しさん:2009/01/24(土) 20:24:42
>>455に期待

449 :デフォルトの名無しさん:2009/01/24(土) 20:49:07
>>455
これは萌えるwww

450 :デフォルトの名無しさん:2009/01/24(土) 20:52:45
>>441
>恥ぱい3は python 知ってる人には不要だろうね

ではどんな人に必要だというのだ。

451 :デフォルトの名無しさん:2009/01/24(土) 21:48:12
知らない人じゃないのか?

452 :デフォルトの名無しさん:2009/01/24(土) 22:01:12
3 から Python 自体始める人向け

453 :デフォルトの名無しさん:2009/01/24(土) 22:18:21
>>455
空気読め

454 :デフォルトの名無しさん:2009/01/24(土) 22:23:50
なんでみんな未来の話してるの?

455 :454 = 446:2009/01/24(土) 22:25:29
うわあああ吊ってくるううう

456 :デフォルトの名無しさん:2009/01/24(土) 22:31:31
ここが事故現場ですか?

457 :デフォルトの名無しさん:2009/01/24(土) 22:33:27
>>456
死因は事故ではなく自殺と断定されました。

458 :デフォルトの名無しさん:2009/01/24(土) 22:38:00
>>452
トラウマになって終わりそうだな。

459 :デフォルトの名無しさん:2009/01/24(土) 22:59:12
OS再インストールしてeasy_installしたんですが
みなさん普通何インストールしていますか?
とりあえずPsycoとMakoとSQLAlchemyとsimplejsonを
インストールしましたが何かお勧めありますか?

460 :デフォルトの名無しさん:2009/01/24(土) 23:09:51
突然ですが
ttp://d.hatena.ne.jp/inopie/20080712/1215847602
にインスパイアされたのでPythonでもやってみた
import win32com.client
import re

s = win32com.client.Dispatch('SAPI.SpVoice')
vs = s.GetVoices()
voicename = ['DTalker_Taro', 'MSSam', 'LHKENJI', 'LHNAOKO']
voice = {}
for i in xrange(vs.Count):
v = vs.Item(i)
id = v.Id
print id
for n in voicename:
if re.match(r'^(.*)(%s)' % n, id):
voice[n] = v
print voice
s.Voice = voice['LHNAOKO']
s.Rate = 5
s.Speak(
u'これはPythonでSpeech APIを制御してしゃべらせています。どうでしょうか。', 1)
s.WaitUntilDone(30000)
s.Speak(u'二つ目の文です。', 2)
s.Voice = voice['MSSam']
s.Speak(u'This is sam.', 2)
s.Voice = voice['LHKENJI']
s.Speak(u'四つ目の文です。', 2)


461 :デフォルトの名無しさん:2009/01/24(土) 23:18:48
わかる

462 :デフォルトの名無しさん:2009/01/24(土) 23:22:48
>>459
easy_installで入れるのはlxmlくらいかな。
pygments,epydoc等は必要になったら入れる。source highlightとAPIdoc生成。
後は、定番 PIL,Numpy,wxPython,Twisted,ipython,
使わないけど pygame は毎回入れてしまう。

463 :デフォルトの名無しさん:2009/01/24(土) 23:28:49
>>460
実行してみようと思って気づいたんだけど、
インデントが崩れたソースってどう修正すればいいのか
わからないね・・・

464 :デフォルトの名無しさん:2009/01/24(土) 23:45:08
スレのhtmlソースにはスペース入ってる


465 :デフォルトの名無しさん:2009/01/24(土) 23:48:48
from urllib import urlopen
print list(urlopen('http://pc11.2ch.net/tech/dat/1230821097.dat'))[460-1].split('<>')[3].replace('<br>','\n')

466 :デフォルトの名無しさん:2009/01/24(土) 23:53:02
>>463
ごめん
インデント崩れたとこだけ貼り直し
for i in xrange(vs.Count):
 v = vs.Item(i)
 id = v.Id
 print id
 for n in voicename:
  if re.match(r'^(.*)(%s)' % n, id):
   voice[n] = v
print voice


467 :デフォルトの名無しさん:2009/01/25(日) 00:13:12
[space] -> &nbsp;

468 :デフォルトの名無しさん:2009/01/25(日) 00:54:37
       .

469 :デフォルトの名無しさん:2009/01/25(日) 00:59:37
>>459
simplejsonって2.6以降標準なんじゃないっけ?

470 :デフォルトの名無しさん:2009/01/25(日) 01:01:55
 でインデントすると
  コピペしたときに
   残らない?

471 :デフォルトの名無しさん:2009/01/25(日) 01:25:30
残らねーよw

472 :デフォルトの名無しさん:2009/01/25(日) 02:51:37
>>469
Yes. 名前は json で標準に入ったよ。

473 :デフォルトの名無しさん:2009/01/25(日) 12:03:56
>>469
いまだに2.5系です。すいません。

474 :デフォルトの名無しさん:2009/01/25(日) 12:04:19
>>460
うちだと'LHNAOKO'と'LHKENJI'でKeyErrorが出たので、
全部'MSSam'にしたら声が出て来ました。ところが
日本語の部分が無視されて英語部分しか発声されません。
'LHNAOKO'と'LHKENJI'は、どこで入手されました?

475 :デフォルトの名無しさん:2009/01/25(日) 12:17:47
>>460じゃないけど多分ここ
ttp://www1.bbiq.jp/kougaku/speech_reco.html
と思ったんだが
・SpeechSDK51.exe(68.0 MB)
・SpeechSDK51LangPack.exe(81.5 MB)
のリンク先が切れてる
最新は5.3らしいので探してみてください

476 :デフォルトの名無しさん:2009/01/25(日) 12:38:07
Officeのバージョンによるみたい
ttp://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1013564655
あとはこれかな
ttp://www.createsystem.co.jp/DTalkerSapi1.html
声種(SAPI4, SAPI5)
 たかし
 けいこ
 太郎
 花子
 小太郎
 はなちゃん
 ロボ太郎
 ロボ子

ttp://support.adobe.co.jp/faq/faq/qadoc.sv?224228+002
ttp://technet.microsoft.com/en-us/speechserver/bb851679.aspx
ttp://www.microsoft.com/msagent/


477 :デフォルトの名無しさん:2009/01/25(日) 12:59:37
>>475-476
ありがとうございます。!!!

Officeのセットアップ追加で「入力システムの拡張」
「音声」を選ぶとうまく行きました。
MSSamだと「Python」の発音は「パイソン」で正しかったのですが、
LHNAOKOだと「ぴちょん」になっててかわいいというかまぬけというか・・・

478 :デフォルトの名無しさん:2009/01/25(日) 17:27:23
ttp://python.rdy.jp/wiki.cgi?page=%B4%D8%CF%A2%BF%DE%BD%F1

479 :デフォルトの名無しさん:2009/01/25(日) 20:29:06
>>437
>恥ぱいネットワークはネットワークほとんど関係なくね?っていう内容だし

Python Network Programing といえばこっち
ttp://www.amazon.com/products/dp/1590593715 (2004/08/17 $36.51)
ttp://www.amazon.co.jp/products/dp/1590593715 (2004/08/30 \3,749) 値下がりしたっぽい

ttp://foma-zakki.cocolog-nifty.com/zakki/2006/09/python_python_n.html


480 :デフォルトの名無しさん:2009/01/25(日) 22:07:21
>>474
Mary & Mike
ttp://www.vector.co.jp/soft/win95/edu/se246086.html
python 関係ないけど

481 :デフォルトの名無しさん:2009/01/25(日) 22:11:58
AT&TのText-to-speechエンジンは結構綺麗だよな
電話会社だけあって
ttp://www.research.att.com/~ttsweb/tts/demo.php

Pythonには関係ないけどな

482 :デフォルトの名無しさん:2009/01/26(月) 00:33:20
SDKの生きてるリンク先見つかったので一応貼っとく
ttp://download.microsoft.com/download/speechSDK/SDK/5.1/WXP/EN-US/speechsdk51.exe
Pythonには関係ないけど

483 :デフォルトの名無しさん:2009/01/26(月) 00:41:06
python関係ないけど
http://tcts.fpms.ac.be/synthesis/mbrola.html
http://www.microsoft.com/MSAgent/

484 :デフォルトの名無しさん:2009/01/27(火) 00:54:11
pythonの無料の統合開発環境でオススメありますか?(日本語化できるもの)
OSはXPです
PyScripterはバグが多くて使い物になりませんでした
Eclipse+PyDevは重過ぎて使えません…

485 :デフォルトの名無しさん:2009/01/27(火) 01:05:36
>>484
適当なPython対応を謳ったエディタを使った方がいいと思う。

486 :デフォルトの名無しさん:2009/01/27(火) 01:41:34
SciTEが結構いい。メニュー英語だけど。
Editra にもう少しがんばってほしい。

487 :デフォルトの名無しさん:2009/01/27(火) 01:48:04
統合環境厨が定期的に湧いてくるな…

488 :デフォルトの名無しさん:2009/01/27(火) 01:54:39
>>487
草いひともよくわいてくるよね

489 :デフォルトの名無しさん:2009/01/27(火) 01:54:59
最初っからIDE使うのはやめとけ

490 :デフォルトの名無しさん:2009/01/27(火) 02:01:26
>>484
komodoEditorってのがあるよ
ただ、Eclipse程ではないけどこれも重い

491 :デフォルトの名無しさん:2009/01/27(火) 08:59:42
Eric ...は、日本語化あったっけな?
普段日本語とか気にしないからわからん。
メニューが日本語であることがそんなに大事?

492 :デフォルトの名無しさん:2009/01/27(火) 09:45:08
>>485デジャヴ

493 :デフォルトの名無しさん:2009/01/27(火) 09:57:39
ttp://jp.youtube.com/watch?v=bfgO-LXGpTM

494 :デフォルトの名無しさん:2009/01/27(火) 11:44:43
emacs、最強

495 :デフォルトの名無しさん:2009/01/27(火) 12:16:22
最強はメモ帳だろメモ帳。何たってXPに組み込まれてるだけあってどこでも使える。
俺は普段linux&vimだけど。

ところでチラ裏だけれども、vimだとコマンドモードでpythonとかrubyを実行できるんだね。
:python import urllib; print urllib.urlopen("http://www.google.co.jp").read()
みたいな感じで
emacsだとリージョンを実行できたりしたよーな

496 :デフォルトの名無しさん:2009/01/27(火) 12:42:39
vimはpythonでもvimスクリプト書けるから、
関数定義したり、それをキーに割り当てたり、自由にできる。
http://www.vim.org/htmldoc/if_pyth.html

497 :デフォルトの名無しさん:2009/01/27(火) 12:45:08
Pythonやら無い奴が一番勝ち組

498 :デフォルトの名無しさん:2009/01/27(火) 14:09:32
やらないか

499 :デフォルトの名無しさん:2009/01/27(火) 15:37:39
>>493
そのエディタどこの?

500 :デフォルトの名無しさん:2009/01/27(火) 15:45:39
>499
0:23

501 :デフォルトの名無しさん:2009/01/27(火) 15:46:06
>>500
普通にここで言えばいいだろ。

502 :デフォルトの名無しさん:2009/01/27(火) 15:57:40
↑ruby使ってろクズ

503 :デフォルトの名無しさん:2009/01/27(火) 16:05:16
foo = '0123456789A'

>>> foo[3::6]
'39'
>>> foo[3::4]
'37'
>>> foo[3::3]
'369'
>>> foo[3::2]
'3579'
>>> foo[3::1]
'3456789A'


504 :デフォルトの名無しさん:2009/01/27(火) 16:07:27
foo[n::m] の意味は?


505 :デフォルトの名無しさん:2009/01/27(火) 16:29:17
nはスライス開始のインデックス、
mはステップ。-だと逆方向からカウントしてく。
スライス終了のインデクスが指定されていないので、
文字列の一番最後までが範囲していされてる

506 :デフォルトの名無しさん:2009/01/27(火) 16:33:47
>>495
bomの罠に気を付けて‼

507 :デフォルトの名無しさん:2009/01/27(火) 17:02:21
>>505
嘘を教えるなよ

508 :デフォルトの名無しさん:2009/01/27(火) 17:12:16
本当のこと教えてください

509 :デフォルトの名無しさん:2009/01/27(火) 17:30:45
あなたがすきです

510 :デフォルトの名無しさん:2009/01/27(火) 18:00:25
>>505のいうことはまったくちがう。
そもそも文字列でインデックスなんてありえない。
Cやってる奴ならわかるだろうけど。

511 :デフォルトの名無しさん:2009/01/27(火) 18:11:03
>>510
Cやってる奴にとっては文字列=バイト列なんだから
インデックス最高とか思ってそうだが違うのか?

512 :デフォルトの名無しさん:2009/01/27(火) 18:26:23
インデックスには乳が足りん

513 :デフォルトの名無しさん:2009/01/27(火) 18:41:42
インデックスはおっパイ損

514 :デフォルトの名無しさん:2009/01/27(火) 18:45:35
>>505の嘘つき

515 :デフォルトの名無しさん:2009/01/27(火) 19:02:12
じゃあ本当のことを教えてください。

516 :デフォルトの名無しさん:2009/01/27(火) 19:06:24
愛しているのはあなただけです

517 :デフォルトの名無しさん:2009/01/27(火) 19:13:47
だめだぞおまいら。本当のこと教えちゃだめだぞ。絶対だぞ。

518 :デフォルトの名無しさん:2009/01/27(火) 19:18:55
______  ___________
         V
    _____
   /::::::::::::::::::::::::::\                  _
  /::::::::::::::::::::::::::::::::::::::\             /  ̄   ̄ \
  |:::::::::::::::::|_|_|_|_|           /、          ヽ はぁ?黙ってろデブw
  |;;;;;;;;;;ノ   \,, ,,/ ヽ          |・ |―-、       |
  |::( 6  ー─◎─◎ )          q -´ 二 ヽ      |
  |ノ  (∵∴ ( o o)∴)          ノ_ ー  |     |
/|   <  ∵   3 ∵>          \. ̄`  |      /
::::::\  ヽ        ノ\           O===== |
:::::::::::::\_____ノ:::::::::::\        /          |

519 :504:2009/01/27(火) 19:46:48
本当のこと教えてください

520 :デフォルトの名無しさん:2009/01/27(火) 20:13:02
おまえにはまだ早い!

521 :デフォルトの名無しさん:2009/01/27(火) 20:21:50
>>> foo = '0123456789'
>>> foo[0:2:4]
'0'
>>> foo[0:4]
'0123'
>>> foo[0::4]
'048'
>>> foo[0::3]
'0369'
>>> foo = '0123456789ABCDEFGHIJKLMN'
>>> foo[0::5]
'05AFK'
>>> foo[0::2]
'02468ACEGIKM'
>>> foo[0::6]
'06CI'
>>> foo[0::1]
'0123456789ABCDEFGHIJKLMN'
>>> foo[0::2]
'02468ACEGIKM'
>>>

結果は明らかだが、マニュアルに載ってる?


522 :デフォルトの名無しさん:2009/01/27(火) 20:23:23
>>> foo[-1::-1]
'NMLKJIHGFEDCBA9876543210'
>>> foo[-1:-1]
''
>>>

おもしれー


523 :デフォルトの名無しさん:2009/01/27(火) 20:38:03
>>521
この辺かな
http://www.python.jp/doc/2.5/lib/built-in-funcs.html#l2h-58
http://www.python.jp/doc/2.5/lib/built-in-funcs.html#l2h-68
http://www.python.jp/doc/2.5/lib/typesseq.html
http://www.python.jp/doc/2.5/ref/slicings.html

524 :デフォルトの名無しさん:2009/01/27(火) 21:39:53
a = '0123456789'
a[0:10:5]

つまり

初め:終わり:倍数


525 :デフォルトの名無しさん:2009/01/27(火) 21:45:14
e.gashira[2:50]

526 :デフォルトの名無しさん:2009/01/27(火) 21:48:45
(^ω^;)

527 :デフォルトの名無しさん:2009/01/27(火) 22:21:30
BASICのfor文

FOR i = 0 TO 10 STEP 5

NEXT i


528 :デフォルトの名無しさん:2009/01/27(火) 22:41:01
最近打ち合わせでは分かり切ったことは飛ばして話を進めているのに
知識として持っててあたりまえのことを質問する馬鹿が増えた

529 :デフォルトの名無しさん:2009/01/27(火) 22:57:46
>>foo[3..-1]
>>'32104294967295'


530 :デフォルトの名無しさん:2009/01/27(火) 23:53:18
>>528
みんな気をつけろ!こいつRuby厨だ!

531 :デフォルトの名無しさん:2009/01/27(火) 23:57:38
知識として持ってて当たり前のことってたとえば何だろう

532 :デフォルトの名無しさん:2009/01/27(火) 23:58:59
上司の名前やら、役職や、部署の名前とか
ほんとーに基本的なことじゃない?

533 :デフォルトの名無しさん:2009/01/28(水) 00:17:09
>>532
さすがにそれは・・・?

534 :デフォルトの名無しさん:2009/01/28(水) 00:20:15
>>531
Rubyの開発者

535 :デフォルトの名無しさん:2009/01/28(水) 01:47:48
愛国Ruby
http://pc11.2ch.net/test/read.cgi/tech/1233033091/

536 :デフォルトの名無しさん:2009/01/28(水) 02:10:28
>>> class E: gashira = '!!gappe mukatsuku!!'
...
>>> e=E()
>>> e.gashira[2:50]
'gappe mukatsuku!!'

537 :デフォルトの名無しさん:2009/01/28(水) 05:45:01
ttp://mail.python.org/pipermail/python-dev/2009-January/085526.html

GvR が危険球を投げたw

538 :デフォルトの名無しさん:2009/01/28(水) 16:08:25
>>274
ttp://text.world.coocan.jp/TSNET/?What%27sNewInPython3.0
>一般的により良い修正は、(特に元のコードでlambdaが使用されているのなら)しばしばリストの内包記法を用いることです。

539 :デフォルトの名無しさん:2009/01/28(水) 16:28:03
>>538
そこはlist(map(ord, "abc"))みたいにlistとmap(filter)を使うなら
内包表記で[ord(i) for i in "abc"]としましょうってことじゃないの?

540 :デフォルトの名無しさん:2009/01/28(水) 16:31:44
list ・ map = map

541 :デフォルトの名無しさん:2009/01/28(水) 16:50:32
>>537
3.1早く出そうよって言ってるだけじゃないの?

542 :デフォルトの名無しさん:2009/01/28(水) 17:03:27
3.1を早く出すのはいいと思う。
こうしとけば良かった!と思うところは普及しないうちに直した方がいい。

543 :デフォルトの名無しさん:2009/01/28(水) 17:08:35
>541
3.0 は避けとくけど 3.1 になったら使ってみるかと
これまたリリースノートも何も読まない人が大挙して来るかも
(それが狙いとも言えるが)


ところで ML がネタの欧州というか釣り堀に…

544 :デフォルトの名無しさん:2009/01/28(水) 19:16:57

ttp://gihyo.jp/dev/serial/01/pythonhacks/0002
> Python 3.0 Hacks
> 第2回 abcモジュールによる抽象基底クラスの作成

↑ 抽象クラス機能がPython言語仕様に無かった事が不備とは
思ってなかったんで、記事内容には「?」だった。
不注意から守るという以外に、困るケースがあるんだろうか?

545 :デフォルトの名無しさん:2009/01/28(水) 19:17:25
MLの流れに絡んでいる奴らはクソだよね。

546 :デフォルトの名無しさん:2009/01/28(水) 19:35:43
にしおとかいうひとは、ネタっぽいどうでもいい話題には真っ先に食いつくな。
自分の評価を落としているとも知らず、おめでたいことだ。

547 :デフォルトの名無しさん:2009/01/28(水) 19:58:44
>>544
twistedあたりでも使われてるzope.interfaceなんてのもあるし
欲しい奴は欲しいんでないの

俺は要らないけどな
つーかducktypingな時点で、isaを表現するのに継承使う必要もねーから
mixin的な実装継承しか使わん

548 :デフォルトの名無しさん:2009/01/28(水) 21:23:32
はやくMLやHaskellのような代数データ型とパターンマッチをサポートして欲しい。
もうtupleでエミュレートするのに飽き飽きした。

549 :デフォルトの名無しさん:2009/01/28(水) 21:24:33
あと標準のパーサジェネレータも。

550 :デフォルトの名無しさん:2009/01/28(水) 22:39:50
>>545
?

551 :デフォルトの名無しさん:2009/01/28(水) 23:14:23
元ネタはリアルDQNなのか本職の釣師なのか…

> 美しくありません。@4620

っていうのならもっと美しく質問してほしいのだ

552 :デフォルトの名無しさん:2009/01/28(水) 23:28:59
>>544
今時、抽象クラス機能のありがたみすら分からないのはどうかと…

553 :デフォルトの名無しさん:2009/01/29(木) 01:58:39
NotImpementedを返させるだけでも特に困らなかったような気もする

554 :デフォルトの名無しさん:2009/01/29(木) 02:03:11
>>552
>>544ではないが、Javaとかならともかく、動的型でダックタイピングな言語での
抽象クラスってそんなにひつようか?

555 :デフォルトの名無しさん:2009/01/29(木) 02:18:00
標準ライブラリ書くような偉い人が書くものだから、
下々には必要ないんじゃないの?

556 :デフォルトの名無しさん:2009/01/29(木) 02:18:30
機能に踊らされてる人間は、その機能で大量にバグを発生させる。

557 :デフォルトの名無しさん:2009/01/29(木) 10:10:57
1円を笑うものは1円に泣くのです。

558 :デフォルトの名無しさん:2009/01/29(木) 10:25:48
データファイル更新日時から、各レコード記録の日付を推定して補うコードを書こうとしています。
日付と文字列との橋渡しを Python でどのようにすればいいのか教えてください。

・ データは記録時刻 HH:MM で始まる形式の文字列 (取得済み; 仮に r とする) です。
・ データファイル更新日時は yyyy/mm/dd HH:MM という形式の文字列 (取得済み; 仮に u とする) です。
・ データ記録は、その時刻がデータファイル更新時刻より
  - 大きければ、更新前日に行われたもの
  - 小さいか等しければ、更新当日に行われたもの
  と判断したいです。
・ r, u を入力してデータ記録の日付を yyyy/mm/dd 形式の文字列で返す関数がほしいです。

処理の流れは
・ r, u からその時刻部分を取得し、時刻に変換して比較
・ 結果によって u の日付部分を1日減じたり減じなかったりして、文字列に戻して返す
でしょうか?

ライブラリリファレンスの strftime, strptime あたりを眺めているのですがどうも物分りが悪くて…

559 :デフォルトの名無しさん:2009/01/29(木) 10:43:55
こんなもんでいいんじゃねえの

def f(r, u):
    d, hm = u.split(' ')
    if r <= hm:
        return d
    else:
        nd = datetime.date(*map(int, d.split('/'))) - datetime.timedelta(1)
        return nd.strftime('%Y/%m/%d')


560 :デフォルトの名無しさん:2009/01/29(木) 10:48:42
>>558
そういうネタっぽいことはMLでやれよ。
仕事のない暇人どもがわらわらとやってきて、サンプルコード書いてくれるからよ。

561 :558:2009/01/29(木) 10:58:32
>>559
そのコードで動作しました、ありがとうございます。split 便利ですね。
r <= hm の部分ですが、両辺は文字列として辞書順比較されているという認識でよろしいでしょうか?

562 :デフォルトの名無しさん:2009/01/29(木) 11:00:43
>>561
うん。HH:MMならそれで問題ないよね?

563 :558:2009/01/29(木) 11:08:03
>>562
もちろんOKです、ありがとうございました〜。

564 :デフォルトの名無しさん:2009/01/29(木) 13:33:38
>560
妙な応用編しか教えてくれないけどな

565 :デフォルトの名無しさん:2009/01/29(木) 13:37:38
>>564
そんなだから仕事ないんだろ。
空気が読めないというのは致命的だよな。

566 : ◆UNKOVIP9RM :2009/01/29(木) 15:48:26
痛い

痛い

痛い

567 :デフォルトの名無しさん:2009/01/29(木) 20:38:45
>>553
エラーの発生するタイミングが関数コール時とインスタンス生成時だとかなり変わると思うけど。


568 :デフォルトの名無しさん:2009/01/29(木) 20:42:47
そういうことが気になるんなら静的型言語を使ったほうがよくないか

569 :デフォルトの名無しさん:2009/01/29(木) 21:12:32
ハンゲームしねえええ

570 :デフォルトの名無しさん:2009/01/29(木) 21:13:07
http://docs.python.org/extending/embedding.html
multiply
呼び出す奴が動かない
multiply.pyとcの実行ファイルを同じディレクトリにおいても
multiplyなんてないよ
というエラーになる
環境はlinux


571 :デフォルトの名無しさん:2009/01/30(金) 00:54:37
>>567
そんな時のためのメタクラス。
だけど、大半は実行時でも問題ない。その分テストを書こう。

>>570
多分
$ PYTHONPATH=. call multiply multiply 3 2


572 :デフォルトの名無しさん:2009/01/30(金) 09:04:17
Python3はライブラリに関してはまったく同じなのね

573 :デフォルトの名無しさん:2009/01/30(金) 09:14:59
>>572
基本的には互換性を保ってるけど、細かな変更点が多数あるので要確認。
2.6に移植してから2to3使えば、ライブラリのapi変更にもある程度追従してくれる。

574 :デフォルトの名無しさん:2009/01/30(金) 09:49:40
>>573
ウソを教えるなよ。

575 :デフォルトの名無しさん:2009/01/30(金) 12:40:22
後方互換性は無いけど変換ツールでどこまで対応できるのかね

576 :デフォルトの名無しさん:2009/01/30(金) 14:05:28
特定のプログラムの特定の箇所で、変数をバイト列として扱いたいのか
(あるいはそれが正しいのか)、文字列として扱いたいのかなんて
自動で判断できるわけねーし、結局手動でプログラマが手を入れないといかんよな。

例えばMacをのぞくUnix系のOSだと、システム界面ではbytesベースで扱うのが
正しいことが多いだろうし、逆にWindowsではファイルI/Oを除いては大概
strベースが正しいだろうしな。

577 :デフォルトの名無しさん:2009/01/30(金) 14:09:15
なんなんだ突然。

578 :デフォルトの名無しさん:2009/01/30(金) 14:57:09
藪から棒だが言いたい事は分からんでもないこともない

579 :デフォルトの名無しさん:2009/01/31(土) 09:44:38
Python 3が後方互換性を捨ててでも求めたもの
http://www.atmarkit.co.jp/fcoding/articles/python3/01/python301b.html

>Python 2の文字列型とbytes型の大きな違いは、「変更可能(mutable)」なデータ型であるという点です。
>Pythonの文字列型では、メモリ利用の効率化などの目的があり、要素の削除や置き換えができません。
>これを「変更不可能(immutable)」といいます。

bytes = immutable, bytearray = mutable
だと思っていたけど違うのか? それとも変わったのか?

580 :デフォルトの名無しさん:2009/01/31(土) 10:14:15
>>> x = b'this'
>>> x[0] = b'T'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'bytes' object does not support item assignment

581 :デフォルトの名無しさん:2009/01/31(土) 10:14:43
> Like "str", the "bytes" type is immutable.
> There is a separate mutable type to hold buffered binary data, "bytearray".

http://docs.python.org/3.0/whatsnew/3.0.html

582 :デフォルトの名無しさん:2009/01/31(土) 10:20:25
a = ''.join([chr(x) for x in xrange(256)])
こういうデータの作り方しても大丈夫ですか?

583 :デフォルトの名無しさん:2009/01/31(土) 10:28:07
>>> a = 'this'
>>> a[0] = 'T'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment

>>> x = b'this'
>>> x[0] = b'T'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'bytes' object does not support item assignment

>Python 2の文字列型とbytes型の大きな違いは、「変更可能(mutable)」なデータ型であるという点です。
どちらも「変更不可能(immutable)」で違いが無いですね

584 :デフォルトの名無しさん:2009/01/31(土) 10:28:09
何を心配してるのか分からんが、別にいいんじゃないの

強いて言えばその[]は要らないかな

a = ''.join(chr(x) for x in xrange(256))
a = ''.join(map(chr, xrange(256)))

でいいでしょ

585 :デフォルトの名無しさん:2009/01/31(土) 10:39:01
>>578
pythonスレじゃ薮蛇だ。

586 :デフォルトの名無しさん:2009/01/31(土) 10:42:46
Webアプリフレームワークなんかは3.x対応ってどうなってんの?


587 :デフォルトの名無しさん:2009/01/31(土) 10:48:02
Webアプリフレームワークとはなにですか?

588 :デフォルトの名無しさん:2009/01/31(土) 11:13:10
puronとかterbogiarsとかですねわかります


589 :デフォルトの名無しさん:2009/01/31(土) 11:42:45
テーブルサイズが巨大になる時の効率を気にしてるんじゃない?
用途・規模により対策は異なるけど、使えそうなのを適当に挙げると。
array, mmap, ctypes, バッファ関連C/API, numpy, 3.0からは bytearray, io.*

標準モジュールのみでの簡単な方法を紹介すると、
事前にデータをファイルにダンプしておいて、
import array
x = array.array('c')
x.fromfile(open('char_table.dat'), 256)

one-linerでサイズが256程のを所望なら、>>584のmap使うのが多分最速。



590 :デフォルトの名無しさん:2009/01/31(土) 13:54:41
>>588
danjoは入れてあげないのですか?

591 :デフォルトの名無しさん:2009/01/31(土) 13:58:28
danjoってなんでうsか?

592 :デフォルトの名無しさん:2009/01/31(土) 14:01:45
dojoは仲間外れですか?

593 :デフォルトの名無しさん:2009/01/31(土) 14:38:27
>>584 >>589
分かりにくくてすみません
あきらかにbinaryなのに''でjoinしてることに違和感があったのです

594 :デフォルトの名無しさん:2009/01/31(土) 14:41:14
タヒチ

595 :デフォルトの名無しさん:2009/01/31(土) 14:49:45
>>593
2.xならstrは要するにimmutableなバイト列だから、何の問題ない
Cとは違ってヌルバイトも特別扱いはしないし、普通に含めることができる

596 :デフォルトの名無しさん:2009/01/31(土) 17:16:47
C API で定義した型に定数メンバーを持たせるにはどうすれば良いのでしょうか?

具体的には下記の A 〜 C のようなクラス変数を実装したいのですが…
class Noddy:
    A = (0 << 1)
    B = (0 << 2)
    C = (0 << 3)


597 :デフォルトの名無しさん:2009/01/31(土) 18:00:58
>>596
ttp://www.python.jp/doc/release/ext/node23.html
PyMemberDef


598 :デフォルトの名無しさん:2009/01/31(土) 18:17:41
>>597
つまりクロージャーをうまく使えという訳ですね。
その方向で試してみます。ありがとうございました。

599 :デフォルトの名無しさん:2009/01/31(土) 19:58:39
>598
定数だったら辞書かモジュールオブジェクト作ったほうがよくない?

600 :596:2009/01/31(土) 21:05:21
>>599
NoddyPackage の Noddy1, Noddy2, Noddy3 それぞれに個別の定数を持た
せたいのです。

実は既にモジュールオブジェクトとして実装しているのですが、その場合
from NoddyPackage import *
と書かなければならないのが1つ。
(import NoddyPackage で全部使える状態にしたい)

インスタンス生成時に
noddy = Noddy1.new()
の様に、モジュールメソッドを呼ばなければならないのが1つ。
(noddy = Noddy1() でインスタンス化したい)

最後に、些細ですが、NoddyPackage.Noddy1.A でも、インスタンスから
noddy1.A でも、どちらも同じ領域を参照したいというのが理由です。

PyTypeObject に対して PyModule_AddIntConstant みたいな関数があれば
悩まないのですが無いようでして。

601 :デフォルトの名無しさん:2009/01/31(土) 21:39:14
集合sの各要素を (順序は問わず) 1個ずつもつリストlはどうやって作ればよいですか?

602 :デフォルトの名無しさん:2009/01/31(土) 21:59:30
集合sをコピーすればいいんじゃね

603 :デフォルトの名無しさん:2009/01/31(土) 22:02:42
>>601
l = list(s)
で済む話ではなくて?

604 :デフォルトの名無しさん:2009/01/31(土) 22:03:54
済みません

605 :デフォルトの名無しさん:2009/01/31(土) 22:06:54
自己解決しました

606 :デフォルトの名無しさん:2009/01/31(土) 22:51:46
>>603
そんなのがあったのか!
ありがとうございました。

607 :デフォルトの名無しさん:2009/01/31(土) 23:38:45
>>606
もうお前プログラミングやめたほうがいいよ、向いてないよ

608 :デフォルトの名無しさん:2009/01/31(土) 23:44:33
今Googleおかしくなってる?
検索したら全ページに
このサイトはコンピュータに損害を与える可能性があります。
って一文が付け加えられてるんだけど・・・俺だけ?

609 :デフォルトの名無しさん:2009/01/31(土) 23:45:07
俺も。
どうなってんだろ。
Google のバグか、それともクラックされたのか。

610 :デフォルトの名無しさん:2009/01/31(土) 23:46:15
よかった俺だけじゃないのか・・・

611 :デフォルトの名無しさん:2009/01/31(土) 23:50:53
うちは出てない
良かった良かった

612 :デフォルトの名無しさん:2009/01/31(土) 23:54:39
どうやら出るサイトと出ないサイトがあるようだが9割がた出る…おれの場合

613 :デフォルトの名無しさん:2009/01/31(土) 23:55:03
ν速行ってみろ、今祭りだぞ

614 :デフォルトの名無しさん:2009/02/01(日) 00:29:25
        ,.-─ ─-、─-、
      , イ)ィ -─ ──- 、ミヽ
      ノ /,.-‐'"´ `ヾj ii /  Λ
    ,イ// ^ヽj(二フ'"´ ̄`ヾ、ノイ{
   ノ/,/ミ三ニヲ´        ゙、ノi!
  {V /ミ三二,イ , -─        Yソ
  レ'/三二彡イ  .:ィこラ   ;:こラ  j{
  V;;;::. ;ヲヾ!V    ー '′ i ー ' ソ
   Vニミ( 入 、      r  j  ,′
   ヾミ、`ゝ  ` ー--‐'ゞニ<‐-イ
     ヽ ヽ     -''ニニ‐  /
        |  `、     ⌒  ,/
       |    > ---- r‐'´
      ヽ_         |
         ヽ _ _ 」

     ググレカス [ gugurecus ]
   (西暦一世紀前半〜2009.1.31)

615 :デフォルトの名無しさん:2009/02/01(日) 00:42:27
2chでGoogle検索してしまったw

616 :デフォルトの名無しさん:2009/02/01(日) 03:27:46
>>600
PyModule_AddIntConstant も結局は辞書とgeneric getattrでやってることなので、
手短にするならgetattrに定数を返す関数を登録するのがいいんじゃない?

SWIGではどうやってたんだろうと思い、気になって調べてみると、SWIGのdocumentでも
Static class members present a special problem for Python. Prior to Python-2.2,
Python classes had no support for static methods and
no version of Python supports static member variables in a manner that SWIG can utilize.
Therefore, SWIG generates wrappers that try to work around some of these issues


617 :デフォルトの名無しさん:2009/02/01(日) 07:02:53
Googleがぶっ壊れた

618 :デフォルトの名無しさん:2009/02/01(日) 17:00:49
初心者にお勧めな参考書はありますか?
プログラミング自体も初めてに近いです。

現在はこちらで勉強中です。
ttp://www.pythonweb.jp/tutorial/
↑参考になりますか?


619 :デフォルトの名無しさん:2009/02/01(日) 17:02:04
ビルトインのjsonモジュール日本語さっぱり扱えないね

620 :デフォルトの名無しさん:2009/02/01(日) 17:20:40
>>618
そんな広告だらけのページより↓の方が参考になります。
http://www.python.jp/doc/

621 :デフォルトの名無しさん:2009/02/01(日) 17:39:50
Python CGI でファイルの作成および削除を行っているのですが、削除 (os.remove( path )) に失敗しています。どのようにすればよいでしょうか。
考えられる問題点の1つは、作成されたファイルのパーミッションが644になっていることです。

622 :621:2009/02/01(日) 17:45:40
自己解決しました。削除ではなくその前に読むべきファイルを置き忘れていました…。

623 :デフォルトの名無しさん:2009/02/01(日) 17:49:42
>>618
参考になるだろうけど、内容が少ないから
本一冊ぐらい買った方がいいかもね。
そこの広告にも出てるけどみんなのpython って言うのが
一番普通っぽい感じだと思う。
公式ドキュメント読めるならそれでもいいけど、
普通は読みにくいと言われてる気がする。

624 :デフォルトの名無しさん:2009/02/01(日) 17:52:04
>>621
CGI は専用スレッドがあるのでなるべくそっちに

Python CGI
http://pc11.2ch.net/test/read.cgi/php/1163513344

625 :デフォルトの名無しさん:2009/02/01(日) 18:00:02
>>623
ありがろうございます。
確かに公式ドキュメントはわかりにくいですね
618のHPだと内容は少ないのですね…
それでもすごくわかりやすくて重宝しておりました。

みんなのPython探してみます。

626 :596:2009/02/01(日) 20:06:20
>>616
の情報をヒントにソースを追っていったら解決しました。ありがとうございます。

一応、解決策を datetime モジュールから転載しておきます。
// Python-2.6.1/Modules/datetimemodule.c L4751-4757
// in initdatetime function
    /* timedelta values */
    d = PyDateTime_DeltaType.tp_dict;

    x = new_delta(0, 0, 1, 0);
    if (x == NULL || PyDict_SetItemString(d, "resolution", x) < 0)
        return;
    Py_DECREF(x);

627 :621:2009/02/02(月) 08:18:01
>>624
どっちサイドの問題か迷ったので勢いのあるこちらに投稿させていただきました。
ぜんぜん違うところの問題でほんとすみません><



628 :デフォルトの名無しさん:2009/02/02(月) 08:35:04
死んで詫びろ。

629 :デフォルトの名無しさん:2009/02/02(月) 09:52:52
string の split って引数なしだと (複数の)whitespace が対象ですが、
sep としてデフォルトを指定する方法って
どうすればいいのでしょう?

具体的には whitespace のままで maxsplit を
指定したいんですが ' ' とかでは space 1個あたり
一分割されてしまうんで…

630 :デフォルトの名無しさん:2009/02/02(月) 10:00:26
>>608-615
くさいひときらい

631 :デフォルトの名無しさん:2009/02/02(月) 10:00:43
>>608-615
くさいひときらい



632 :デフォルトの名無しさん:2009/02/02(月) 10:13:32
>>629
Noneじゃね?

633 :デフォルトの名無しさん:2009/02/02(月) 11:49:03
ありがとうございます

ちょうど /usr/local/lib/python2.5/string.py をみて
None を試していたところでした。
これで良さそうです

(ただ document に None だと云々って書いてないから
undocumented feature ってことになるのかしら?)

634 :632:2009/02/02(月) 12:19:22
>>633
http://docs.python.org/library/stdtypes.html#str.split
> If sep is not specified or is None,

635 :632:2009/02/02(月) 12:21:52
ttp://www.python.jp/doc/release/lib/string-methods.html
「sep が指定されていないか None が指定されている場合、」

636 :デフォルトの名無しさん:2009/02/02(月) 12:35:50
おぉぅ… 書いてあるのね…orz

637 :デフォルトの名無しさん:2009/02/02(月) 14:32:46
'ab23'.split(ここに何を入れれば)
['a', 'b', '2', '3']
と分割出来ますか?

638 :デフォルトの名無しさん:2009/02/02(月) 14:35:00
>>637
list('ab23')


639 : ◆UNKOVIP9RM :2009/02/02(月) 15:39:31
>>638
ふかくにもわろた

640 :デフォルトの名無しさん:2009/02/02(月) 15:39:51
↑Python ではそれしかないっぽいね。Ruby や Perl と違って。まあ、不便とも思わないけど

641 :デフォルトの名無しさん:2009/02/02(月) 15:49:10
boost.pythonのメモリー漏れてる問題って修正されてないのか
ちょっと激しい使い方したら落ちないか?

642 :デフォルトの名無しさん:2009/02/02(月) 15:52:23
>>640
Pythonの文字列はもともとシークエンスであって、いちいちlist化せんでも
forループでまわしたりmap()などに渡したりできるんで
実際には>>638すら必要になることはそう多くは無いはず

643 :デフォルトの名無しさん:2009/02/02(月) 15:59:39
sの一文字目が欲しいなら、単にs[0]でいい
部分文字列が欲しいならs[2:4]とかだ

いちいちsubstr()だのsplit()だのでバラす必要は無い

644 :デフォルトの名無しさん:2009/02/02(月) 16:04:40
バカほど無用な遠回りをする。

645 :デフォルトの名無しさん:2009/02/02(月) 16:26:45
そうやって成長していくのさ

646 :デフォルトの名無しさん:2009/02/02(月) 16:35:19
成長が早い奴は無用な遠回りをしない。
バカが遠回りをして時間を無駄に費やしている間にも成長してゆく。

647 :デフォルトの名無しさん:2009/02/02(月) 16:43:15
遠回りは無駄じゃないよ

648 :デフォルトの名無しさん:2009/02/02(月) 16:58:03
>>637
[x for x in 'ab23']

649 : ◆UNKOVIP9RM :2009/02/02(月) 17:10:05
遠回りしまくって、叩かれまくって、それでも諦めないという

それでいいじゃん

650 :デフォルトの名無しさん:2009/02/02(月) 17:26:42
だがもう覚えた^^

651 :デフォルトの名無しさん:2009/02/02(月) 17:30:23
ちい覚えた


652 :デフォルトの名無しさん:2009/02/02(月) 17:42:28
バカほど車輪の再発明をする。

653 :デフォルトの名無しさん:2009/02/02(月) 17:45:17
ちょっと組み込み関数全部読み直してくる

654 :デフォルトの名無しさん:2009/02/02(月) 18:06:11
>>638
ありがとうございました

655 :デフォルトの名無しさん:2009/02/02(月) 18:32:41
>>653
よい心がけだ。

656 :デフォルトの名無しさん:2009/02/02(月) 18:41:25
print() って stdout.write() じゃだめなん?

657 :デフォルトの名無しさん:2009/02/02(月) 18:59:40
try:
f = open(file,'rb')
sys.stdout.write(f.read())
except IOError, (errno, strerror):
print 'I/O error(%s): %s' % (errno, strerror)
except:
print 'Unexpected error: %s' % (sys.exc_info()[0])
else:
f.close()

これで例外が発生したときfはcloseされますか?

658 :デフォルトの名無しさん:2009/02/02(月) 19:01:23
finally:

659 :デフォルトの名無しさん:2009/02/02(月) 20:21:25
ライブラリリファレンス28pに
<> および != は同じ演算子を別の書き方にしたものです。!= のほうが望ましい書き方です; <> は廃止すべき書き方です。
とあるんですが、後半には何か理由があるんでしょうか?

660 :デフォルトの名無しさん:2009/02/02(月) 21:03:37
2つの物を1つにする時は
少数派が負けるのは普通
じゃないかな

661 :デフォルトの名無しさん:2009/02/02(月) 21:38:34
<> って使えるのか

662 :デフォルトの名無しさん:2009/02/02(月) 21:56:22
>>657
with

663 :デフォルトの名無しさん:2009/02/02(月) 21:58:31
3.0になって消えた。

664 :デフォルトの名無しさん:2009/02/02(月) 22:12:15
つttp://blog.redhawk.jp/2008/10/python-the-with-statement.html
try:
  file = open("with.txt")
except IOError:
  print "Failed to open a file."
else:
  print "Success to open a file."
  file.close()
finally:
  print "End of Exception handling."


665 :デフォルトの名無しさん:2009/02/02(月) 22:12:47
from __future__ import with_statement
class MyClass():
  def __init__(self):
    self.file = None
  def __enter__(self):
    self.file = None
    print "MyClass: enter"
    return self
  def __exit__(self, exc_type, exc_value, exc_tb):
    print "MyClass: exit"
    if not exc_type:
      print "Secucess to open a file."
    else:
      print "Failed to open a file."
    if self.file:
      print "close file"
      self.file.close()
    return True
  def open(self, file_name):
    self.file = open(file_name)
    print "open file"
def process():
  with MyClass() as my_class:
    my_class.open("with.txt")
if __name__ == '__main__':
  process()

666 :デフォルトの名無しさん:2009/02/02(月) 23:05:12
ファイルオブジェクトに似たオブジェクト以外に使ったらすぐ
スパゲッティ化しそうな気がする < with 文対応クラス

667 :デフォルトの名無しさん:2009/02/03(火) 08:44:46
どうみてもwithの方が面倒です
本当にありがとうございました

668 :デフォルトの名無しさん:2009/02/03(火) 08:55:49
おつかれうぃっず

669 :デフォルトの名無しさん:2009/02/03(火) 14:06:00
俺ならこうするけどなあ。
try:
 with open("tmp.txt") as f:
  print "Success to open a file."
except IOError:
 print "Failed to open a file."
finally:
 print "End of Exception handling."


670 :デフォルトの名無しさん:2009/02/03(火) 15:12:54
RAIIっぽいのはwithで書いたほうが綺麗だな
ロックの獲得→解放とか
ContextManagerを明示的にクラスとして実装する必要性はほとんど無い気がする

ファイルオブジェクトはもともとContextManagerインタフェースを備えている
そうでなくとも、オブジェクト作成→最後にclose()の流れなら
contextlib.closingが使える
もっと汎用的なものが欲しい場合はcontextlib.contextmanagerを使う

with open〜のようなもの(Schemeのcall-with-input-file相当)を
自分で書くのは難しくない

from contextlib import contextmanager
@contextmanager
def my_open(*args, **kw):
  fp = open(*args, **kw)
  yield fp
  fp.close()

これだけでいい

with my_open('foo.txt') as fp:
  do_something_with(fp)

のように使う

671 :デフォルトの名無しさん:2009/02/04(水) 00:37:58
やはりRubyは優秀だなあ

672 :デフォルトの名無しさん:2009/02/04(水) 00:42:19
やっぱりJavaは優秀だなぁ

673 :デフォルトの名無しさん:2009/02/04(水) 00:48:24
やっぱDは優秀だな

674 :デフォルトの名無しさん:2009/02/04(水) 00:50:20
今日からパイ村の村民になります、よろしく

675 :デフォルトの名無しさん:2009/02/04(水) 03:00:24
ロックなどのように明示的な開放が必要な場合は使うけど。
どうせデストラクタで閉じられるからと、ファイルではあまり使わないなぁ
そもそも例外でclose以外の後始末をしないといけないって事が(自分の場合は)少ないので。
do_something_with(open('foo.txt'))で済ませる。行読み込みなら for line in open('foo.txt')

# gc任せ、なので良くないスタイルなのかもしれない。
# 一応、注記しておくとサーバなどのlifespanが長いものではきちんとしてる。


676 :デフォルトの名無しさん:2009/02/04(水) 03:38:37
>>675
今のCPython実装だと参照カウント方式のGCだから、不要になったらすぐ開放してくれるから、
それで上手くいっちゃうんだよね。
IronPythonとか、参照カウント以外のGCだと、不要になってから開放してくれるまでのタイムラグが
予測できないからRAIIが必要になるけど。

677 :デフォルトの名無しさん:2009/02/04(水) 17:09:24
TurboGearについて教えてください。
コマンドプロンプトで,python start-booklist.pyと打つと、
AttributeError: 'module' object has no attribute 'Template' 
とエラーが出ます。どうしたらいいでしょうか?

678 :デフォルトの名無しさん:2009/02/04(水) 17:34:54
Firefoxで escape('あいうえお') したら %uXXXX でエスケープしやがるんですが、
urllib.unquote() は %uXXXX に非対応です。
標準ライブラリ一発ではなんともならんかったっけ?
自前でunescapeしないとダメ?

679 :デフォルトの名無しさん:2009/02/04(水) 18:05:03
朗報
ttp://d.hatena.ne.jp/itasuke/20080703
ttp://www.w3.org/TR/html4/appendix/notes.html#h-B.2.1
ttp://webdba.blogspot.com/2008/05/query-datastore-for-unicode-string-not.html

680 :678:2009/02/04(水) 18:30:50
'%u3042%u3044%u3046%u3048%u304A' => u'\u3042\u3044\u3046\u3048\u304A'
するナイスな(標準的な)方法が知りたいのです。
eval('u"%s"' % '%u3042%u3044%u3046%u3048%u304A'.replace('%u', r'\u'))
でも目的は達成できるけれど正しいとは言えないような。

681 :デフォルトの名無しさん:2009/02/04(水) 18:38:03
"".join(unichr(int(i, 16)) for i in s.split("%u")[1:])


682 :デフォルトの名無しさん:2009/02/04(水) 18:42:27
s = '%u3042%u3044%u3046%u3048%u304A'
re.sub(ur"%u([0-9A-F]{4})", lambda m: unichr(int(m.group(1), 16)), s)

683 :デフォルトの名無しさん:2009/02/04(水) 18:50:12
思いつくままかいてみた。期待通り動くかどうか解らないけど、
map + unichr な感じの方法でもっと簡単に書けるんじゃないかな。

re.subn(r'%u([0-9a-fA-F]{,4})', lambda g:unichr(int(g.group(1),16)), string)[0]



684 :678:2009/02/04(水) 19:02:02
>>681
s = '%u3042a%u3044i%u3046u%u3048e%u304Ao' # あaいiうuえeおo
"".join(unichr(int(i, 16)) for i in s.split("%u")[1:])

ValueError: unichr() arg not in range(0x10000) (narrow Python build)

>>682-683
ありがとうございます。目的は達成できるんですが、結局自前unescapeですよね。
不満はないんですけど、標準的な方法としてライブラリに関数があってもいいのに…


685 :デフォルトの名無しさん:2009/02/04(水) 19:55:05
そう思うならpatch投げてcommitしてもらえばいいのでは

686 :cap005-096.kcn.ne.jp cap005-096.kcn.ne.jp :2009/02/04(水) 20:56:23
でも、これってブラウザの実装依存じゃなかったっけ?
あっても良いとは思うけど。先に仕様の標準化と実装の統一がされてないと、
標準ライブラリに入るのは難しいと思うなぁ。

ところで、evalの方で 安全にevalするなら
s.encode('string-escape')で文字列内でクォートを閉じられないように。
2.6以降なら、併せて eval -> ast.literal_eval

687 :デフォルトの名無しさん:2009/02/06(金) 01:34:53
PILのGIFアニ書出しってgifmaker.pyしかない?
一応GIF89aの書出し対応させたけどファイルが
圧縮でけんみたいだわ。

688 :デフォルトの名無しさん:2009/02/06(金) 01:44:17
MySQL開発チームメンバーらと起業
MySQLの「生みの親」、サンを離れる
ttp://www.atmarkit.co.jp/news/200902/05/monty.html

689 :デフォルトの名無しさん:2009/02/06(金) 01:48:24
ttp://nagosui.org/Nagosui/Docs/tutorial/python-imaging-library-tutorial/tutorial-all-pages

690 :デフォルトの名無しさん:2009/02/06(金) 09:26:36
ttp://b.hatena.ne.jp/entry/http://python.is-a-geek.org/wiki/index.cgi?Whats3onLP

ttp://b.hatena.ne.jp/entry/http://www.atmarkit.co.jp/fcoding/articles/python3/01/python301a.html

似たようなことが書いてあるのになんでブクマ数に差があるんだろう。
5倍の開きって天と地だよな。

691 :デフォルトの名無しさん:2009/02/06(金) 12:21:40
ブクマ数気にしてる著者が書いてるかどうかの違いじゃないかな?

692 :デフォルトの名無しさん:2009/02/06(金) 12:51:27
そうだな.
見る人が少ないページは価値が低いなんてことはまったくないし
ブックマーク数が低いページの方が見る人が少ないなんてまるで都市伝説だ.

693 :デフォルトの名無しさん:2009/02/06(金) 13:43:33
>>690
みんpyと恥pyの差

694 :デフォルトの名無しさん:2009/02/06(金) 13:49:56
ソーシャルブックマーク(笑)

695 :デフォルトの名無しさん:2009/02/06(金) 13:49:56
みんなのパイパイと恥ずかしいパイパイ?

696 :デフォルトの名無しさん:2009/02/06(金) 13:51:27
良いパイパイと悪いパイパイがあるんですね。

697 :デフォルトの名無しさん:2009/02/06(金) 15:46:07
恥pyの中の人は必死すぎて引く。

698 :デフォルトの名無しさん:2009/02/06(金) 17:21:27
>>696
悪いほうは桃白白ですが、良いほうは誰ですか?

699 :687:2009/02/06(金) 17:59:09
>>689
多分sequenceアクセスでやれる、と言いたかったと思う、が…
PIL1.1.6ではGIF89aにするためのGCEやAEブロックを作らんみたいなのよ。
ヘッダに至ってはGIF87しか出さんし。PILのGifPlugin
使ってヘッダ作ってるgifmaker.pyのGIFアニでも
再生でけるのにはワロタ。

gifmaker.pyではgetbboxでフレーム間差分取ってるけど
全然ファイルサイズが小さくならん。
やっぱ特許がらみで圧縮サポートせんかったんかいのぅ。


700 :デフォルトの名無しさん:2009/02/07(土) 01:20:24
なるほど
ありがとうございました

701 :デフォルトの名無しさん:2009/02/07(土) 01:20:27
pythonではゼロ割り算などがおきても計算は止まらないことになってるのでしょうか?
ほとんど,どんな数値計何上のエラーでも止まらないのでしょうか?


702 :デフォルトの名無しさん:2009/02/07(土) 01:22:01
例外ZeroDivisionError:を拾って処理すればいいよ
止めたければ止めればいい
他の数値計何上のエラーでもおなじ

703 :デフォルトの名無しさん:2009/02/07(土) 01:37:04
最近Pythonスレの濃度がやたらと濃くなってるな。
いいことなんだけど。他のLLスレと違って低レベルなことに触れる事がおおいな。
どこで勉強してんだ?

704 :デフォルトの名無しさん:2009/02/07(土) 01:49:14
トイレできばりながら

705 :デフォルトの名無しさん:2009/02/07(土) 01:53:22
python.orgでのやり取り、ML。
困ったときも過去にどういうやり取りがあって
APIの定義が決まって行ったかが追える。
ドキュメントを書く事がPython使いの文化になってるせいで
野良モジュールでもドキュメントが豊富。

706 :デフォルトの名無しさん:2009/02/07(土) 02:08:13
PILのsequenceはflameの逆戻りができないんじゃなかった?

707 :デフォルトの名無しさん:2009/02/07(土) 03:18:23
なるほど
ありがとうございました

708 :デフォルトの名無しさん:2009/02/07(土) 03:36:55
ありがとうございませんでした

709 :デフォルトの名無しさん:2009/02/07(土) 12:51:07
>>690
上のやつって『初めてのPython』第三版向けなんだってね
日本語版はPython3k対応とか言ったらGJじゃないか

710 :デフォルトの名無しさん:2009/02/07(土) 13:02:17
ただでさえ分厚い原著がさらに厚くなるなんてうれしいなあ!!

711 :デフォルトの名無しさん:2009/02/07(土) 13:04:43
早くも茶々入ってワロタ

712 :デフォルトの名無しさん:2009/02/07(土) 23:06:07
ホーリーアップしますか?

713 :デフォルトの名無しさん:2009/02/08(日) 01:25:32
>>690
ttp://www.amazon.co.jp/dp/479733665X
4,473位
ttp://www.amazon.co.jp/dp/4873112109/ref=pd_sim_b_5
61,010位

アマゾンのランキング。
5倍が天と地なら10倍は何だろう(ww

714 :デフォルトの名無しさん:2009/02/08(日) 01:51:18
むしろ目糞はn

715 :デフォルトの名無しさん:2009/02/08(日) 07:42:50
>>709
日本語版だけ3000に対応するわけねーだろwww

716 :デフォルトの名無しさん:2009/02/08(日) 10:22:18
>>713
単純な計算も出来ないのですか?
15倍ですよ


717 :デフォルトの名無しさん:2009/02/08(日) 11:01:23
単純な計算も出来ないのですか?
13.6倍ですよ



718 :デフォルトの名無しさん:2009/02/08(日) 11:08:19
複雑だと思うならつかわなきゃいいんじゃねーの?
なんでアホはあるもの全部使わなきゃ気がすまねーの?

719 :デフォルトの名無しさん:2009/02/08(日) 11:53:24
おめーこんなやり方あるのもしらねーのと馬鹿にされるから。

720 :デフォルトの名無しさん:2009/02/08(日) 15:08:16
馬鹿にされると(恥ずかしい?)のは馬鹿だからだろ
馬鹿じゃないんだったら馬鹿にされてもいいじゃん
ひとちがいなんだから

721 :デフォルトの名無しさん:2009/02/08(日) 15:23:06
やっぱRubyはすばらしいなあ

722 :デフォルトの名無しさん:2009/02/08(日) 22:17:40
それはない

723 :722:2009/02/08(日) 23:20:52
試しに小一時間ほどRuby 1.9.1をビルドし、
irbで適当にRubyいじってみたけど最高だ!
なんでいままでPythonなんて触っていたのだろう!

すばらしい!

724 :デフォルトの名無しさん:2009/02/08(日) 23:29:18
Pythonって.NETに対応してるの?

してるなら圧倒的にPython指示する

725 :デフォルトの名無しさん:2009/02/08(日) 23:32:22
してないよ

726 :デフォルトの名無しさん:2009/02/08(日) 23:35:06
import win32com.client
fso = win32com.client.Dispatch('Scripting.FileSystemObject')
folder = fso.GetFolder('C:\\')
for file in folder.Files:
 print file.Name


727 :デフォルトの名無しさん:2009/02/08(日) 23:36:27
Craftwareのソフトはソースコードを開示してて、ライセンスのtxtファイルにGPLと書いてるのですが
Python自体のライセンスがGPLなのでしょうか?
Pythonを使ったソフトはソースコードを開示しなければならないのでしょうか?

728 :デフォルトの名無しさん:2009/02/08(日) 23:36:51
import win32com.client
w = win32com.client.Dispatch('WScript.Shell')
w.Popup('Ready',3,'1,2,3')
w.LogEvent(1, 'DaahhhHHH!')

729 :デフォルトの名無しさん:2009/02/08(日) 23:37:38
>>724
IronPython
http://pc11.2ch.net/test/read.cgi/tech/1157686822/

730 :デフォルトの名無しさん:2009/02/08(日) 23:38:31
Yes, we can.


731 :デフォルトの名無しさん:2009/02/08(日) 23:40:58
またruby厨の自演ですか

732 :デフォルトの名無しさん:2009/02/08(日) 23:51:51
>>727
Python自体はGPLじゃない
というかプログラミング言語の処理系がたとえGPLであったとしても、ソースの公開義務は生じない

そのソフトがGPLなだけだろ

733 :724:2009/02/08(日) 23:56:59
>>729
         ___
        /⌒  ⌒\         ━━┓┃┃
       /(  ̄)  (_)\         ┃   ━━━━━━━━
     /::::::⌒(__人__)⌒:::: \         ┃               ┃┃┃
    |    ゝ'゚     ≦ 三 ゚。 ゚                            ┛
    \   。≧       三 ==-
        -ァ,        ≧=- 。
          イレ,、       >三  。゚ ・ ゚
        ≦`Vヾ       ヾ ≧
        。゚ /。・イハ 、、    `ミ 。 ゚ 。 ・


734 :デフォルトの名無しさん:2009/02/09(月) 00:04:23
IronPythonは一見ギャグのようで、意外と.NETに馴染んでて馬鹿にできないw

735 :デフォルトの名無しさん:2009/02/09(月) 00:09:19
>>732
ttp://sites.google.com/site/craftware/clnch
のソフトなのですが
license/python_license.txtというファイルがあるんです
pythonを内臓(python26.dll?)してるからでしょうか
でもこれってpy2exe等で出力されると思うのですが

736 :デフォルトの名無しさん:2009/02/09(月) 00:11:30
IronPythonってまともなページャ有効にするにはどういう設定すればいいんだろう
せっかくdir()やhelp()で.NETのクラスやオブジェクトのイントロスペクションが
効くのに、速攻で流れてしまうのでは意味がない

737 :デフォルトの名無しさん:2009/02/09(月) 00:38:18
cygwinのbashで

738 :722:2009/02/09(月) 02:56:08
まさか俺のにせものが出るとはw
ほんとにruby厨って面白いなw

739 :デフォルトの名無しさん:2009/02/09(月) 02:58:40
pythonはモンティパイソン
rubyはドリフw

740 :デフォルトの名無しさん:2009/02/09(月) 03:13:12
そう言えばいかりやは死んでるんだよな〜・・・
未だに実感がないよ・・・長さん・・・

741 :デフォルトの名無しさん:2009/02/09(月) 09:12:22
だめだこりゃ

742 :デフォルトの名無しさん:2009/02/09(月) 10:42:08
よりPythonicなPythonを目指して[後編]
言語としての一貫性を重視した
Python 3の進化
ttp://www.atmarkit.co.jp/fcoding/articles/python3/02/python302a.html
ttp://www.atmarkit.co.jp/fcoding/articles/python3/02/python302b.html

743 :デフォルトの名無しさん:2009/02/09(月) 10:42:12
Ruby使ってる人って他の言語使ってる人につっかかってくるんだろうか。
Pythonの場合はC++と併用してたり他の言語も普通につかってて別に布教活動しねーよな

744 :デフォルトの名無しさん:2009/02/09(月) 11:42:08
>>743
「つっかかってくる」だけの人はどの言語にもいるが、RubyやPythonは
そういう手合でも判った気になれる言語だという事だと思う。

745 :デフォルトの名無しさん:2009/02/09(月) 17:51:11
>>742
従来通りint型を得たい場合には「//」という演算子を使います。

コメントに使えなくなるのは痛い

746 :デフォルトの名無しさん:2009/02/09(月) 18:09:12
俺、.NETとJavaScriptぐらいしかわからないんですけど
PHPとpyてょnのどちらを始めるべきですかね?

747 :デフォルトの名無しさん:2009/02/09(月) 18:11:12
>>746
どーもPythonらしいけど

748 :デフォルトの名無しさん:2009/02/09(月) 18:11:13
どっちもやればいいよ

749 :デフォルトの名無しさん:2009/02/09(月) 18:15:22
>>745
//演算子自体は2.Xにもあるじゃん

750 :デフォルトの名無しさん:2009/02/09(月) 18:24:49
Ruby信者の永遠のライバル、HSP!

751 :デフォルトの名無しさん:2009/02/09(月) 19:50:59
さくらインターネットでwebプログラミングするなら
PHP >>>> Ruby >>>>>>>>>>>>>>>>>>Python

さくらさんお願いですから、Pythonのバージョンあげてください。
せめて2.5に。

752 :デフォルトの名無しさん:2009/02/09(月) 19:57:25
さくらだったら自分でコンパイルすればいいじゃん

753 :デフォルトの名無しさん:2009/02/09(月) 20:09:49
お前にさくらはもったいない。
xreaへ逝くがよい。

754 :デフォルトの名無しさん:2009/02/09(月) 21:29:34
 ちょっと他のスレッドで発見したのですが
     ↓
ラーメンタイマーでも作ってみれ。
カップヌードル用(3分)とどんべい用(5分)に分ける。
できればタスクバーに駐在する奴。

こういうのってPythonでもサクっと作れますか?
できればexe化したもの

755 :デフォルトの名無しさん:2009/02/09(月) 21:32:46
Tkinter でさくっと作れるよ。

756 :デフォルトの名無しさん:2009/02/09(月) 22:38:54
シェルでsleepしてビープならせ

757 :デフォルトの名無しさん:2009/02/09(月) 23:59:14
そのスレッドに
sleep 180 & echo ^G^G^G
と書いた覚えがある

758 :デフォルトの名無しさん:2009/02/10(火) 03:52:38
import win32com.client
w=win32com.client.Dispatch('WScript.Shell')
w.Popup('カップヌードル/どんべえ', 180, 'おまちください')
w.Popup('どんべえ', 120, 'おまちください')

759 :デフォルトの名無しさん:2009/02/10(火) 06:40:35
>>754
ttp://www.shido.info/py/tkinter3.html

760 :デフォルトの名無しさん:2009/02/10(火) 08:44:00
>>754
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8861.txt
(UTF-8)
pause/stopあたりにバグあるけど途中で面倒になった
exe化はpy2exeで出来ると思うので自分でやってみて

761 :デフォルトの名無しさん:2009/02/10(火) 10:34:12
>>760
Quit したあとにアプリケーションエラーが出た
別の PC でやったら出なかったので
うちの PC がおかしいのかも知れないが

762 :デフォルトの名無しさん:2009/02/10(火) 10:46:01
xset b でビープ音いじれるんだな
通常のビープ音がうるさいとあれだから、xset bで再設定すれば、戻るし

Pythonで組み込み系コマンドを使うのって、execでいけるんだっけ?
簡易タイマー
機能 時間指定タイマー・秒数・分数指定タイマー・ビープ音バリエーション数種類
みたいなの、作れるかな
シェルスクリプトでやったほうが素直かな

763 :デフォルトの名無しさん:2009/02/10(火) 10:47:02
pythonでネットワークパケットいじれるモジュールないの?

764 :デフォルトの名無しさん:2009/02/10(火) 10:48:50
コマンド実行後に残り秒数表示のコマンドを打つと出力してくれる機能も欲しいか

765 :デフォルトの名無しさん:2009/02/10(火) 10:51:08
>>763
ttp://oss.coresecurity.com/projects/impacket.html
とかは?

766 :デフォルトの名無しさん:2009/02/10(火) 10:56:48
>>762
> Pythonで組み込み系コマンドを使うのって、execでいけるんだっけ?
exec文/関数はPythonコードを実行するためのもので
超おおざっぱに言えば文用のeval()
外部プロセスを起動したいときはsubprocessモジュールを使う

767 :デフォルトの名無しさん:2009/02/10(火) 11:09:02
>>765
ウヲオオォ。おもしれー。
pcapyとのコンビも楽しめるじゃない。
お兄さん、パケット自作しちゃうぞー。

768 :デフォルトの名無しさん:2009/02/10(火) 11:32:58
>>479 の Python Network Programing 本読んでみようと思うんだけど
Python 3 でも使える?

769 :デフォルトの名無しさん:2009/02/10(火) 11:50:35

ttp://www.amazon.com/dp/0596100329/ $22.76
ttp://www.amazon.co.jp/dp/0596100329/ \3,056


770 :デフォルトの名無しさん:2009/02/10(火) 12:03:50
>>768
その本は4,5年前に出た奴だから、内容がかなり古いぞ。

あと扱うプロトコルが多岐に亘る分、広く浅い。
突っ込んだ説明を求めてるのなら肩透かしを食うかも。
Apressのサイトのサンプルコードを眺めてから買うことを勧める。

771 :デフォルトの名無しさん:2009/02/10(火) 12:04:43
>>769
グロ注意

772 :デフォルトの名無しさん:2009/02/10(火) 12:30:39
>>766
さんくす
はじPyには、載っていないっぽいね
とりあえず、ライブラリみてるお
シェルスクリプトで実装しちゃうけど

Beep音のバリエーションだけは、欲しいなあ
X以外のときは、みんな、どうしているんだろ

773 :デフォルトの名無しさん:2009/02/10(火) 12:54:18
mp3です

774 :デフォルトの名無しさん:2009/02/10(火) 13:28:05
簡単だったんで、subprocessを使って、超簡単なものができた
0.1秒単位でビープ音を変えられるみたいだから
いろいろとできそうだね

775 :デフォルトの名無しさん:2009/02/10(火) 13:38:41
os.system()じゃないのかなあ。

776 :デフォルトの名無しさん:2009/02/10(火) 13:39:33
767だが、impacketはやめた。
別のにするわ。
ttp://www.secdev.org/projects/scapy/

777 :デフォルトの名無しさん:2009/02/10(火) 13:51:46
>>768
767だが、その本は止めとけ。
内容のレベルが低すぎるし、中でどうなってるのかも説明してない。


778 :デフォルトの名無しさん:2009/02/10(火) 17:48:01
そういやstreamに垂れ流すだけで色んな音が出てくるドライバあったような

779 :デフォルトの名無しさん:2009/02/10(火) 19:51:30
ちょっと外れるがChunkという言語があるよ
ttp://chuck.cs.princeton.edu/

780 :デフォルトの名無しさん:2009/02/10(火) 20:11:31
間違えた
chunk -> chuck

781 :デフォルトの名無しさん:2009/02/10(火) 20:11:53
時給1500円でPython教えます
需要ありますか?

782 :デフォルトの名無しさん:2009/02/10(火) 20:18:28
テキスト読んで理解できない人って教えて貰うと理解できるのか?

783 :デフォルトの名無しさん:2009/02/10(火) 20:49:37
>>760
わざわざ作っていただいてありがとうございます。
サクっと作ったみたいなのでビックリです。
しかし、実行できないのですが・・・自分の環境・やり方が間違っているのですが(汗
python ******.py
ではだめなんですよね?

784 :デフォルトの名無しさん:2009/02/10(火) 21:17:42
>>783
>>760だったらwxPython入れないと動かないんじゃないの

785 :デフォルトの名無しさん:2009/02/10(火) 22:21:20
エラー見てわからない時点で
プログラムには向いてない

786 :デフォルトの名無しさん:2009/02/10(火) 22:23:44
>>783
丁寧に質問しているようで全然なってないという最悪のケースだな。

「実行できない」 ってのは具体的に何?
エラーが出たのならそのまんまコピペ汁

787 :デフォルトの名無しさん:2009/02/10(火) 22:30:12
女の子なら無料でPython教えます

788 :デフォルトの名無しさん:2009/02/10(火) 23:07:04
だめだ、卑隈なレスしか思い付かない

789 :デフォルトの名無しさん:2009/02/10(火) 23:32:41
手取り足取り腰取り

790 :デフォルトの名無しさん:2009/02/10(火) 23:33:17
初めてのPython3版でるのか・・・
勉強し直すかな

791 :デフォルトの名無しさん:2009/02/11(水) 01:53:43
2.5対応の部分ってどのぐらいあるんだろうね。
邦訳出してくれるのはありがたいな。

792 :デフォルトの名無しさん:2009/02/11(水) 03:04:18
尻撮り

793 :デフォルトの名無しさん:2009/02/11(水) 08:28:48
>>787
なぜ女なんだ

794 :デフォルトの名無しさん:2009/02/11(水) 09:30:01
PythonのGUIライブラリはwxPythonで決まりっぽいね。

924 名前:デフォルトの名無しさん[sage] 投稿日:2009/02/11(水) 01:14:35
C++でGTKで書いたアプリを
wxPythonで書き直したら
後者の方が超速くて泣いた


795 :デフォルトの名無しさん:2009/02/11(水) 09:37:40
あー、すごく突っ込みたい。ってもうこれが突っ込みになってるか。はぁ

796 :デフォルトの名無しさん:2009/02/11(水) 10:30:16
俺、下朝鮮が大嫌いだからソニーのブラビア買ったよ!

797 :デフォルトの名無しさん:2009/02/11(水) 10:48:25
Pythonが廃れてRubyがメジャーになるらしい。
どうやら利用人口が逆転したとか

798 :デフォルトの名無しさん:2009/02/11(水) 10:50:49
>>797
またお前か。
Ruby厨はいい加減にしろよ。
だからRubyは嫌われるんだよ。

799 :デフォルトの名無しさん:2009/02/11(水) 10:53:34
自演乙

800 :デフォルトの名無しさん:2009/02/11(水) 11:18:12
さすがRubyだ

801 :デフォルトの名無しさん:2009/02/11(水) 11:30:24
まあ俺に関して言えば、別に流行っているからとか、Googleが使っているからいってPythonを使っているわけではないのだ。
だからRuby人口がPythonを抜いても無問題。

802 :デフォルトの名無しさん:2009/02/11(水) 12:39:15
男の子なら無料でPython教えます

803 :デフォルトの名無しさん:2009/02/11(水) 13:58:48
2to3がreload()をimp.reload()に直してくれないんだけど
これを追加してもらうにはどうすりゃいいのかな

804 :デフォルトの名無しさん:2009/02/11(水) 13:59:42
アッー!

805 :デフォルトの名無しさん:2009/02/11(水) 14:12:53
py3kいいなぁ、
インスコしただけだけど、xmlとかhtmlとかがモジュール名になってるんだな。
これはスッキリしてていい。
はやく外部モジュールも3kに移行してくれー。

806 :デフォルトの名無しさん:2009/02/11(水) 14:17:09
Rubyのほうがはるかに良い。

807 :デフォルトの名無しさん:2009/02/11(水) 14:25:52
ruby厨まじでうざい。ほんと消えてくれ。

808 :デフォルトの名無しさん:2009/02/11(水) 14:46:03
Python に一致する日本語のページ 約 1,560,000 件中 1 - 10 件目 (0.09 秒)

809 :デフォルトの名無しさん:2009/02/11(水) 14:46:36
Ruby に一致する日本語のページ 約 2,480,000 件中 1 - 10 件目 (0.06 秒)

810 :デフォルトの名無しさん:2009/02/11(水) 14:50:32
結果に2倍ぐらい差があります。
完全に python の勝利です。

Results 1 - 100 of about 202,000 for "python programming language". (0.45 seconds)

Results 1 - 100 of about 119,000 for "ruby programming language". (0.16 seconds)

設定は全ての言語で。


811 :デフォルトの名無しさん:2009/02/11(水) 14:51:23
>>808,809
なんという頭の悪さ

812 :デフォルトの名無しさん:2009/02/11(水) 14:56:34
rubyは会社の奴は誰でも聞いたことあるみたいで誰も文句言わないのに
python使おうとすると技術系キモヲタ扱いされて嘲笑されるんだ



813 :デフォルトの名無しさん:2009/02/11(水) 15:38:40
Rubyの今の良いイメージは日本人が作ったってのがでかいんじゃないのかな?
まぁ腕時計のGショックみたいにRailsの逆輸入で火がついたってのは皮肉な話だけど。

Rubyいろんな雑誌に記事出したり普及活動してたからな〜
いつだったかJavaのオブジェクト指向をマスターしよう!っていう内容の
本なのにRubyで説明してるのがあって笑った

Ruby厨は当時から気持ち悪かった

814 :デフォルトの名無しさん:2009/02/11(水) 16:31:09
>808
しゃべれなくてもいいから、読めるようになろうな>英語

815 :デフォルトの名無しさん:2009/02/11(水) 16:36:35
>>808
これでRubyの有用性が証明されたね

816 :デフォルトの名無しさん:2009/02/11(水) 16:38:10
ttp://www.oreilly.co.jp/books/9784873113937/

808ページって,何キロくらいあるんだろう。

817 :デフォルトの名無しさん:2009/02/11(水) 16:42:09
>>815
お前マジで首吊って死ねよ。
Pythonの方が人気あるからって嫉妬すんな。

818 :デフォルトの名無しさん:2009/02/11(水) 16:50:14
Ruby厨はRubyが一番素晴らしいと思い込んでいるなら、
なんでわざわざ他のスレまで来て必死に布教しているんだろうなぁ。


819 :デフォルトの名無しさん:2009/02/11(水) 16:50:30
>>808
日本語のページを検索ワロチ

python の検索結果 約 66,900,000 件中 1 - 10 件目 (0.10 秒)

820 :デフォルトの名無しさん:2009/02/11(水) 16:51:53
ruby の検索結果 約 894,366,900,000 件中 1 - 10 件目 (0.10 秒)

821 :デフォルトの名無しさん:2009/02/11(水) 16:58:16
スルー力が足りないぜ!

822 :デフォルトの名無しさん:2009/02/11(水) 16:58:58
ルビーっていう宝石を知らんのか?


823 :デフォルトの名無しさん:2009/02/11(水) 17:00:21
パイソンっていう蛇を知らんのか?

824 :デフォルトの名無しさん:2009/02/11(水) 17:20:03
グロ注意

825 :デフォルトの名無しさん:2009/02/11(水) 17:21:10
パイパン - Wikipedia
語源は麻雀牌の「白板」(=パイパン、baiban。三元牌の1つ。
上に何も描かれていない白一色の牌)によると言われている。
元々はこの牌を意味する隠語に「土器」(「かわらけ」と読む。
表面に何も装飾のない「素土器」の意)という言葉があり、最初は陰毛 ...


826 :デフォルトの名無しさん:2009/02/11(水) 17:31:01
RUby厨うぜ

827 :デフォルトの名無しさん:2009/02/11(水) 18:07:49
Ruby使おうぜ
に見えたorz

828 :デフォルトの名無しさん:2009/02/11(水) 18:15:23
>>816
凶器になりそうだな

829 :デフォルトの名無しさん:2009/02/11(水) 18:57:47
みんなインデントの幅って深さ1つあたりスペースいくつぶんにしてる?
深くなってきたらインデント1つの幅を変えたりとかする?

830 :デフォルトの名無しさん:2009/02/11(水) 19:09:49
俺はPythonもRubyも両方使ってたけど、
このスレのRuby荒らしを見て、なんかもうRubyを使いたくなくなった。
ああいう程度の低い人がRubyを使ってるのかと想像すると悲しくなるから。

831 :デフォルトの名無しさん:2009/02/11(水) 19:17:32
>>829
Pythonの中の人は基本4つ分で、グーグルの仕事の時だけ2つ分にしてるらしい
一週間前から勉強し始めた俺は4つ分

832 :デフォルトの名無しさん:2009/02/11(水) 19:20:01
>>829
4幅。
PEPに書いてなかったっけ?

コードは基本、ネストレベルが深くなりすぎないように気をつけてる。
気になるほど横に広がらざるを得ないって状況は少ない。



833 :デフォルトの名無しさん:2009/02/11(水) 19:25:13
>>829
公式では4が推奨されているし、pythonライブラリはほぼ全部indent=4。


834 :デフォルトの名無しさん:2009/02/11(水) 20:05:09
スルー力お勉強スレ

835 :デフォルトの名無しさん:2009/02/11(水) 20:28:55
Rubyもやってたときに2にしてしっくりきてるから
Pythonでも2で書いてる
特に苦情ないよ

836 :デフォルトの名無しさん:2009/02/11(水) 21:00:16
>>835
今直ぐ止めろw

837 :デフォルトの名無しさん:2009/02/11(水) 21:04:54
あいだとって3にすれば文句あるまい

838 :デフォルトの名無しさん:2009/02/11(水) 21:16:04
俺はエイトマン

839 :デフォルトの名無しさん:2009/02/11(水) 21:28:08
>>835
Rubyの力は雄大だな

840 :デフォルトの名無しさん:2009/02/11(水) 21:59:15
インデント=2に慣れると4は広すぎると感じる。
4に慣れると2が窮屈に感じる。

841 :デフォルトの名無しさん:2009/02/11(水) 22:03:19
1spaceでいいだろ
馬鹿かお前ら

842 :デフォルトの名無しさん:2009/02/11(水) 22:13:39
pass

843 :デフォルトの名無しさん:2009/02/11(水) 22:16:16
こういう話題ができるのも、パイソンだけだね^^

844 :デフォルトの名無しさん:2009/02/11(水) 22:24:40
2にした上で、インデントの深さに応じてインデントの色変えてる
自分で素だと見づらい事を認めちゃってる気がしないでもないが

845 :デフォルトの名無しさん:2009/02/11(水) 22:55:16
インデントの色?

846 :デフォルトの名無しさん:2009/02/11(水) 22:55:52
タプルとシーケンスのどちらを使っても変わらないような気がするときはどう決めればよいですか?

847 :デフォルトの名無しさん:2009/02/11(水) 22:58:10
タブルとシーケンス

848 :デフォルトの名無しさん:2009/02/11(水) 22:59:28
要素が同じ型→シーケンス、別の型→タプル
インデックスアクセスする→シーケンス、しない→タプル

849 :デフォルトの名無しさん:2009/02/11(水) 23:00:34
可変長ならシーケンス

850 :デフォルトの名無しさん:2009/02/11(水) 23:01:22
>>845
インデントの深さに応じて背景色を変えてる
ってことじゃないか?

851 :デフォルトの名無しさん:2009/02/11(水) 23:06:21
>>848-849
同じ型で変更予定がないから迷っていたのですが、インデックスアクセスするのでシーケンスにします。ありがとうございました。

852 :デフォルトの名無しさん:2009/02/11(水) 23:06:51
あ、シーケンスじゃなくてリストか

853 :デフォルトの名無しさん:2009/02/11(水) 23:08:06
おどかすなよ
必死で
Python シーケンス
で調べた俺に謝れ

854 :デフォルトの名無しさん:2009/02/11(水) 23:08:44
ごめんなさい><

855 :デフォルトの名無しさん:2009/02/11(水) 23:11:35
ごめんね

856 :デフォルトの名無しさん:2009/02/11(水) 23:11:49
ごめんよ

857 :デフォルトの名無しさん:2009/02/11(水) 23:23:44
シーケンス=タプル、リスト、その他ですね^^

858 :デフォルトの名無しさん:2009/02/11(水) 23:43:53
みんなでRuby使おうよ。たのしいよ

859 :デフォルトの名無しさん:2009/02/11(水) 23:50:18
ごめんね、それだけはムリ

860 :722:2009/02/12(木) 00:01:29
ぶっちゃけrubyやるぐらいならlispとsqueak勉強した方がいいな

861 :デフォルトの名無しさん:2009/02/12(木) 00:53:52
Rubyを覚えると、RPGツクール内蔵Rubyが使えるよ!

862 :デフォルトの名無しさん:2009/02/12(木) 01:42:19
Cで言うと
リスト=配列
タプル=構造体
みたいな感じで使い分けてる俺

863 :デフォルトの名無しさん:2009/02/12(木) 01:48:37
配列=リスト
構造体=クラス(インスタンス変数とかいうやつ)

タプルは使いどころがわかんないね

864 :デフォルトの名無しさん:2009/02/12(木) 01:57:00
C配列->リスト
C構造体->タプル(わざわざオブジェクト指向を徹底するほどの規模でもないとき)
Cクラス->クラス(ちゃんと後のこと考えて設計するとき)
かな

865 :デフォルトの名無しさん:2009/02/12(木) 01:58:39
どちらかというと
構造体->ハッシュ
の方が良く使うけどね

866 :デフォルトの名無しさん:2009/02/12(木) 03:58:56
1

867 :デフォルトの名無しさん:2009/02/12(木) 04:04:13
2

868 :デフォルトの名無しさん:2009/02/12(木) 08:43:18
>>865
構造体にハッシュを使いたくなったら、代わりに named tuple を使おう。(Python 2.6以降)

869 :デフォルトの名無しさん:2009/02/12(木) 09:15:48
すぐそこSunkus

870 :デフォルトの名無しさん:2009/02/12(木) 09:25:56
ttp://inforno.net/articles/2008/10/03/python26-features
>>> var_type = collections.namedtuple('variable',
... 'id name type size')
# Names are separated by spaces or commas.
# 'id, name, type, size' would also work.
>>> var_type._fields
('id', 'name', 'type', 'size')

>>> var = var_type(1, 'frequency', 'int', 4)
>>> print var[0], var.id # Equivalent
1 1
>>> print var[2], var.type # Equivalent
int int
>>> var._asdict()
{'size': 4, 'type': 'int', 'id': 1, 'name': 'frequency'}
>>> v2 = var._replace(name='amplitude')
>>> v2
variable(id=1, name='amplitude', type='int', size=4)

871 :デフォルトの名無しさん:2009/02/12(木) 16:54:20
>>893
指針のひとつとして、提案すると
tuple or class(instance object) の選択は、属性への代入操作をするかしないか。(immutable or mutable)

手軽に構造体代わりというなら自分もnamedtupleに1票だけど、_replace使うくらいならクラスにしたほうがいい。
クラス / tuple の使い分けで、tupleの場合は同じ変数に別データの上書き禁止とかローカルルールも併用すると、
変数の型だけ追って見て、オブジェクトが状態を持ってるかどうか解るよーになる。(機械的なチェックはないけど)

構造体 -> ハッシュ(辞書?)は、属性名固定なのにハッシュ値計算されるのが無駄なように思う。
…とは言え、通常のオブジェクトの属性アクセスも殆どは辞書アクセスなんだよね。(CPython)
構造体代わりとしてクラス使うなら、new style class で __slots__ 宣言するのがいいのかな。

872 :デフォルトの名無しさん:2009/02/12(木) 17:33:30
未来安価了

873 :デフォルトの名無しさん:2009/02/12(木) 18:14:51
rubyはバージョン間の互換性ないのがなあ

874 :デフォルトの名無しさん:2009/02/12(木) 18:18:46
pythonの話しようぜ

875 :デフォルトの名無しさん:2009/02/12(木) 20:21:50
874

876 :デフォルトの名無しさん:2009/02/12(木) 21:13:35
3要素からなるリストのリスト S = [[1,4,3], [3,7,4], ...] があり、
S[i] のうちで
・ S[i][2] が最小のもの
・ S[i][1] が L 以下のもののうち、S[i][2] が最小のもの
・ S[i][0] が L 以下で、S[i][1] が L 以上のもののうち、S[i][2] が最小のもの
を取得したいのですが、関数定義して filter や min に渡してやればよいのでしょうか

877 :デフォルトの名無しさん:2009/02/12(木) 21:20:34
好きなようにやればいいじゃない!
ただ性能的にfilterよりジェネレータ式使ったほうがいいかもね

def third(x): return x[2]
min(S, key=third)
min((x for x in S if x[1]<=L), key=third)
min((x for x in S if x[0]<=L and x[1]>=L), key=third)


878 :874:2009/02/12(木) 21:21:27
>>875
何も考えずに書いた。
俺は天才かもしれん。

879 :876:2009/02/12(木) 21:33:34
>>877
こんな簡単に書けるんですね。やっぱ Python 選んでよかったです。

880 :デフォルトの名無しさん:2009/02/12(木) 21:38:34
日本語の検索結果に釣られすぎだろお前らw

881 :デフォルトの名無しさん:2009/02/12(木) 22:06:48
lambda式でおkだよ^^

882 :デフォルトの名無しさん:2009/02/12(木) 23:22:21
>>880
たしかにPythonとRubyはサポートしているデータ構造も想定される
用途もかなりオーバーラップしてるから全く違う言語を学習する方
がいいな。HSPとかね。あれは勉強になった。書いてるだけで発狂
しそうになったのはあの言語だけだ

883 :デフォルトの名無しさん:2009/02/12(木) 23:23:22
880->860

884 :デフォルトの名無しさん:2009/02/12(木) 23:24:29
HSP本って最近めっきり見なくなったな
何だったんだ

885 :デフォルトの名無しさん:2009/02/13(金) 01:49:31

勝ち負けは基本的にどうでもいいんだけどPythonの人はこのスレに来て何をしたいの?
新規ユーザーをrubyに取られるのが怖いの?ネガティブキャンペーンてやつ?

886 :デフォルトの名無しさん:2009/02/13(金) 01:59:33
はぁ

887 :デフォルトの名無しさん:2009/02/13(金) 02:01:17
ふぅ

888 :デフォルトの名無しさん:2009/02/13(金) 02:38:30
888

889 :デフォルトの名無しさん:2009/02/13(金) 03:09:53
wxPythonは欠陥品だな

890 :デフォルトの名無しさん:2009/02/13(金) 07:19:43
>>882
VB2005 (2008以降への移行はそのうちやる) 使いなんだが
Python の他には何を学習したらいいと思う?

891 :デフォルトの名無しさん:2009/02/13(金) 09:11:45
>>885
釣られてやる。
スレタイ確認しろ。


892 :デフォルトの名無しさん:2009/02/13(金) 12:48:04
蛇足だけど、共通部分をまとめると、

import operator
import functools
min_3rd = functools.partial(min, key=operator.itemgetter(2))
min_3rd(S)
min_3rd(x for x in S if x[1] <= L)
min_3rd(x for x in S if x[0] <= L <= x[1])

893 :デフォルトの名無しさん:2009/02/13(金) 15:02:59
>>890
教養的には用途が被ってなければなにやっても為になると思うけど
実用的には沢山言語を触ったことがあるかよりアルゴリズム
をどれだけ知っているかとかsql使えるとかSubversion使えるほうが大事で
VBとPythonが使えるなら言語を学習する時間を他の事を学習する時
間に当ててみては。というと、結論としては英語。

894 :デフォルトの名無しさん:2009/02/13(金) 18:10:03
>>803
2to3の変換は基本 2.6 -> 3.0 なので、
返還前に2.6の警告オプション付で警告なしで通るようにしてから 2to3を使う。
この場合は、返還前のコードをimp.reloadに修正するのが推奨されてる方法だと思う。

2.5とも互換を保ちたければ、
try:
  from imp import reload
except ImportError:
  pass



895 :デフォルトの名無しさん:2009/02/13(金) 20:53:01
>>884
無料開発環境配って解説本で設けるビジネスモデル。
その取り巻きがすごく多かった。
おそらくHSPの主な支持者は、団塊世代から団塊Jrまでの中間層の、アセンブラで育った世代じゃないかと推測。
基本であるBasicやC言語などは構造化プログラミングを導入したので、
jmpで自由なコーディングをしてきた人々にはむしろ理解しがたかった可能性がある。
そういう流れに取り残された、趣味プログラマから受け入れられたんじゃないかな。

僕もオブジェクト指向はいろいろ呼んでみたけど理解できなかったし。


896 :デフォルトの名無しさん:2009/02/13(金) 20:56:25
オブジェクト指向を呼んでみたり
コードを返還してみたり
Python使う人はすごいですね!

897 :デフォルトの名無しさん:2009/02/13(金) 21:12:00
それがPythonistaなのさ

898 :デフォルトの名無しさん:2009/02/13(金) 22:20:52
>>894
なるほど、よくわかりました。

899 :デフォルトの名無しさん:2009/02/13(金) 23:12:58
市場価値の高い言語はどれだ?
求人数はJava、年収はC#がトップ――ワークポートが調査 - @IT
http://www.atmarkit.co.jp/news/200902/13/wp.html

求人数で見ると、やはりJava・Cの2強は揺ぎ無いな。
そこからはC++、PHPと続いて・・C#、VB、Perl、JavaScript、"COBOL"、VB.NET

C#よりVBの方が少なくてあれ?と思ったら、VB.NET分は別集計で合わせればVBの方が多い・・なるほど
しっかし、未だにCOBOLが10位内に入ってるなんて・・まだまだ絶滅しそうにないな。


900 :デフォルトの名無しさん:2009/02/13(金) 23:51:16
明日はチョコレートの日だお

901 :デフォルトの名無しさん:2009/02/14(土) 00:39:32
今妹の作った余り物を食ってるお

902 :デフォルトの名無しさん:2009/02/14(土) 00:40:34
>>899
Pythonはやっぱり日本ではマイナーだw
でも、lispとかもないんだなw

903 : ◆UNKOVIP9RM :2009/02/14(土) 01:57:32
import チョコレート

904 :デフォルトの名無しさん:2009/02/14(土) 02:15:07
insert my python
俺はもう駄目だ

905 :デフォルトの名無しさん:2009/02/14(土) 14:24:55
# namedtuple for 2.5

def namedtuple(name, fields):
    from operator import itemgetter
    fields = fields.split() if hasattr(fields,'split') else fields
    attrs = dict((k,property(itemgetter(i))) for i,k in enumerate(fields))
    attrs.update({
     '__new__': (lambda cls,*xs: tuple.__new__(cls, xs)),
     '_make': classmethod(lambda cls,xs: cls(*xs)),
     '_fields': tupple(fields),
     })
    return type(name, (tuple,), attrs)

便利なので簡易版書いてみた。backportされないかなぁ。

906 :デフォルトの名無しさん:2009/02/14(土) 14:35:31
>>905
そんなバグありで使い道もいまいちパッとしない関数 (ry

907 :デフォルトの名無しさん:2009/02/14(土) 15:33:23
2.5ならこれ使えばいい
http://code.activestate.com/recipes/500261/

908 :デフォルトの名無しさん:2009/02/14(土) 19:26:53
>>905
マイナーバージョンアップで追加された機能がbackportされるわけねーだろwww

909 :デフォルトの名無しさん:2009/02/14(土) 20:35:12
3.0.1

910 :デフォルトの名無しさん:2009/02/14(土) 21:42:37
Python使う人間って南国の陽気な人間て感じがするんだよな

911 :デフォルトの名無しさん:2009/02/14(土) 21:46:17
どちらかというとRuby使う人のが明るい

912 :デフォルトの名無しさん:2009/02/14(土) 21:47:48
何と戦ってるんだ?w

913 :デフォルトの名無しさん:2009/02/14(土) 22:33:10
>>912
お ま え


914 :デフォルトの名無しさん:2009/02/14(土) 23:08:20
Python使いはツンデレ
Ruby使いはヤンデレ

そんな妄想

915 :デフォルトの名無しさん:2009/02/14(土) 23:20:18
min 関数で最小値を取り出すとき、key に関数を指定しますが、リスト内にいくつかの異なった要素があってこれらの key が等しくなるような場合はどれが返されるのでしょうか?
少し実験してみたら最初に見つかったものが返されているようですが、これは決まっていることですか? それとも偶然かもしれませんか?

916 :デフォルトの名無しさん:2009/02/14(土) 23:38:15
みんなごめん。
いよいよ会社の貯金も先が見えてきたよ。
不況の世の中転職も大変だと思うが、がんばってくれよ。

917 :デフォルトの名無しさん:2009/02/15(日) 00:16:08
>>915
保証はしていないみたいだけど
シーケンスにmin関数を適用したときに
仮に最初に見つかったもの以外が返されるなら
いったい中でどんなことやってるのか知りたい。

918 :デフォルトの名無しさん:2009/02/15(日) 00:25:25
>>915
Python3のソース見る限りだとこんな感じのコードになってたので決まってることなんだろう。

m = next( iterable )
if not keyfunc is None:
 m = keyfunc( m )
while not iterable.empty()
 val = next( iteratable )
 if not keyfunc is None:
  val = keyfunc( val )
 if m < val:
  m = val
return m

minとmaxって同じ関数を引数変えて呼び出してるだけなんだな
static PyObject *
builtin_min(PyObject *self, PyObject *args, PyObject *kwds)
{
return min_max(args, kwds, Py_LT);
}
static PyObject *
builtin_max(PyObject *self, PyObject *args, PyObject *kwds)
{
return min_max(args, kwds, Py_GT);
}


919 :デフォルトの名無しさん:2009/02/15(日) 00:34:43
>>918
> Python3のソース見る限りだとこんな感じのコードになってたので
> 決まってることなんだろう。

そういうもんじゃないと思うが。
そもそも「最初に見つかった」って一体何なんだ?


920 :デフォルトの名無しさん:2009/02/15(日) 00:36:25
みんなのパイパイっていつ発売になるの?

もうすぐでるならPHPやめてPythonやりたい

921 :デフォルトの名無しさん:2009/02/15(日) 00:44:04
>>919
keyで指定した関数で得られる値が同じ要素のうち、イテレータブルを走査したときに
より先に現れる方、という意味だと思うけど
自分も>>918みたいに思ったのでhelp(min)してみたけど書いてないのでソースで!
って思ったんだけどたしかにそういうもんじゃないね

922 :デフォルトの名無しさん:2009/02/15(日) 00:50:47
918 -> 917
いつも間違えるorz

923 :デフォルトの名無しさん:2009/02/15(日) 02:27:55
どちらにしろ、実装で決まっててもそれをあてにしたコードは書けまい。

924 :デフォルトの名無しさん:2009/02/15(日) 03:55:12
どうせ実装なんて1つしかないと開き直る手もあるぞ

925 :デフォルトの名無しさん:2009/02/15(日) 17:23:36
pythonの実装をC++&boostにしてboostとシームレスに行き来できるようにしてくんねーかなー


926 :デフォルトの名無しさん:2009/02/15(日) 18:05:12
2回言っても通じないってのは、余程人の話を聞かないか、分かってて煽ってるのか、複数人が連携して存在しない人格を作っているのかw

927 :デフォルトの名無しさん:2009/02/15(日) 19:59:36
Rubyしかまともな言語がない状況では

928 :デフォルトの名無しさん:2009/02/15(日) 22:08:07
>>925
boost厨乙

929 :デフォルトの名無しさん:2009/02/15(日) 22:11:57
pass

930 :デフォルトの名無しさん:2009/02/15(日) 23:37:57
RubyやるくらいならPerlの方がまだマシだなぁ

931 :デフォルトの名無しさん:2009/02/16(月) 00:26:20
>>930
一度しかない人生。自分を大切に。


932 :デフォルトの名無しさん:2009/02/16(月) 01:04:40
いやPerlの後にPythonとRubyを実際に触ってみての感想なんだが

933 :デフォルトの名無しさん:2009/02/16(月) 01:06:22
まあ無人島に二人きりになるとしたらLarryだよな。

934 :デフォルトの名無しさん:2009/02/16(月) 01:13:56
1

935 :デフォルトの名無しさん:2009/02/16(月) 01:27:05
日本語通じるMatzだろ

936 :デフォルトの名無しさん:2009/02/16(月) 01:28:25
断然Larryだな

937 :デフォルトの名無しさん:2009/02/16(月) 01:31:24
何故か候補にすら上がらないGuido

938 :デフォルトの名無しさん:2009/02/16(月) 01:36:21
キャラが薄すぎるんだよな・・・

939 :デフォルトの名無しさん:2009/02/16(月) 01:38:02
pass

940 :デフォルトの名無しさん:2009/02/16(月) 01:39:34
>>919
要するに安定したソートか否かってことジャマイカ

941 :デフォルトの名無しさん:2009/02/16(月) 01:41:14
RMSだと人生が変わってしまうかもしれん。

942 :デフォルトの名無しさん:2009/02/16(月) 01:41:34
たまにはGuidoのことも思い出してあげてください><

943 :デフォルトの名無しさん:2009/02/16(月) 01:46:03
次スレ

Pythonのお勉強 Part32
http://pc11.2ch.net/test/read.cgi/tech/1234716330/

944 :デフォルトの名無しさん:2009/02/16(月) 01:49:07
ウメぼし食べて

945 :デフォルトの名無しさん:2009/02/16(月) 01:49:25
ume星

946 :デフォルトの名無しさん:2009/02/16(月) 01:49:52
ウメ太郎

947 :デフォルトの名無しさん:2009/02/16(月) 01:50:03
うめ

948 :デフォルトの名無しさん:2009/02/16(月) 01:50:23
おっぱいに顔をうめたい

949 :デフォルトの名無しさん:2009/02/16(月) 01:50:47
ruby厨を地面にうめたい

950 :デフォルトの名無しさん:2009/02/16(月) 01:51:02
うめぼしたべてすっぱまん!

951 :デフォルトの名無しさん:2009/02/16(月) 02:10:58
ウメェェェェェ

952 :デフォルトの名無しさん:2009/02/16(月) 02:20:19
>>925
それなら俺はcommon lisp上に作られた
clpython http://trac.common-lisp.net/clpython/
でctypesとかCで書かれたpython module使えるようにしてほしいぞ


953 :デフォルトの名無しさん:2009/02/16(月) 03:44:03
isと==の違いってなに?

954 :デフォルトの名無しさん:2009/02/16(月) 04:01:59
isと==の違いってなに?

955 :デフォルトの名無しさん:2009/02/16(月) 04:02:31
>>953 == >>954 は True
>>953 is >>954 は False

>>953 == >>953 は True
>>953 is >>953 は True

956 :デフォルトの名無しさん:2009/02/16(月) 04:07:38
文字列って関数の引数とかに渡したり返り値で返すときって、参照ですよね?

957 :デフォルトの名無しさん:2009/02/16(月) 04:08:11
質問すれと間違えたごめんよ

958 :デフォルトの名無しさん:2009/02/16(月) 18:41:15
>>935
日本語通じるかなあwww

959 :デフォルトの名無しさん:2009/02/16(月) 22:42:22
俺もそれは思ったw

960 :デフォルトの名無しさん:2009/02/17(火) 00:42:36
やってみたい言語は haskell と lisp かなあ

961 :デフォルトの名無しさん:2009/02/17(火) 01:19:18
やってみたい言語は Ruby と Ruby かなあ

962 :デフォルトの名無しさん:2009/02/17(火) 01:35:23
earlangかなぁ

963 :デフォルトの名無しさん:2009/02/17(火) 01:38:08
RubyとJava以外

964 :デフォルトの名無しさん:2009/02/17(火) 02:46:27
htmlは外せないな


965 :デフォルトの名無しさん:2009/02/17(火) 02:47:06
C++

966 :デフォルトの名無しさん:2009/02/17(火) 03:35:56
HSP

967 :デフォルトの名無しさん:2009/02/17(火) 04:12:45
A アセンブリ言語
B BASIC
C C言語
…(略…
Z まで制覇しるm9(・∀・)ビシッ!!

968 :デフォルトの名無しさん:2009/02/17(火) 05:44:35
le Fran¸le;ais

969 :デフォルトの名無しさん:2009/02/17(火) 05:45:31
le Franc¸ais

970 :デフォルトの名無しさん:2009/02/17(火) 06:00:12
le Français

971 :デフォルトの名無しさん:2009/02/17(火) 08:34:29
OCaml

972 :デフォルトの名無しさん:2009/02/17(火) 08:39:27
ここは言語オタクのスクツですね

973 :デフォルトの名無しさん:2009/02/17(火) 09:33:06
>>955
変数名の比較ですか?

974 :デフォルトの名無しさん:2009/02/17(火) 10:10:14
Whitespace

975 :デフォルトの名無しさん:2009/02/17(火) 10:14:24
a = b = 'isと==の違いってなに?'

a == b
True

a is b
True

976 :デフォルトの名無しさん:2009/02/17(火) 10:29:30
==は値比較、isはアドレス比較
>>> [1] == [1]
True
>>> [1] is [1]
False
>>>

ただしisには注意事項がある。
http://docs.python.org/reference/expressions.html#id24

977 :デフォルトの名無しさん:2009/02/17(火) 10:53:20
PythonはRubyに叶わない。ずっと、ずっと。

978 :デフォルトの名無しさん:2009/02/17(火) 14:15:14
むしろ逆だろ、日本はともかく世界的に見てもRubyはPythonにかなわない
RubyはPerlと仲良くどんぐりの背比べをしてくれ

979 :デフォルトの名無しさん:2009/02/17(火) 14:18:58
つうかまじでruby厨うざい。
ruby厨は全員首吊って死ねよ。

python人口の方が多い。
pythonの方がいろいろできる。
言語的仕様は好みの問題。
議論の余地無し。
以上。


980 :デフォルトの名無しさん:2009/02/17(火) 14:27:43
アンチスレがあるからそっちでやれ。
http://pc11.2ch.net/test/read.cgi/tech/1203557046/

981 :デフォルトの名無しさん:2009/02/17(火) 15:09:44
ほぼすべて るびぃ をNGワード指定すれば防げるね

982 :デフォルトの名無しさん:2009/02/17(火) 15:37:02
>>976
ガベージコレクションなんかで勝手に開放されて、
意図した結果と変わっちゃうことがあるということ?

983 :デフォルトの名無しさん:2009/02/17(火) 15:37:52
そのとおり

984 :デフォルトの名無しさん:2009/02/17(火) 17:16:09
http://journal.mycom.co.jp/news/2009/02/17/008/index.html
Rubyじゃないんだから3.0で機能追加するわけねーだろwww

985 :デフォルトの名無しさん:2009/02/17(火) 17:21:04
結局のところ>>979が穏便かつ正論だと言わざるを得ないな

986 :デフォルトの名無しさん:2009/02/17(火) 17:36:40
python3で...が特別扱いでなくなったんだな
ついでにrange(0, ...)でitertools.count()にすればいいのに

987 :デフォルトの名無しさん:2009/02/17(火) 18:14:00
Python3.0 ぱい3

988 :デフォルトの名無しさん:2009/02/17(火) 18:27:32
pass

989 :デフォルトの名無しさん:2009/02/17(火) 19:37:42
>>982
参照がある以上、解放はされないが、移動される可能性がある。
1. 左辺をフェッチ
2. 右辺をフェッチ
3. 比較
1と2の間にGCが起きると同じオブジェクトでもアドレスが違うかも知れない。

990 :デフォルトの名無しさん:2009/02/17(火) 20:45:30
isはNone専用演算子

991 :デフォルトの名無しさん:2009/02/17(火) 21:27:31
結局 is は何のためにつくられたの?

992 :デフォルトの名無しさん:2009/02/17(火) 21:42:42
GCが起きないような評価で済む
左辺と右辺の同一性比較。
あらかじめ変数に代入しとけばOK!

a = むにゃ
b = ほにゃ
a is b

993 :デフォルトの名無しさん:2009/02/17(火) 21:58:50
TrueやFalseの比較にはis使ってもいいんだっけ?

994 :デフォルトの名無しさん:2009/02/17(火) 22:05:04
次スレどこ?

995 :デフォルトの名無しさん:2009/02/17(火) 22:07:11
http://pc11.2ch.net/test/read.cgi/tech/1234716330/

996 :デフォルトの名無しさん:2009/02/18(水) 00:26:52
>>993
おk

997 :デフォルトの名無しさん:2009/02/18(水) 00:28:18
>>991
同一性を確認するため。

998 :デフォルトの名無しさん:2009/02/18(水) 02:19:26
998

999 :デフォルトの名無しさん:2009/02/18(水) 02:19:57
999

1000 :デフォルトの名無しさん:2009/02/18(水) 02:20:54
100000

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

209 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)