くだすれPython(超初心者用)at TECH
くだすれPython(超初心者用) - 暇つぶし2ch400:デフォルトの名無しさん
08/05/24 20:02:38
2.4系でも御の字じゃないかー

401:デフォルトの名無しさん
08/05/24 23:51:53
suitex

402:デフォルトの名無しさん
08/05/25 12:56:24
例のアフォがお勉強スレに張り付くようになったようだな

403:デフォルトの名無しさん
08/05/25 15:04:21
お勉強スレに元々いたような

404:デフォルトの名無しさん
08/05/25 15:06:07
そしてアンチスレは全然伸びない

405:デフォルトの名無しさん
08/05/25 19:07:25
ありがとう
乗り換え先検討中なんで参考にさせてもらいます

406:デフォルトの名無しさん
08/05/25 21:19:44
やっぱやめます

407:デフォルトの名無しさん
08/05/25 22:09:29
うはは、わかりません。

408:デフォルトの名無しさん
08/05/25 22:24:32
なぜだか桃太郎電鉄の貧乏神を思い出したよ。

409:デフォルトの名無しさん
08/05/26 09:02:34
ありがとう例のアフォが
張り付く先検討中なんで参考にわかりません。

410:デフォルトの名無しさん
08/05/26 23:46:15
ももたろ社長!ここはPython温せ

アッー

411:デフォルトの名無しさん
08/05/27 01:15:14
うはは、わかりません。

412:デフォルトの名無しさん
08/05/27 02:31:56
>>410
Pythonでくだスレにしちゃネタがうますぎ。

413:デフォルトの名無しさん
08/05/28 22:26:55
おまいら温泉行く?
アッーー!

414:デフォルトの名無しさん
08/05/29 15:01:50
PythonCEで、日本語文字列を出力するにはどうすればいいんでしょうか。
どのエンコードを試してもできません。
宜しければご教示願います。


415:デフォルトの名無しさん
08/05/29 21:23:55
コンソールは何使ってる?

416:デフォルトの名無しさん
08/05/30 02:58:05
質問です。
複数の値を返す関数を作成してそれを受け取るというのもなのですが…。
cでかくとこんな感じです。

#include <stdio.h>

void Power(double x, double *sq, double *cu);
void main(void);

void Power(double x, double *sq, double *cu)
{
*sq = x * x;
*cu = x * x * x;
}

void main(void)
{
double x, xx, xxx;

printf("浮動小数点数を入力して下さい\t");
scanf("%lf", &x);

Power(x, &xx, &xxx);

printf("入力した値 = %lf その2乗 = %lf その3乗 = %lf\n",
x, xx, xxx);
}


417:デフォルトの名無しさん
08/05/30 04:07:51
Pythonではreturnで複数の値を返せるので
def power(x): return x**2, x**3
xx, xxx = power(x)
のように書くが、とりあえずチュートリアルは読もうよ
URLリンク(www.python.jp)

418:デフォルトの名無しさん
08/05/30 06:40:11
その関数はタプルを*ひとつ*返してるだけ
チュートリアルのどこにreturnで複数の値を返せるなんて書いてあるんだ?

419:デフォルトの名無しさん
08/05/30 08:23:40
チュートリアルのp.p.218読んだか?

420:デフォルトの名無しさん
08/05/30 09:37:52
タプルを*ひとつ*返すときは
def power(x): return (x**2, x**3)
だろ
def power(x): return x**2, x**3
ではreturnで複数の値を返せる

421:デフォルトの名無しさん
08/05/30 10:03:49
プログラムを起動中に、変数に任意の内容を記入できる関数はないでしょうか?
名前を忘れてしまったんですが、たしかc言語ではこの機能を使える関数があったと思います。

今は、任意の内容を処理する場合は、引数の文字を入れているのですが、複数の処理をするには
引数に任意で入れたい内容をリストにして、引数に入れてほしい内容はリスト番号を指定する。
という方法を用いてみたのですが、賢くない上に面倒です。

対話形式で処理をするためにユーザーに記入を求める関数を再現したいのですが、パイソンでは何か良い方法はないでしょうか?

422:デフォルトの名無しさん
08/05/30 10:04:54
>>> def power(x): return x**2, x**3
...
>>> type(power(1))
<type 'tuple'>

423:デフォルトの名無しさん
08/05/30 10:05:42
>>421
sys.stdin

424:デフォルトの名無しさん
08/05/30 10:14:01
input()

425:デフォルトの名無しさん
08/05/30 11:15:10
重複していました。
申し訳ありません

426:デフォルトの名無しさん
08/05/30 20:34:11
すんまそん.使わないパッケージのアンインストールってどうやるんでしょうか?

427:デフォルトの名無しさん
08/05/30 21:19:31
>>426
OS、アンインストールしたいパッケージ、それをどうやってインストールしたか、によって方法が違う。

428:デフォルトの名無しさん
08/05/30 21:24:45
OSはwindowsでコンパイル済みのexeファイルからインストールしています.
プログラム追加と削除に表示されるのもあるんですが,どうもないのもあって.

429:デフォルトの名無しさん
08/05/30 21:50:18
>>428
プログラムの追加と削除にないものは手動で消す必要があると思う。
C:\Python○○\Lib\site-packages\ 以下に追加パッケージがまとめて置いてある。
そこから選んで削除する。

パッケージによっては他の場所にもファイルを配置していることがある。
きれいサッパリ消せるかどうかはパッケージ構成に関するあなたの知識次第。

430:デフォルトの名無しさん
08/05/30 22:17:00
ありがとうございました.直接消すしかないんですね.

431:デフォルトの名無しさん
08/05/31 04:08:35
cd パッケージインストールしたときのディレクトリ
python setup remove

432:デフォルトの名無しさん
08/06/02 16:05:19
pythonを用いたバックアップを考えています。

バックアップ先とそれの保存先を引数として入力し、そのパスからコピーして貼り付けをすれば出きると思っていたのですが、現段階では、まだ出来ていません。


ファイルのバックアップを取りかたの概念が間違っているのでしょうか?

433:デフォルトの名無しさん
08/06/02 16:40:04
>>432
現段階は、ファイルのコピー方法について調べています。

434:デフォルトの名無しさん
08/06/02 16:53:58
xcopy使った方が早くね?

435:デフォルトの名無しさん
08/06/02 17:05:47
つ shutil

436:デフォルトの名無しさん
08/06/02 19:03:23
>そのパスからコピーして貼り付けをすれば

これは可笑しい


437:デフォルトの名無しさん
08/06/02 19:04:31
自己解決しました

438:デフォルトの名無しさん
08/06/02 19:05:22
そんなスキルで作られたバックアップソフト・・・・超怖い

439:デフォルトの名無しさん
08/06/02 19:12:08
表現に問題があり申し訳ありませんでした。
バックアップをしたいファイルがある場所からコピーして、保存先に貼り付けを行う作業が出きる関数を調べたいと思っていました。
意見ありがとうございます。バックアップに必要な関数が見つかりましたのでやってみます。

440:デフォルトの名無しさん
08/06/02 19:25:25
winは害悪だな

441:デフォルトの名無しさん
08/06/02 19:33:52
explorerが害悪っていう意味なら
gnomeもKDEも害悪だよな

442:デフォルトの名無しさん
08/06/02 21:05:55
世界のガイアク
1,2,3

443:デフォルトの名無しさん
08/06/02 21:36:02
ごめん。意味がわかんない。

444:デフォルトの名無しさん
08/06/02 21:53:47
>439 は発想の根っこにクリップボードがあるのがおもしろいな。普通はそうなのか?
「バックアップに必要な関数が見つかりましたの」で実装した結果がおもしろいとさらに高得点だ。

445:デフォルトの名無しさん
08/06/02 23:25:52
今時はあれですか
やりたり処理を実現する関数を「探す」事がプログラムなんでしょうね

446:デフォルトの名無しさん
08/06/02 23:31:26
探して調整することがプログラミング

447:デフォルトの名無しさん
08/06/02 23:33:18
泥のように働くのがプログラミング。
いちいち言わせるなよ。

448:デフォルトの名無しさん
08/06/02 23:33:32
むかしからそうだろ

449:デフォルトの名無しさん
08/06/02 23:37:37
自己解決しました。

450:デフォルトの名無しさん
08/06/02 23:41:19
>>443
世界のFizzBuzzだろ

451:デフォルトの名無しさん
08/06/03 19:48:19
すいません質問です。


キュー構造を実現するqueクラスとその確認コードを含むque.pyを作成せよ
queクラスは以下のメソッドを含む事。
def enque( data )
#値を受け取り、enque動作(待ち追加)を行う。
def deque()
#deque動作(待ち解消)を行い、値を返す。
def __str__()
#str()やprintで用いられる特殊メソッド。
#自分を表す文字列表現(ここでは内部値のカンマ区切りとする)を返す。

上記が課題なのですがだれか教えていただけないでしょうか。

452:デフォルトの名無しさん
08/06/03 20:23:34
富豪向け

class Queue:
 def __init__(q):
  q.queue = []
  q.next = 0
 def enque(q,v):
  q.queue.append(v) 
 def deque(q):
  v = q.queue[q.next]
  q.next += 1
  return v
 def __str__(q):
  return str(q.queue[q.next:])

453:デフォルトの名無しさん
08/06/03 20:40:28
ありがとうございます。
富豪向けとはどういう意味でしょうか?

454:デフォルトの名無しさん
08/06/03 21:13:26
>>432
> バックアップ先とそれの保存先

って同じじゃないか?
仕事でも「仕入れ先」と使うけど、何か納得できない。


455:デフォルトの名無しさん
08/06/03 21:32:00
>>453
URLリンク(pitecan.com)
URLリンク(0xcc.net)

456:デフォルトの名無しさん
08/06/03 21:36:17
>>455
なるほど、ありがとうございます。

457:デフォルトの名無しさん
08/06/03 22:54:04
class Queue(object):
    class Item(object):
        def __init__(self, value):
            self.value = value
            self.next = None
    def __init__(self, *args):
        self.first = self.end = None
        for i in args:
            self.enqueue(i)
    def enqueue(self, value):
        if self.first is None:
            self.first = self.end = Queue.Item(value)
        else:
            self.end.next = Queue.Item(value)
            self.end = self.end.next
    def dequeue(self):
        if self.first is None:
            raise IndexError('queue is empty')
        else:
            value = self.first.value
            self.first = self.first.next
            return value
    def __repr__(self):
        values = []
        item = self.first
        while item:
            values.append(repr(item.value))
            item = item.next
        return 'Queue(%s)' % ', '.join(values)

458:デフォルトの名無しさん
08/06/03 23:02:09
import collections
class Queue(object):
    def __init__(self, itr = ()):
        self.q = collections.deque(itr)
    def enqueue(self, v):
        self.q.append(v)
    def dequeue(self):
        return self.q.popleft()
    def __repr__(self):
        return self.q.__repr__().replace('deque','Queue')

459:デフォルトの名無しさん
08/06/03 23:06:08
URLリンク(codepad.org)
ここソース貼るのに便利だよ

460:デフォルトの名無しさん
08/06/03 23:08:36
codepadはログインしないと24時間で消えるから嫌い

こっちだと消えないように設定できるみたいURLリンク(ja.pastebin.ca)

461:デフォルトの名無しさん
08/06/03 23:10:06
from Queue import Queue
Queue.enque = Queue.put
Queue.deque = Queue.get
Queue.__str__ = lambda self: ','.join(str(x) for x in self.queue)

462:デフォルトの名無しさん
08/06/03 23:30:13
>>460
そうか、期限があるんだったな…。
やっぱりここに貼った方がログが残って便利かもね。

463:デフォルトの名無しさん
08/06/04 15:16:54
>>414
俺も知りたい。仕方ないからファイルに出力してるよ。

464:デフォルトの名無しさん
08/06/04 16:33:13
URLリンク(pastebin.windy.cx)
にたようなもんだけど

465:デフォルトの名無しさん
08/06/04 16:47:04
Python に比べて Ruby が「純粋な」オブジェクト指向言語
であるといわれる理由を教えてください。同僚にRuby厨が
いてうざいです。仕事は Java/C# なんで全然関係ないんですが。

466:デフォルトの名無しさん
08/06/04 16:56:10
Python初めて1日の僕が言うのもなんだけど
例えば長さを取得する場合
hoge.len()
ではなく
len(hoge)
であるとか。
よくわかんないけど

467:デフォルトの名無しさん
08/06/04 17:29:50
Pythonもすべてオブジェクトだから純粋なOOPLじゃない?

468:デフォルトの名無しさん
08/06/04 17:43:44
そのRuby厨に聞いてみれば?
どうせどっかからの受け売りだろうから
ググればそれっぽい記事がでてくんじゃね

469:デフォルトの名無しさん
08/06/04 18:55:15
Rubyは使ったことないや。
どっちがよりオブジェクト指向なのかはどうでもいいんじゃね?

470:デフォルトの名無しさん
08/06/04 18:56:33
いいや。すごく重要だ。

471:デフォルトの名無しさん
08/06/04 19:04:12
どう重要?

472:デフォルトの名無しさん
08/06/04 19:16:05
どっちがよりオブジェクト指向かを決める前に
オブジェクト指向の定義を明確かつ厳密に行う必要があるな

473:デフォルトの名無しさん
08/06/04 19:17:42
小学生のときにどれくらい飛ばせたかというくらいの重要さ。

474:デフォルトの名無しさん
08/06/04 19:23:57
チ○コがどれくらい大きいかくらいの重要さ。

475:デフォルトの名無しさん
08/06/04 19:55:55
>>474
チェコ共和国(The Czech Republic/CZE)
首都:プラハ
人口:1,022万人
言語:チェコ語
通貨:コルナ
面積/7万9千平方km(北海道とほぼ同じ)。


476:デフォルトの名無しさん
08/06/04 20:11:00
なんという親御さんも安心スレ

ちなみにこんなのもあるよ
>>> hoge = [1, 2, 3]
>>> len(hoge)
3
>>> hoge.__len__()
3

477:デフォルトの名無しさん
08/06/04 23:01:45
hoge = {}
for j in xrange(10):
  for i in xrange(10**j):
    hoge['hoge%d' % i] = 'fuga%d'
  print j, len(hoge)


478:デフォルトの名無しさん
08/06/05 00:00:45
>>465
書籍からの受け売りですが。。

ーーーーーーーここからーーーーーーーーー
速効 python プログラミングより
p188

# coding: Shift_JIS

class a:
    var1 = 1

   def show_class_var(self):
      print 'class variable var1 = %d' % self.__class__.var1

v = a()
v.show_class_var()
a.var1 = 2
v.show_class_var()
print a.var1
a.another_var = 100
print a.another_var

クラス変数はa.var1 = 2 のように勝手に変更できてしまうだけではなく、
クラス定義ではまったく現れていないような another_var という変数を
後で外から無理やり追加することすら出来てしまいます。
ーーーーーーーーーーーーここまでーーーーーーーーーーーーーーー

「カプセル化」っていうOOPの原則の重要性が
python では、なおざり・・・という意味での指摘ぢゃないかな、と。。


479:デフォルトの名無しさん
08/06/05 00:05:16
>>478
そりゃ単にその本の著者が無知なだけだろ。
分かりやすさのために、わざと書いてないだけかもしれんが。

480:478
08/06/05 00:11:51
>>479
これじゃないとしたら>>465の同僚の指摘は
ちっと分かんない☆

う~む、ruby厨というより
アンチpythonな人なのかな?

481:デフォルトの名無しさん
08/06/05 00:14:24
またクソ本フラグが立ったな

482:デフォルトの名無しさん
08/06/05 00:17:54
Pythonはドキュメントがカプセル

漏れいいこと言ったな

483:デフォルトの名無しさん
08/06/05 00:22:29
いまいちわからん。説明してくり

484:デフォルトの名無しさん
08/06/05 00:36:00
ドキュメントにクラスのインタフェースが漏れなく記載されていれば
クラスのユーザはクラス定義を読まずにクラスを利用できる
結果としてユーザに公開されるべきでない情報は隠蔽される

でもドキュメントが貧弱だと、クラスの使い方を調べるために
ユーザがクラス定義を読む、なんて事態が生じうる
結果としてユーザに過度の情報を公開することになってしまう

つまり言語仕様だけからしかカプセル化の程度を判断するのは片手落ち

485:デフォルトの名無しさん
08/06/05 00:48:40
482はドキュメント的にカプセルでない説。

486:デフォルトの名無しさん
08/06/05 01:19:30
質問です
「Hello World!」の表示を2つ並べたウインドウを表示せよ。
複数並べるには、親となるフレームを用意し、そこに配置すれば良い。

という課題なのですがだれか教えてください

487:デフォルトの名無しさん
08/06/05 01:38:50
>>> from Tkinter import *
>>> root = Tk()
>>> frame = Frame(root)
>>> frame.pack()
>>> Label(frame, text="Hello, world!").pack(side=LEFT)
>>> Label(frame, text="Hello, world!").pack(side=RIGHT)
>>> root.mainloop()

上下に並べる場合は
>>> Label(frame, text="Hello, world!").pack()
>>> Label(frame, text="Hello, world!").pack()

これで点くれるのかしら

488:デフォルトの名無しさん
08/06/05 02:18:16
>>484
じゃあPythonでオブジェクト指向なプログラミングをするなら、ドキュメント作成は必須ってこと?

489:デフォルトの名無しさん
08/06/05 02:22:14
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import pygame
from pygame.locals import *

pygame.init()
screen = pygame.display.set_mode((100, 100))
pygame.display.set_caption('Hello pygame')
fp = open(u'みかちゃん-P.ttf', 'rb')
font = pygame.font.Font(fp, 24)
text = font.render(u'Hello World!', True, (255, 0, 0))
text2 = font.render(u'Hello World!', True, (0, 255, 0))
fp.close()
while True:
screen.blit(text, (0, 0))
screen.blit(text2, (0, 60))
pygame.display.flip()
for event in pygame.event.get():
if event.type == QUIT or (event.type == KEYDOWN and event.key == K_ESCAPE):
break


490:デフォルトの名無しさん
08/06/05 02:51:23
別にオブジェクト指向する必要が無ければしなくてもいいんだよ
ドキュメントはもちろん書いたほうが良い

491:デフォルトの名無しさん
08/06/05 03:20:03
>>489
ゲ板の誤爆だろ

492:デフォルトの名無しさん
08/06/05 03:28:31
>>479 の指摘がよく分からんのだが・・・・
てか,もうちょっと詳しく説明してくれ.

493:デフォルトの名無しさん
08/06/05 07:42:31
>>492
横レスだが、カプセル化は
× 外部から操作不能にすること
○ 個々のオブジェクトが、役割を果たすために必要なデータと操作をまとめること

ただし、デフォルトで外部からアクセス禁止にできる実装の言語は、初歩的ミスを
減らせる場合があるというメリットはある。

494:デフォルトの名無しさん
08/06/05 09:13:01
>>490
後で他人がリファクタリングする事を前提とした場合の
望ましいドキュメントの具体例をキボンヌ。

つか、「ドキュメント」って docstring 記述と
doctest での確認のセットの事だと
漏れは理解してるけど合ってる?

全然違うなら、追加解説も気盆奴

495:デフォルトの名無しさん
08/06/05 17:30:34
>>493
URLリンク(www.horijp.com)
URLリンク(www.okisoft.co.jp)

スレ違いかもしれないけど、いいかんじだとおもたDuke

URLリンク(blogs.sun.com)

496:デフォルトの名無しさん
08/06/05 18:05:55
いいかんじかもしれない
だがことわる!

497:デフォルトの名無しさん
08/06/05 18:15:00
>>479
この本持ってるけど、pythonはオブジェクト指向言語として不完全みたいなことは書いてないぞ。

498:デフォルトの名無しさん
08/06/05 19:07:00
じゃあ、分かっててわざと書いてないだけなんじゃね?

499:デフォルトの名無しさん
08/06/05 22:40:34
お疲れ様です

pythonでコマンドプロンプトを操作する方法を検討しています。

これを実行するためにgetoptを用いたいと思い、この関数を用いて、
コマンドプロンプトから対象のpythonファイルを開いたときに、
コマンドプロンプトのヘルプを表示するようにhelpを命令するプログラムを
作成してみました。

import getopt, sys

def helps():
getopt.getopt(sys.argv[1:], "help")

実際にコマンドプロンプトで動かしても無反応で、実際に実行しても
「GetoptError: option -n not recognized」というエラーが出てしまいます。

リファレンスで確認してみたのですが、私には何が悪いのかわかりませんでした。

本当にPythonでコマンドプロンプトの操作ができるのでしょうか?
また、操作ができるとして、このプログラムがどのように表記されてればよかったか
についてもお聞きしたいです。

何卒よろしくお願いします

500:デフォルトの名無しさん
08/06/05 22:52:21
オブジェクト指向においてカプセル化ってそんなに大事な要素だとは思えない。
スコープさえ区別してくれれば、充分だ。

501:デフォルトの名無しさん
08/06/05 23:18:40
>>499
>>> import getopt
>>> args = '-h -e -l -p'.split(' ')
>>> getopt.getopt(args, 'help')
([('-h', ''), ('-e', ''), ('-l', ''), ('-p', '')], [])

でもやりたいのはこっちだろう
>>> args = '-n --help kwsk --lang=ja'.split(' ')
>>> getopt.getopt(args, 'n', ['help=', 'lang='])
([('-n', ''), ('--help', 'kwsk'), ('--lang', 'ja')], [])

リファレンスもっかいよく読んでわからなかったらまたおいで

502:デフォルトの名無しさん
08/06/06 09:37:04
>>500
俺もそう思う
オブジェクト指向はポリモフィズムが肝だと思う
ああ、PythonがRubyに比べて云々って逝ってる香具師は
もしかしたらselfが鬱陶しいっていうだけの話鴨試練


503:デフォルトの名無しさん
08/06/06 11:29:42
pygame翻訳サイトさえあれば、、、俺だって、、俺だって、、、

504:デフォルトの名無しさん
08/06/06 12:40:04
URLリンク(www.nishihiroshima.com)
>なにせ、いくら頭をひねっても、「型の無い言語であるPythonが、
>多重継承をサポートしなければならない理由」など、
>全くといっていいほど無いからです。

なんでこのひとは「型が無い」と思ったんだろう.

505:デフォルトの名無しさん
08/06/06 13:00:37
俺、昔、「Haskellには型が無い」って主張する奴と議論したことあるよw

Python の C3 MRO はそれだけ独立してでも知っておいて悪くないと思うおいら

506:デフォルトの名無しさん
08/06/06 13:31:11
>>504
静的型でnominal subtypingな言語だけを念頭に置いて「型」と
言ってるんだろうけど
言葉の使い方がいい加減で不正確なんだな

ま、nominal subtypingならポリモーフィズム実現するには継承するしかないが
Pythonのようなduck typingやstructural subtypingならそうではないから、
継承の意味薄いってのはその通り

507:デフォルトの名無しさん
08/06/06 13:40:26
self は確かにうっとうしい
あれがつきまとうだけで
オブジェクト指向っぽくない

508:デフォルトの名無しさん
08/06/06 21:17:31
>>507

509:デフォルトの名無しさん
08/06/06 22:25:39
むしろselfはオブジェクト指向っぽいと思う

510:デフォルトの名無しさん
08/06/07 00:12:52
PHPの$thisとかもうざいとか言い始めそうだな

511:デフォルトの名無しさん
08/06/07 00:23:29
>>509
いやselfはオブジェクト指向そのものなんだが
それをいちいち書くからおかしいっつー話だよ

>>510
いくら糞PHPでも引数に毎回書く必要はないだろ?
Rubyでもselfが必要なときは書くんだし

だけどPythonはくどいほど書くからw

512:デフォルトの名無しさん
08/06/07 00:39:24
オブジェクト指向っぽい考え方自体が
オブジェクト指向っぽくないんだよ、俺にしてみれば。

513:デフォルトの名無しさん
08/06/07 00:48:47
オブジェクト指向かそうでないかの議論に熱くなる奴らは
総じてオブジェクト指向だな

514:デフォルトの名無しさん
08/06/07 01:07:28
さあwみなさまご一緒に
レッツオブジェクト指向!

515:デフォルトの名無しさん
08/06/07 02:29:40
おまえらオブジェクト指向を嗜好し過ぎでオブジェクト思考になってると

516:デフォルトの名無しさん
08/06/07 09:20:45
誰が(ry

517:デフォルトの名無しさん
08/06/07 10:47:16
殺した(ry

518:デフォルトの名無しさん
08/06/07 11:07:46
クックロビ(ry

519:デフォルトの名無しさん
08/06/07 14:33:46
あ、そーれ

520:デフォルトの名無しさん
08/06/07 14:48:58
~三波春夫さん江~

521:デフォルトの名無しさん
08/06/07 16:15:14
も り あ が っ て る よ う だ な w

522:デフォルトの名無しさん
08/06/07 16:58:49
盛り上がってるところ悪いが
対話モードでの浮動小数で質問。

Python 2.5.1 (r251:54863, Jan 17 2008, 19:35:17)
[GCC 4.0.1 (Apple Inc. build 5465)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> a = 4.8
>>> print a
4.8
>>> a
4.7999999999999998

aが「4.7999999999999998」になってしまう理由って何?


523:デフォルトの名無しさん
08/06/07 17:04:35
B. 浮動小数点演算、その問題と制限
URLリンク(www.python.jp)

524:デフォルトの名無しさん
08/06/07 17:26:30
>>523
printはコンピュータ内部の値じゃなくて
見た目を整えたものを表示してくれるのね。
サンクス。

盛り上がってるところすまなかった、続けてくれ。
URLリンク(jp.youtube.com)


525:デフォルトの名無しさん
08/06/07 19:29:57
>>524
printというより、repr()とstr()の違いってとこだな
URLリンク(www.python.jp)

526:デフォルトの名無しさん
08/06/07 20:07:06
>>> (4.8).__str__(), (4.8).__repr__()
('4.8', '4.7999999999999998')

527:デフォルトの名無しさん
08/06/08 16:34:28
クッキーについて質問です
webページの自動ログインスクリプトを作ろうと思い、urllib.urlopen()を使って
あるページのフォームの情報をPOSTしてみたのですが、そのページのhtmlが

<script>
function Func(){ document.cookie = aaa }
</script>

<form method="post" action="URLリンク(bbb)" onSubmit="javascript:Func();">

のようにクッキーを設定しており、思ったような結果が返ってきません。
この動作をpythonで代替するにはどうすればよいのでしょうか?

528:デフォルトの名無しさん
08/06/08 21:44:45
>>527
cookielib, urllib2

529:デフォルトの名無しさん
08/06/08 22:18:10
urllibでなんとかしたいんじゃないの?

530:デフォルトの名無しさん
08/06/08 22:36:10
いえ、出来るなら何でもいいです

cookielibとurllib2、色々ググってみて

cj = cookielib.CookieJar()
cjhdr = urllib2.HTTPCookieProcessor(cj)
opener = urllib2.build_opener(cjhdr)

r = opener.open(url, params)

のようにするのは何とかわかりましたが、クッキーをどう設定したらいいのかよくわかりません
具体的にどうすればいいのか、ご教授願えないでしょうか

531:デフォルトの名無しさん
08/06/08 22:43:26
JavaScriptの部分を自分で解析しないと駄目じゃない?

532:デフォルトの名無しさん
08/06/08 22:44:11
ググって見つかった例でうまくいかないなら
具体的なサイトを示した方が早い気が
javascriptがはさんであるとうまくいかないのかな?

533:デフォルトの名無しさん
08/06/08 22:48:09
cookielibはレスポンスヘッダの解析のみでしょ

534:デフォルトの名無しさん
08/06/08 23:22:02
そもそもcookieについてよく知らないもので、この質問が適切かどうかもよくわからない状況です…
身元がばれるため具体的なサイトは示せませんが、問題と思われる部分を抜粋すると、

function idgisSetRedirectionCookie( theForm ) {

{
// modify the following values for your environment
var idgisRedirectorUrl = "URLリンク(aaaa)<)" onSubmit="javascript:{ return idgisSetRedirectionCookie( this ); }">
<input type='hidden' name='HiddenURI' value="URLリンク(dddd)">

こんな感じです(aaaa、bbbb、cccc、ddddは全部違うURL)

535:デフォルトの名無しさん
08/06/08 23:50:22
原理的にはそのJavaScriptを解析して動作をエミュレートすれば良いはずだけど
実際にはかなり難しいんじゃないかと思う

現実的かと思うのはwin32comを使ってWebブラウザをコントロールする方法
ExcelをPythonからいじくる例はたまに見かけるからそれらを参考にしてみては

536:デフォルトの名無しさん
08/06/09 00:05:54
>>534
そのスクリプトで
document.cookie = hogehoge とか設定してる値が常に固定なら、

HTTPのヘッダに
Cookie: hogehoge
という形で加えてPOSTすりゃいいだけ
urllib2のRequestクラスならheaderを好きなように設定できるはずだ

スクリプトの内容が可変なら、>>535が言ってるように
スクリプトを自分でパースするしかない

537:デフォルトの名無しさん
08/06/09 00:15:58
固定だったらそいつはわざわざ何がしたいんだって話になるがなw

538:デフォルトの名無しさん
08/06/09 00:18:04
可変にしても、スクリプトの内容自体はほぼ同じで、埋め込まれてる
文字列リテラルの内容が違うだけだろうから、
正規表現や何かで簡単にぶっこぬけると思うけどね


539:デフォルトの名無しさん
08/06/09 00:48:31
なんとなく、SPAM用のスクリプト作成の手助けをした気がしなくもないw

540:デフォルトの名無しさん
08/06/09 00:48:52
環境によって若干変わってくるのでなんとか正規表現とかで頑張りたいと思います
今現在の環境だけでは変わらないので、とりあえず今だけでも動かそうと思うのですが、
Requestクラスの使い方は

data = {'username':'qwerty', 'password':'asdfgh'} #等など
req = urllib2.Request('URLリンク(cccc)', urllib.urlencode(data), {'Cookie':hogehoge})
r = urllib2.urlopen(req)

こんな感じで合ってます?

541:デフォルトの名無しさん
08/06/09 04:46:25
一応通報した


542:デフォルトの名無しさん
08/06/09 06:30:18
except Exception, inst:

って書き方がなんかきもちわり.
投げられた Exception クラスのインスタンス inst を受け取るわけだけど,

except (Exception1, Exception2, Exception3):

みたいに複数のクラスを受け取る時にはどうやってインスタンス受け取るんだよ.


543:デフォルトの名無しさん
08/06/09 06:35:13
except (Exception1, Exception2, Exception3), inst:

544:デフォルトの名無しさん
08/06/09 06:35:33
>>542
except (Exception1, Exception2, Exception3), inst:

Python3.0では書式変わるから、それまで我慢しる

545:デフォルトの名無しさん
08/06/09 11:35:42
Python 3000 とかいうやつ?

546:デフォルトの名無しさん
08/06/09 20:54:37
>>500 ありがとうございます。
お礼が遅れてしまい申し訳ありません。
恐縮ですがもう少しお付き合いお願いします。
先日教えていただいた、
>>> args = '-n --help kwsk --lang=ja'.split(' ')
>>> getopt.getopt(args, 'n', ['help=', 'lang='])
をpythonで実行してみたところ、エラーが出ず、

([('-n', ''), ('--help', 'kwsk'), ('--lang', 'ja')], [])
と正常に表示されました。

正常に動いていると判断し、このプログラムを以下のように記述したpyファイルを
用意し、実際にコマンドプロンプトで起動したときにコマンドプロンプトのヘルプを
表示できるか確認したのですが、無反応でプログラムが終了してしまいます。

ファイル名:ex.py
# coding: utf-8
import getopt, sys
args = '-n --help kwsk --lang=ja'.split(' ')
getopt.getopt(args,'n',['help=','lang='])

考えられる引数を入力してみたのですが反応がなく、このプログラムを進めていただく前に、教えてもらった方法でもやってみたのですが
ヘルプの表示ができませんでした。
リファレンスのテストコードでgetoptの動きを確認してみたかったのですが、
こちらも起動しなかったため確認できませんでした。

コマンドプロンプトでこのファイルを起動し、コマンドプロンプトのファイルを起動するには、
プログラムのソースに何か加える必要があったのでしょうか?
それとも、コマンドプロンプトを使用するときに、何か特別な記述が必要だったのでしょうか?
アドバイスをよろしくお願いします。

547:デフォルトの名無しさん
08/06/09 21:30:31
「コマンドプロンプトのヘルプ」って、
C:\>cmd /?
のことだよな?普通

それに>>500とどう関係があるんだよ。

548:デフォルトの名無しさん
08/06/09 22:01:46
getopt.getoptの戻り値を使った処理を書かないと何も起こらないのは当然のような
URLリンク(www.python.jp)

549:デフォルトの名無しさん
08/06/09 23:00:33
対話型プロンプトだと戻り値と出力の区別が付かないからね
勘違いする初学者が出てきてもおかしくない
どこかのカンファレンスか何かで問題提起されてたらしいが

>>546
レス遅そうなのであなたが本当にやりたいことを確かめずに書くけど

myhelp.py:

import os, sys
os.system('help %s' % (' '.join(sys.argv[1:])))

実行例:

C:\> myhelp.py cd
現在のディレクトリを変更したり、ディレクトリ名を変更したりします。
[以下略]

550:デフォルトの名無しさん
08/06/10 01:45:45
解決しました
ほんとうにありがとうございました


551:デフォルトの名無しさん
08/06/10 01:53:33
どうみても(ry

552:デフォルトの名無しさん
08/06/10 02:19:09
mailto:cookiejar

553:デフォルトの名無しさん
08/06/10 04:14:00
あぁ俺か
時間帯でばれるもんなんだな
これから気をつける

554:デフォルトの名無しさん
08/06/11 19:05:34
はじめまして、Pythonを勉強してみようと考えているものです。
おすすめサイト、書籍などお教えください。

・やりたいこと
 TDDでWebアプリ開発

・プログラミング暦
 Delphi 3年(趣味のフリーソフト作成)
 Java 1年(資格取得のみ、実務経験なし)
 PHP 4年(Webアプリ構築)

よろしくお願いします。

555:デフォルトの名無しさん
08/06/11 19:55:44
っamazon.com

556:デフォルトの名無しさん
08/06/11 19:59:56
つgoogle.com

557:デフォルトの名無しさん
08/06/11 20:01:51
つyahoo.com

558:デフォルトの名無しさん
08/06/11 20:02:05
スレリンク(tech板:5番)

559:デフォルトの名無しさん
08/06/11 20:02:27
URLリンク(wiki.python.org)

560:デフォルトの名無しさん
08/06/11 20:04:14
URLリンク(www.python.jp)

561:デフォルトの名無しさん
08/06/12 05:09:29
グラフ処理をPythonでやりたいんだけど
いいライブラリーありませんか?
boostのBGLみたいなものを考えています。

562:デフォルトの名無しさん
08/06/12 05:13:55
graphviz

563:デフォルトの名無しさん
08/06/12 09:21:07
ちょ、それは可視化なんで。

564:デフォルトの名無しさん
08/06/12 10:15:40
>558-560
ありがとう、一通り目を通してみます。

ひきつづきTDDでWebアプリについて解説してるページやチュートリアルがあったら教えてください。
英語でも可。

565:デフォルトの名無しさん
08/06/12 12:45:52
>>561
networkx

566:デフォルトの名無しさん
08/06/12 19:09:52
>>565
すげぇ,マジTHX

567:デフォルトの名無しさん
08/06/12 19:36:29
>>564
いちいち人に聞くんじゃないよ
素人じゃあるまいし

568:デフォルトの名無しさん
08/06/14 11:16:08
>>567
くだすれなんだから初心者にやさしくしようぜ。

569:デフォルトの名無しさん
08/06/14 11:30:18
初心者になら回答者もやさしくするだろうけど
Delphi3年Java1年PHP4年でテストドリブンだぜ
>>567がイラっとくるのもわかるわ

570:デフォルトの名無しさん
08/06/14 13:59:29
これからプログラミングを勉強しようと思って調べたところ、
pythonが初心者向きだと聞きました。
C言語か、Pythonかで迷っているんですが、どちらがいいでしょうか

571:デフォルトの名無しさん
08/06/14 14:00:45
Pythonがいいです。Cはその後でも遅くありません

572:デフォルトの名無しさん
08/06/14 14:02:17
C言語でプログラミングを始める人は多いから
人や資料が多いという点でCの方がいいような
Pythonの対話モードはとっかかりはいいと思うけど

573:デフォルトの名無しさん
08/06/14 14:08:20
>>568
何か「やりたいけどわかりません。やってみたけど出来ません」みたいな質問ならわかるが、
情報欲しいだけの「ググレカス」で済む質問には冷たくてもいいんじゃないの?

574:デフォルトの名無しさん
08/06/14 14:16:03
>>571
>>572
わかりました。
まずPythonを触ってみることからはじめてみます。

やはり、プログラミング言語には自分に合う、合わないような相性はあるんでしょうか?

575:デフォルトの名無しさん
08/06/14 14:41:43
>>574
そのあたりは本当に人それぞれ

具体的な目標がなくただ漠然とプログラミングの勉強を
してみたいというのならPythonでまったく問題ない
教育用言語としても使われているぐらいだし

逆に具体的な動機があるのなら話は別
(掲示板CGIを作りたい、Windowsアプリを作りたい、etc.)
そういう動機があるのなら前もって言っておいたほうが
アドバイスする側もしやすいと思うよ

576:デフォルトの名無しさん
08/06/14 14:52:30
>>575
なるほど。
動機としては、Windowsアプリを作りたいが一番近いかもしれません。
ただ、今は漠然とそう考えてるだけで具体的にこういうのというのはないです。
Delphiという選択肢もあると聞いたんですが、こっちはPython以上に資料が少ないということらしいので・・・。

577:デフォルトの名無しさん
08/06/14 16:25:01
漠然と、ぐらいならPythonでOK
基本は他の言語でも通用するからやっといて無駄にはならないよ

578:デフォルトの名無しさん
08/06/14 16:25:02
WindowsのGUIならC#,Delphi,VBあたりの方が
とっつきやすいと思う

579:デフォルトの名無しさん
08/06/14 21:00:32
初学者のとっては言語そのものよりも周辺のライブラリや開発環境が
とっつきやすいかどうかが重要だよな。


580:デフォルトの名無しさん
08/06/15 09:22:50
ウィザードでなんでも出来てしまうと
初心者的にはすごいんだろうね

581:デフォルトの名無しさん
08/06/15 10:12:16
プログラミングってソースコードや環境を可能な限り把握する行為だと思うから
いきなりIDE使うのはあまりオススメしたくはない

582:デフォルトの名無しさん
08/06/15 10:36:25
楽なほうからやらせるほうがいいに決まってんだろ。
いきなり苦行を科してどうするんだよ。

583:デフォルトの名無しさん
08/06/15 10:41:45
これだからゆとりは...

584:デフォルトの名無しさん
08/06/15 10:44:24
近寄らないでください。老臭がします。

585:デフォルトの名無しさん
08/06/15 13:29:16
最近はExcelで仕様書書くだけで
コード吐いてプログラム完成するんですよね


586:デフォルトの名無しさん
08/06/15 16:38:14
これだからゆとりは...

587:デフォルトの名無しさん
08/06/15 17:49:14
IDE が進化して人間に敵対しはじめるとか


588:デフォルトの名無しさん
08/06/15 22:57:03
スカイネットですね、わかります

589:デフォルトの名無しさん
08/06/16 00:29:13
スカイフィッシュはどうしたんだろうね。

590:デフォルトの名無しさん
08/06/16 01:00:45
乱獲しすぎて……ごめん

591:デフォルトの名無しさん
08/06/16 15:29:19
とりあえずCでセグフォいっぱい出して、
なぜか考えるんだ。そしてメモリ管理って
なんて難しいんだろうって悩むんだ。

そうすれば最近のどんな言語であっても
ある機能がなぜ実装されているのか理解できるだろう。

592:デフォルトの名無しさん
08/06/16 16:48:22
そうかなあ・・・

593:デフォルトの名無しさん
08/06/16 22:07:31
「最初は楽しまくってプログラミングの楽しさを満喫しようよ」派
「コマンドラインで基礎からみっちりやれGUIデザイナとかIDEなんて十年早いんじゃ」派


594:デフォルトの名無しさん
08/06/16 22:42:35
python使うのに後者はないだろ・・

595:デフォルトの名無しさん
08/06/16 23:00:40
URLリンク(pyukiwiki.sourceforge.jp)

wktkしてリンク先を眺めたら
そこにはperlがありました・・・

日本人プロダクトなyukiwikiはどこにあるのでしょうか?

596:デフォルトの名無しさん
08/06/16 23:12:20
URLリンク(www.hyuki.com)

597:デフォルトの名無しさん
08/06/17 07:54:45
ここは低レベルな質問でもOKなんでしょうか?

Windows環境上で、Pythonを勉強中なのですが、エディタの選択で悩んでいます

a. emacs系のエディタに慣れ過ぎてしまったので、キー操作にemacs系のソレが用意されていること
b. eclipseに慣れてしまったので、予約語、変数名、メソッド名、ファイル内に出現した単語を補完してくれる機能があること
c. コメントを日本語で書きたいので、utf-8n でファイルを開いたり保存したりできるもの
d. 起動が重いと学習意欲が削がれるので、起動が比較的早いもの
e. 無料で使えること

こういった条件を満たせるものを探しているのですが、これがなかなか見つかりません
「emacs慣れてるならemacs使えや」と言われそうですが、Meadowの起動は遅いですし予約語補完もいま一つですし(ファイル内に出現した単語の補完は楽なんですが…)
「eclipse+PyDevはどや」と言ってもeclipseは起動が糞重くて辟易しますしそもそもPyDevって有償じゃないのでしょうか以前入れたら広告が頻繁に出てきて以下略
何かいいエディタはないでしょうか

598:デフォルトの名無しさん
08/06/17 10:51:14
Meadowを自動起動にして終了させなければいいんだ。

599:デフォルトの名無しさん
08/06/17 11:00:17
Komodoもいいかもね。

600:デフォルトの名無しさん
08/06/17 12:16:09
xyzzy

601:デフォルトの名無しさん
08/06/18 00:34:47
スクリプト組むのにeclipseって
鶏を割くのにナパーム弾を使うみたいだな

602:デフォルトの名無しさん
08/06/18 00:53:02
ナパーム弾で鶏は割けないと思います!><

603:デフォルトの名無しさん
08/06/18 00:54:21
>>597
何も考えずに付属の IDLE (Python GUI) を使う。

604:デフォルトの名無しさん
08/06/18 06:13:37
ちょっと前にIDLEをエディタとして使ってみたけど、ウインドウの分割が
できないのがキツかったな。

俺は次はPyPEを試してみる。
日本語の編集に難ありだけど、全体的には使いやすそう。

605:デフォルトの名無しさん
08/06/18 11:05:43
>>555-557
".com"のところがみそなんだろうなあ

606:デフォルトの名無しさん
08/06/18 11:24:07
>>570の便乗質問なんだけど
OSやPCの知識を深く得る意味でLinux環境でgccとpythonを勉強するのは、どうなんでしょうか?
C1本に絞ったほうがいいんですかね

勉強法のひとつとして
実装してみたい簡単なプログラムをPythonで書いて、Cでも実装してみる
こういうのってどうなんだろう

自分のイメージとしてはCはgdbとかを使いながら、ソースコードを読めるレベルになりたいですんよね

607:デフォルトの名無しさん
08/06/18 11:36:30
それならC一本でいい気もする

そういうアプローチ(OSやPCの知識を深く得る)から書かれている本として
『ふつうのLinuxプログラミング』『Unix/Linuxプログラミング 理論と実践』などが挙げられる
読んでみるといいんじゃないだろうか

まあ俺はHelloWorldしか書けないわけだが

608:デフォルトの名無しさん
08/06/18 13:31:48
>>598-600
アドバイス、㌧です

Meadowを起動したら最後、永遠に終了させない、という発想はありませんでした…
メール閲覧もWebサイト閲覧もすべてMeadow/NTEmacsでやるぜ!という人には十分アリな選択肢なのかもしれないですね…
しかしまさかPythonを勉強したいがためだけに、日常作業の全てをemacsに委ねるべく人体改造する羽目になるとは…

Komod Edit はいい感じですね。実は今現在、それで騙し騙しやってるところだったりします
emacs系のキーマップもありますし、使用中の動作も比較的軽いですし
ですが、起動がecipse並みに遅いのと、複数のファイルを共有した単語補完ができないのが厳しいところです
別ファイルのタブに移動してメソッド名をコピーして元タブに戻って貼り付け、が面倒くさい…

xyzzyは常用エディタだったりするんですが、py-mode がどうも非力な印象で…
また、新規ファイルを作成すると、SJISになってしまうあたりも、未だ自力で解決できなくてKomodoに逃げてる状態だったりします

emacs系のキーマップにこだわるから選択肢が少なくなるんですかね。XKeymacsの導入を前提にして範囲を広げたほうがいいのかな

609:デフォルトの名無しさん
08/06/18 13:35:26
>>603
IDLEはキーマップ?がWindowsのソレじゃないですか…?
Windowsアプリのキーマップでいいなら、PyScripterその他でええやんということにもなりそうな気がします

でもたしかに、「勉強用」と割り切るなら、最初から標準で入ってるIDLEを、というのは実に定番ですな…

610:デフォルトの名無しさん
08/06/18 13:38:48
>>601
非常に激しく、強く、熱く、胸を張って、声を高らかに、同意します

Lightweight Language といいながら全然Lightweightじゃねえ気がします>eclipseでLL

611:606
08/06/18 14:46:29
>>607
C一本か~
なんかやりたいくないなあ~w

612:デフォルトの名無しさん
08/06/18 14:48:50
Cの基本だけなら直ぐ終わるよ

613:デフォルトの名無しさん
08/06/18 14:52:12
そうだね、プロテインだね。

614:デフォルトの名無しさん
08/06/19 07:21:08
基本、コマンドラインからつかうツールを使っているんだけど、
たとえばオプションをGUIで指定したり実行結果のテキストを
スクロール可能な形で表示したいと思うこともある。

wxPython とか大げさ(というか使い方わかんね)だとおもうんだけど、
かといって curses みたいなのよりはちょっとGUIっぽくあってほしい。
やっぱりそういう用途だと Tkinter がベストな解?

1)コマンドラインオプションの代わりにGUIでオプション指定した
2)実行結果をスクロール可能な形で表示したい
3)できればオプションのデフォルト値とか保存したい
  (これはUIとは何の関係もない話か・・・)


615:デフォルトの名無しさん
08/06/19 13:30:11
集合型ってのはデータ交換ではあまり使われないんでしょうか?
たとえば JSON や YAML にも集合型というのは定義されてません。
所詮順序つきのものがあれば十分だからということなんでしょうか?

616:デフォルトの名無しさん
08/06/19 21:15:25
んなこと言ったら、リストで十分なのにタプルがあるわけだし・・・

617:デフォルトの名無しさん
08/06/19 21:53:54
でもタプルは変更不可なわけで

618:デフォルトの名無しさん
08/06/19 23:08:29
だがそれがいい

619:デフォルトの名無しさん
08/06/20 00:00:07
>>608
renpy 付属の Scite が F5 でスクリプト実行できて便利。

なんとなく『Perlをはじめよう』いうソフトと似てる
URLリンク(homepage3.nifty.com)

1. Scite で F5(go), Shift+F5(clear),
ん、Shift+F8(parameter)とかあるな…なんですかそれ…使い方不明…orz

620:619(レス番間違えた…orz)
08/06/20 00:01:27
>>614
2. Scintilla(Sciteのエンジン)をwrapしたwxpython製のPyAlamode
を拡張する(インテリセンス補完)
URLリンク(www.ibm.com) (作者ページ)

3. 男だったら補完も折り畳みも要りません(TT)
ベースはGAEで、SymPy-live や PyAMF を追いかける茨の道…
URLリンク(live.sympy.org)
URLリンク(pyamf.appspot.com)

4. Firefox + crunchy も楽しそげ
URLリンク(code.google.com)

5. pylons + 黒魔術
URLリンク(codepad.org)

621:デフォルトの名無しさん
08/06/20 07:26:04
>>620 THX いろいろあるもんだなぁ。

622:デフォルトの名無しさん
08/06/20 07:35:54
順番に見てたら結構ウェブのインターフェイスのものが多いなぁ。
ローカルのファイルシステム上で使うCUIツール群の
フロントエンドとして使えるものなのかなぁ。

623:デフォルトの名無しさん
08/06/20 07:41:14
1) 2) の SciTe がらみのやり方がローカル用途には何となくよさそう
な気もするけど,3) 4) 5) も気になるところ.

624:デフォルトの名無しさん
08/06/20 07:42:08
って,GAEベースって書いてあるじゃん・・・不勉強すぐる俺

625:デフォルトの名無しさん
08/06/20 07:49:55
しかしさぁ,ローカルのファイルシステム上で動くアプリケーションの
フロントエンド部分だけブラウザの描画エンジンを使えれば
便利だと思うのに,なかなかうまくいかないもんだね…

626:デフォルトの名無しさん
08/06/20 08:32:29
os.systemでコマンドプロンプトに出力される内容ををpythonで表示する方法は無いですか?
ご返答をよろしくお願い致します。

627:デフォルトの名無しさん
08/06/20 09:34:38
popen3かな


628:デフォルトの名無しさん
08/06/20 09:58:31
subprocess.Popen

629:614
08/06/20 10:12:24
いろいろ教えてもらったのに結局こんな感じのものに落ち着きそうな予感。
URLリンク(inforno.net)

630:614
08/06/20 15:05:22
あの、Tkinter で親のウィジェットが破壊されたとき
子のウィジェットにはイベントで通知されるんでしょうか?
そのイベントは bind でどうやって捕捉すればいいんでしょうか?

631:デフォルトの名無しさん
08/06/20 16:26:39
>>630
親は WM_DELETE_WINDOW を捕捉すればいいね。
子は destroy() を継承するしかない希ガス。
ただし※印の親の destroy() を明示的に呼ばないと子の destroy() も呼ばれないみたい。

import Tkinter as Tk
def callback():
    print "root window deleted"
    root.quit()
class MyLabel(Tk.Label):
    def destroy(self):
        Tk.Label.destroy(self)
        print "label destroyed"
root = Tk.Tk()
label = MyLabel(root, text="Test")
label.pack()
root.protocol("WM_DELETE_WINDOW", callback)
root.mainloop()
root.destroy() # ※

それにしても、子ウィジェットの破壊なんてどうでもいい気がするんだけど何ゆえ通知してほしいの?
アプリ自体の後始末は終了前にやればいいし・・・。

632:614
08/06/20 16:37:19
Tkinter.Entry への入力を別スレッドでの処理に
使ってるんだけど、ウィジェットがなくなっちゃうと
ず~っと待ちっぱなしでどうしようもなくなるなぁ、って

633:デフォルトの名無しさん
08/06/20 18:00:26
mod_pythonについて教えてください。自分なりに調べた結果
例えが悪いかもしれませんがC言語で言うと、
本体exe=mod_python
ダイナミックリンクライブラリdll=pythonスクリプト
という感じなのかなと思いました。
そこで、mod_python上で動かすpythonスクリプトにはエントリポイント的なモノ(関数)
を記述し、その中に処理させたい内容を記述すれば良いのでしょうか?

634:デフォルトの名無しさん
08/06/20 18:33:41
>>632
ああ、>>629のコードのことね。
それは子ウィジェットの破壊とは別の問題だと思うよ。
Entry を殺してもスレッドは死なないからね。

スレッドは別スレッドから殺すのではなく自ら終了するよう仕向けるのが基本です。
629のコードでいうと、例えば何も入力せずにエンターを押したら終了ということにして、
1. GUIConsole::readline() で result が空文字列だったら self.quit() してから return result する。
2. 別スレッド側で EOFError が起こるのでそれを捕まえてループを抜ける。
3. guiconsole.start() の終わりで別スレッドを join する(別スレッド終了を待つ)。
というようなことをするのが筋。
親スレッドが終了したとき子スレッドがどうなるかは環境依存だから、
面倒だけどキチンとやるのが無難です。

629のコードでは低レベルな thread モジュールを使ってるから join が無いね。
代わりに threading モジュールを使うように直すといいと思う。

635:デフォルトの名無しさん
08/06/21 08:09:58
>>633URLリンク(www.python.jp)

636:デフォルトの名無しさん
08/06/21 09:27:08
>>633 はもしかして mod_python の mod_ を python のモジュールと
勘違いしているのではないか? mod_python が apache のモジュール
のことだと認識した上での質問なんだろうか。

637:デフォルトの名無しさん
08/06/21 14:24:16
>>636
そのことは、わかっていると思います。いや、分かってないのか…
apacheのモジュールとしてmod_pythonを読み込むことで、
apache上にpythonインタプリタが常駐するようになる。
ということではないのですか?

638:デフォルトの名無しさん
08/06/21 14:59:38
>>626です。ご無沙汰しておりました。
>>627さん,>>628さんありがとうございます。
popenを用いても出来るということがわかったのですが、まだ結果の出力方法が
分かりません。恐縮ですが、もう一度助けてください。

たとえばos.popen("help help")もしくはsubprocess.Popen("help help")と入力した場合に、
以下のようなコマンドプロンプトの"help"についてのヘルプがpython上で出力されれば
望ましいと考えています。
---
Windows コマンドのヘルプ情報を提供します。

HELP [comand]

comamand - このコマンドのヘルプ情報を表示します
---
前回教えていただいた、方法で試してみたのですが表示させることができません。
何が足りないのか教えて頂ければ助かります。

639:デフォルトの名無しさん
08/06/21 15:38:47
>>637
いやすまん、失礼した、そのとおりです。

640:デフォルトの名無しさん
08/06/21 16:27:15
>>639
いや、俺もあまりドキュメントちゃんと読んでなかった。あとで読み直したら
何となくだけど使い方は分かってきた。努力不足でした。すみません



641:デフォルトの名無しさん
08/06/21 17:02:59
>>> import os
>>> print os.popen("help help").read()
Windows XP コマンドのヘルプ情報を提供します。

HELP [command]

    command - このコマンドのヘルプ情報を表示します。

>>> 

642:デフォルトの名無しさん
08/06/21 17:34:02
何かをPythonで計算してる時に現在どのくらいメモリを使ってるか、
正確な値をバイト単位で知りたいんですが知る方法はないですか?

643:デフォルトの名無しさん
08/06/21 18:36:45
環境依存だと思います。

644:デフォルトの名無しさん
08/06/22 01:01:33
タスク一覧見れば分かる環境が多い

645:デフォルトの名無しさん
08/06/22 01:03:32
明らかにメモリ喰うだろうと思って書いたプログラムが大してメモリ使ってなくて
単純なループだけで大丈夫だと思ってた方が数百MB使っててどんどん増えてて藁

646:デフォルトの名無しさん
08/06/22 17:57:34
>>645
それで、結論は?

647:デフォルトの名無しさん
08/06/22 23:40:16
はじめてみたんですが、日本語の情報が少なくて・・・
IDLEを使って色々試しているんですが、対話モードの時って日本語が出力できないのはどうにかできるんでしょうか?

648:デフォルトの名無しさん
08/06/23 00:07:58
できますよ

649:デフォルトの名無しさん
08/06/23 00:08:37
>>647
ここ行って見たら?
URLリンク(python.rdy.jp)


650:デフォルトの名無しさん
08/06/23 01:01:18
>>649
最初から墓場にご案内ですか?(wwwwwwwwwww

651:デフォルトの名無しさん
08/06/23 02:45:17
C:\cgi-bin>python -m CGIHTTPServer
Serving HTTP on 0.0.0.0 port 8000 ...

URLリンク(localhost:8000) にアクセスしても
ソースコードが表示されるだけで実行できません。

#! c:\\Python25\\python.exe
import os

print 'Content-type: text/plain\n\n'
for key in os.environ:
print '%s: %s' % (key, os.environ[key])

どうして動かないのでしょうか?

652:デフォルトの名無しさん
08/06/23 02:51:21
C:\>python -m CGIHTTPServer
Serving HTTP on 0.0.0.0 port 8000 ...

***-PC - - [23/Jun/2008 02:46:34] "GET / HTTP/1.1" 200 -
***-PC - - [23/Jun/2008 02:46:41] code 403, message CGI script is not a plain file ('/cgi-bin/')
***-PC - - [23/Jun/2008 02:46:41] "GET /cgi-bin/ HTTP/1.1" 403 -

2. cd c:\ して python -m CGIHTTPServer する
3. ブラウザで localhost:8000/cgi-bin/env.py にアクセス
  環境変数がずらっと表示されたら成功

コマンドプロンプトの起動パスを変更して立ち上げてみたところ
403 not found...とかなって何も表示されませんでした… orz

653:デフォルトの名無しさん
08/06/23 03:38:17
>>652
ログを見る限り、
URLリンク(localhost:8000)
にアクセスしたことになってるが?

654:デフォルトの名無しさん
08/06/23 08:27:50
おぉ、こんな機能があるのか。恐ろしく便利だな。

でもこれ、CGIが実行されたときのカレントディレクトリが、
pythonを起動したときのディレクトリのままだね。
カレントディレクトリを変更してから呼んで欲しいな。

655:デフォルトの名無しさん
08/06/23 11:34:10
>>653
URLリンク(localhost:8000) を直接叩いたら
うまくいきました ><

>>651でディレクトリ一覧が表示されていたのでそのノリで
そこから辿ってゆけるかなとか思ったのが敗因でした...orz

2. cd c:\ して python -m CGIHTTPServer
3. URLリンク(localhost:8000) に直接アクセスする
 
*拡張子は.pyでないと駄目。
*URLリンク(localhost:8000) にアクセスしても plain file ではないと言われ、403 error。

656:デフォルトの名無しさん
08/06/23 20:25:01
> *拡張子は.pyでないと駄目。
> *URLリンク(localhost:8000) にアクセスしても plain file ではないと言われ、403 error。

微笑ましいなw

657:デフォルトの名無しさん
08/06/24 04:35:18
>>650
墓場についてkwsk

658:デフォルトの名無しさん
08/06/24 09:46:10
650じゃないけど、あまり更新がないとか、あやしいリンク貼りまくられて荒らされるとかかな?

659:デフォルトの名無しさん
08/06/24 10:05:12
650じゃないけど、情報がいい加減とか、
以前サンプルコードにグローバル関数と同名の変数名が使ってあって
Python知らねえくせにまとめWikiかよお目出てえなとか、
リンク晒してるのはどう見ても関係者だろこれとか、
そんな暇があったら更新しろよハゲとかじゃないかな?

660:デフォルトの名無しさん
08/06/24 11:30:46
ぱいがめ翻訳サイトまだ?
だから廃れるんだよ
広めたいって人はいないのか

661:デフォルトの名無しさん
08/06/24 12:04:17
>>659
wikiなんだから間違いに気付いたら、みんなで編集していけば良いだけじゃないの?

662:デフォルトの名無しさん
08/06/24 13:37:42
墓場に大切なものを隠せば見つかりにくいというわけですね、分かります。

663:デフォルトの名無しさん
08/06/24 15:33:22
Python ではファイル=モジュールという単位になっていますが,
1ファイル=1クラスというコーディングスタイルは推奨
されていないのでしょうか?

a.py で class A を定義 → クラス a.A が定義される
b.py で class B を定義 → クラス b.B が定義される

名前空間まで別になってしまいます.
C++ でプログラムを組んでいてずっと1ファイル=1クラス
のスタイルでやってきたのですが・・・・

同じ名前空間に入れるすべてのクラスは同じファイルに
入れなくてはならないのでしょうか?

664:デフォルトの名無しさん
08/06/24 15:47:17
>>661
中立的な言葉で書かれていない文章をお前は編集する気になるか?

665:デフォルトの名無しさん
08/06/24 15:55:59
>>663
a.pyで from b import * とでもしておけばいい。
極端な例がmatplotlibのpylab.pyで、このファイルにはimportしか書いてない。

まぁ、細かいファイルは1つのファイルにまとめた方がいいと思うよ。
例外クラスまで1ファイル1クラスにしてるの?

666:デフォルトの名無しさん
08/06/24 15:58:54
>>663
1ファイル=1クラスは特に推奨はされていない。
Pythonコードはどのみちクラスからだけ成り立っているわけではないしな。

いくつかのモジュールをひとまとめにしたいときは、Pythonではパッケージを
使う。
パッケージの初期化ファイル__init__.pyでモジュールからエクスポートしたい
シンボルをimportしてやれば、あんたのやりたいことは実現できるはずだ。

667:デフォルトの名無しさん
08/06/24 16:30:44
若いのに中立ですか。

668:デフォルトの名無しさん
08/06/24 17:03:35
>>664
編集して普通の文章にするんだ
どうせ管理人すら放置してるんだから構わんだろ
どんどんやっちまえYO!!

669:デフォルトの名無しさん
08/06/24 17:32:26
翻訳は人任せとしても、wikiは自分の好きに書き換えればいいだろ

670:デフォルトの名無しさん
08/06/24 17:37:40
ゴミはゴミ箱に。
宝石は宝石箱に。

671:デフォルトの名無しさん
08/06/24 18:16:01
なんで翻訳の話がでてくるの?

672:デフォルトの名無しさん
08/06/24 19:53:21
__init__.py に import を書くというのは
なにかまずいことを引き起こすでしょうか?

673:デフォルトの名無しさん
08/06/24 20:01:24
>>672
全然。

674:デフォルトの名無しさん
08/06/24 20:13:10
>>672
ごく普通

675:デフォルトの名無しさん
08/06/24 21:33:48
>>672
アフガニスタンではよくあること

676:デフォルトの名無しさん
08/06/25 00:44:08
>>672
いっしょに__all__も定義すれば綺麗なPythonパッケージ

677:デフォルトの名無しさん
08/06/25 07:55:11
>>665
すっきりうんこでました
ありがとうございました


678:デフォルトの名無しさん
08/06/28 19:00:35
[1,2]の要素のそれぞれを2倍して[2,4]にする
っていうのはどうやればいいんでしょうか?

679:デフォルトの名無しさん
08/06/28 19:04:07
>>678
[i * 2 for i in [1, 2]]
もしくは
map(lambda x: x * 2, [1, 2])

680:デフォルトの名無しさん
08/06/28 19:06:20
ありがとうございます。
リスト内包表記ってそうやって使うんですね。

681:デフォルトの名無しさん
08/06/28 19:36:07
>>679
それは
> [1,2]の要素のそれぞれを2倍して[2,4]にする
ではなく、新しいリストを生成しているのでは。

x = [1,2]
for i in range(0,len(x)):
 x[i] *= 2


682:デフォルトの名無しさん
08/06/29 08:48:37
>>681
> ではなく、新しいリストを生成しているのでは。
だったら
x = [1, 2]
x = [i * 2 for i in x]
ってやれば同じ

683:デフォルトの名無しさん
08/06/29 09:23:29
>>681はインプレースで配列を変更していて
>>682は配列を新しく生成してその配列を参照しているように見える

これが勘違いでなければ
両者は返す結果こそ同じだが動作は別物じゃないか

684:デフォルトの名無しさん
08/06/29 10:04:37
>>683
それで合ってる。
inplaceにしたければ、スライス代入を使えばいい。

x[:] = (i * 2 for i in x)

685:683
08/06/29 10:55:58
>>684
なるほど。ジェネレータ式も勉強になったよ

686:デフォルトの名無しさん
08/06/29 11:41:39
from timeit import Timer

print Timer('x=[1,2]; x=[i*2 for i in x]').timeit()
# py3k: 2.0419500243746063
# py25: 1.5092940583230501

print Timer('x=[1,2]; x[:]=(i*2 for i in x)').timeit()
# py3k: 5.2120230364473699
# py25: 7.4014716954249735

スライス代入のほうがコストが高いんだろうか…
ベンチの取り方が間違ってるだけなのかもしれんけど (汗

687:デフォルトの名無しさん
08/06/29 11:44:13
>>684
それだ

ありがとう


688:デフォルトの名無しさん
08/06/29 11:46:37
>>686
最終的に代入になってても途中で余分にリスト作ってない?


689:デフォルトの名無しさん
08/06/29 12:03:13
>>686
普通の代入 x = よりはスライス代入のほうが遅いけど
それ以上にジェネレータの実行速度が遅いんだと思うよ
ジェネレータで節約できるのはメモリが主だろうし

690:デフォルトの名無しさん
08/06/29 13:05:03
Python って末尾再帰の最適化はサポートされていないのでしょうか?

691:デフォルトの名無しさん
08/06/29 13:17:51
されてますん。

692:デフォルトの名無しさん
08/06/29 13:42:00
>>691 どっちなんだ~

-------------
def rec(x = 0):
  if (x<1000000000):
    rec(x+1)
rec()
------------
RuntimeError: maximum recursion depth exceeded

693:デフォルトの名無しさん
08/06/29 13:52:29
うん、されてないと思う。

def fib(n):
    def fib_iter(a, b, m):
        return a if (m == n) else fib_iter(b, a + b, m + 1)
    return fib_iter(0, 1, 0)

おれの環境ではfib(1000)ぐらいでコケる。
ので、Pythonではiterative processは
素直にループやiteratorで書けということだと思った。

694:デフォルトの名無しさん
08/06/29 13:53:36
単にトレースが取れるようにするために何か制限しているだけなのかなぁ。
わからん、わからん、わからんちん。
しかし単純にループにするだけならトレースとかそもそもいらないのに。

sys.setrecursionlimit() を勝手にいじるのもどうかと思うし・・・

695:デフォルトの名無しさん
08/06/29 13:56:07
ううむ、つまり、「されてない」が結論だということっすね。

C++ + Boost Graph Library で大規模なグラフ処理してたんだけど、
Python + networkx でやってみようと思ってハマってます。

末尾再帰最適化を前提としたコードかいてたから、
移植のときにアタマをきりかえるのがなんとも・・・

696:デフォルトの名無しさん
08/06/29 13:57:05
Stackless Pythonというのを調べてみると良いかも。
ただ、Cのハードウェアスタックを使わないというだけなので、
末尾再帰をgotoに最適化してくれるかどうかは知らない。

697:デフォルトの名無しさん
08/06/29 13:57:49
URLリンク(mail.python.org)

698:デフォルトの名無しさん
08/06/29 13:58:28
>>697
さすがに2003年だからな
今でもだめなのか orz

699:デフォルトの名無しさん
08/06/29 14:05:28
sys.setrecursionlimit(10000)
でやってみたけど、7000ちょっとの再帰で今度は正真正銘の
MemoryError: stack overflow
が出た

Python赤玉。俺涙目。

700:デフォルトの名無しさん
08/06/29 15:21:59
Stackless Pythonなら、setrecursionlimit()で限界増やして、メモリの限り再帰しても大丈夫だよ。

701:デフォルトの名無しさん
08/06/29 16:23:18
メモリの限り再帰って・・・本質的な解決じゃない気がする。
そのうち末尾再帰の最適化が入ることを祈って、
とりあえずループに書き直した。

702:デフォルトの名無しさん
08/06/29 18:42:53
Pythonでは定数をどのように宣言(?)すればいいのでしょうか?
たとえば C++ において,クラス全体で使われる定数は
static const で宣言しますが,それと同じようなことは
でこれーたで可能なのでしょうか?

703:デフォルトの名無しさん
08/06/29 18:55:24
>>702
デコレータつかうと誤って更新すると例外が出るようのは作れるけど
クラスやパッケージ外からはアクセサつかって変数を更新するという
ルールにしとけば事故はおこんない。
そもそもPythonの変数は入れ物じゃなくて名前付けというか参照だから
そういう文化(というと大げさだけど)だと思うしかない。

まーCみたいに独自プリプロセッサとおすのはありかもね。

704:デフォルトの名無しさん
08/06/29 19:58:33
ここでもstackの話してるのかw

705:デフォルトの名無しさん
08/06/29 21:23:49
ゆとりちゃんは幼稚園からやりなおしてくだちゃいね

706:デフォルトの名無しさん
08/06/29 22:09:54
やりなおしても、またゆとり教育で永久ループか?

707:デフォルトの名無しさん
08/06/29 22:37:55
ゆとりはPython使うな。 以上。

708:デフォルトの名無しさん
08/06/30 00:25:22
Python3.0について質問です。
名前空間ってやつで悩んでます。

urllibモジュールについて、

import urllib.parse.urlparseとやるとimportに失敗します。
from urllib.parse import urlparseとやるとモジュールのimportに成功します。

なぜでしょうか??

なぜ下の方は成功し、上のほうは失敗するのでしょうか。

709:デフォルトの名無しさん
08/06/30 00:35:21
urlparseがモジュールじゃなくて関数だから (lib/urllib/parse.py)

710:デフォルトの名無しさん
08/06/30 00:43:14
>>708
URLリンク(www.python.jp)
単純なimport文やfromに指定できるのは「モジュール名」に限る。
パッケージがサブディレクトリを持っていて階層構造になっている場合は
モジュール名にドットが含まれることもある。

711:デフォルトの名無しさん
08/06/30 00:56:00
>>709,>>710
ありがとうございます。
疑問点について氷解しました。

712:デフォルトの名無しさん
08/07/02 09:12:25
PEPってPython Enhancement Proposals
のことだって始めて知った今日。

713:デフォルトの名無しさん
08/07/02 13:39:10
PHPってPrintHtmlPrototyping

714:デフォルトの名無しさん
08/07/03 08:36:51
Pythonで簡単なウェブサーバを作成するパッケージってありますか?
ローカルで実験してて計測結果を表示するウェブインターフェース付けたいんだけど

715:デフォルトの名無しさん
08/07/03 08:54:55
>>714
>>651
>>> python -m CGIHTTPServer
50レス程度も読めないの?馬鹿なの?死ぬの?

716:デフォルトの名無しさん
08/07/03 09:11:23
そういう人間のたまり場だということになぜ気付かないの?

717:デフォルトの名無しさん
08/07/03 12:58:39
ログを読まないより、ググらないのとリファレンスを引かない方が…

718:デフォルトの名無しさん
08/07/03 19:41:22
プログラム初心者がpythonでcgiやりたいとかならともかく、
実験してるような人なら、必要な情報を調べる技術は備えてるはずだと思うんだけどなあ

719:714
08/07/04 07:00:11
思いついた時にケータイで取り合えず聞いておくから.
後で調べる.

とにかく古い測定器で,GP-IBインターフェイスカードが
そのマシンにしかついてなくって,面倒だなぁ,と.

720:714
08/07/04 07:02:01
レスしてくれる人があったらラッキーだし,
なくてもまぁ,なんというか,メモ代わり.
自鯖のp2経由だから自分がどこに何書き込んだかログ残るし.

721:714
08/07/04 07:33:41
だから,レスは別にいらないし、回答をくれても特に感謝もしない.
こっちが要求したワケじゃないから,ね.

722:デフォルトの名無しさん
08/07/04 07:38:31
つチラシの裏

723:714
08/07/04 07:41:48
わかってると思うけど,721は別人.

…まあ,言ってることは当たってるけど.

724:デフォルトの名無しさん
08/07/04 08:46:23
あんま参考にならない意見かもしれんけど
URLリンク(coreblog.org)
URLリンク(coreblog.org) 目次

とか薦めてみるテスト

じぶんもCGIよくわからないひとなので、今週の土日使って
読んでみる予定。

725:デフォルトの名無しさん
08/07/04 11:30:17
ものすごいインストーラー嫌いなんです
Windows用のはインストーラーしか見当たらないのですが
Pythonをインストールせずに使う方法はありますか?

Portable Pythonっていうのを使えばいいんでしょうか?


726:デフォルトの名無しさん
08/07/04 11:51:14
>>725
そんなに嫌がらないで・・・

727:デフォルトの名無しさん
08/07/04 13:21:23
>>725
ソース落としてコンパイル or msiを展開する

728:デフォルトの名無しさん
08/07/04 15:49:43
1バイト以下に収まる整数のでっかい配列を扱いたいと
思ったんだけど、基本型には「短」整数型ってのはないのな orz

729:デフォルトの名無しさん
08/07/04 15:50:44
>>728
import array

730:デフォルトの名無しさん
08/07/04 16:22:22
多次元配列を扱いたいんだ・・・
できれば符号なし8ビット整数の。

NumPy ってページを見てみた。
It also adds the features introduced
by Numarray and can also be used to replace Numarray.

ってことらしいのだが、つーことは今は numpy.array を使えと?

731:デフォルトの名無しさん
08/07/04 16:29:12
A newer implementation, Numarray, is a complete rewrite of Numeric
but is also deprecated. NumPy is a merge between the two
that builds on the code base of Numeric and adds the features
of Numarray.
----
Wikipedia にはこうかかれていました。

732:デフォルトの名無しさん
08/07/04 18:47:31
ありがとうございました

733:デフォルトの名無しさん
08/07/04 19:21:43
どう見ても精子です。
本当にありがとうございました。

734:デフォルトの名無しさん
08/07/05 20:03:29
自鯖クラッシュに伴い、Python ベースのブログツールに
して気分一新しようと思ってるんですが、この世界は
大体 Zope ベースと TurboGears ベースに収束しつつあるんでしょうか?

Apache + Pythonベースの CGI というよりは、
サーバ機能も含めて全部 Python で固めたシステムに
してみたいんですが、そうなると Zope ベース一択ですか?

735:デフォルトの名無しさん
08/07/05 20:34:16
Debian に zope3 パッケージが見つかったんで入れちまった。

736:デフォルトの名無しさん
08/07/05 20:48:34
Zope3はガチで地雷。

737:デフォルトの名無しさん
08/07/05 20:50:44
言うな。個々のパーツは素晴らしいと思うんだが

738:デフォルトの名無しさん
08/07/05 21:17:12
ブログツールってのが既成のなら
何ベースというより機能で選択すればいいとおもうけど
自分で構築するならlighty+WSGIかSCGIなPythonアプリかな。

Zopeは2.6以降追っかけてないけど
当時の設計思想でコアなProductも同等以上なら
Python自体がバージョンアップしてる分そうとう楽しく書けるはず。
でも実際は>>736のとおりなんだろうな。

739:デフォルトの名無しさん
08/07/05 22:23:27
Zope3はすばらしいと思うが周りに集まってくる日本人がクソ。

740:デフォルトの名無しさん
08/07/05 22:26:12
え?地雷なの?
なんか改造したくなったときにPythonだと普段から使っているからやりやすいかと思って。
PerlとかPHPで書かれたやついじりまくって収集つかなくなった。

741:デフォルトの名無しさん
08/07/05 22:29:01
舞の海

742:デフォルトの名無しさん
08/07/05 23:27:31
>>740
>PerlとかPHPで書かれたやついじりまくって収集つかなくなった。

センスのある奴は道具に左右されずそつなくなんでもこなすもんだがね。

743:デフォルトの名無しさん
08/07/06 00:25:22
クマー

744:デフォルトの名無しさん
08/07/06 01:40:50
ちょ
PHPはセンスあっても無理な時は無理

grobal依存しまくりな著名アプリがほぼ絶滅したら認識改めてもいいが
なんかSquirrelMailっての改造作業回された時にほんと死ねクズ開発者共って思った

745:デフォルトの名無しさん
08/07/06 03:10:32
PHPにはnamespaceすらも無いの?

746:デフォルトの名無しさん
08/07/06 03:13:36
ねえよンなもん

747:デフォルトの名無しさん
08/07/06 04:53:51
PHPは言語自体行き当たりばったりなハックで作られてる印象

748:デフォルトの名無しさん
08/07/06 08:31:52
>>744
>SquirrelMailっての改造作業回された時

ドカタ乙。

749:デフォルトの名無しさん
08/07/06 08:45:48
ワラ

750:デフォルトの名無しさん
08/07/06 11:23:57
Perlは綺麗なのか?
かなりアドホックに建て増ししてるように見えるが。

751:デフォルトの名無しさん
08/07/06 11:35:17
Zope3の実装はきれいだけど、使っている日本人がババッちい。

752:デフォルトの名無しさん
08/07/06 12:02:04
zopeはメメタァなだけだろ

753:デフォルトの名無しさん
08/07/06 12:49:36
>>751
なんでZope関係の日本人は変な感じがするんだろう…

754:デフォルトの名無しさん
08/07/06 13:35:53
CMSでいえば俺が以前使ってた geeklog の人なんて
もっと気持ち悪いよ。

755:デフォルトの名無しさん
08/07/06 14:39:40
CMSスレでも評判悪いなw

756:デフォルトの名無しさん
08/07/06 16:02:22
>>745 namespaceは5.3で導入される。6.0からunicodeのネイティブサポート。

757:デフォルトの名無しさん
08/07/06 16:22:21
総じてCMS開発者は気持ち悪いのか?

758:デフォルトの名無しさん
08/07/06 16:54:27
>>755
俺もね,いろいろと改良しようとはしたんだ.
というか,実際やった.自分のブログだけは.
でもさ,モジュール化が難しい PHP だと,
上流の変更に合わせてマージできるように確認
するだけでえらい手間がかかるんだ.
そこまでしてコントリビューとするのも面倒だったからやめた.

上流での変更範囲のどこまでが自分がコミットした
パッチに影響あるか,確信が持てないし,
退行テストするほど時間に余裕もない.

つーわけで Zope 3 だとその辺考慮されてるかな?
とか淡い期待を抱いてインスコはしてみたものの,
まだインスタンス作成すらしてないや.
Zope スレも過疎ってるみたいだしさ

759:デフォルトの名無しさん
08/07/09 01:30:40
全然話は変わるけど、pythonってなんで
file = open('hoge.txt')
for line in file :
 hogehoge()
って書けないのよ

760:デフォルトの名無しさん
08/07/09 01:33:24
書けるよ

761:デフォルトの名無しさん
08/07/09 03:01:11
行毎なのか文字毎なのかバイト毎なのか
はっきりしろ

762:デフォルトの名無しさん
08/07/09 03:17:19
>>759
Oh! Python勉強中なのでその話題は気になります

Perlだったらこんな感じ?
open(IN, "hoge.txt") or die "Can't open hoge.txt";
while(<IN>) {
 chomp;
 print $_;
}
close(IN);

Pythonなら

763:デフォルトの名無しさん
08/07/09 03:22:47
Pythonならこう?

f = open("hoge.txt", 'r')
while True:
 l = f.readline()
 if l == '':
  break
 l = l.rstrip('\n')
 print l
f.close()

…もっと上手い書き方・短くなる書き方があるのでしょうか?
while True: が気になります
ここに条件判断入れて短くできないのでしょうか?

764:デフォルトの名無しさん
08/07/09 03:24:57
というか Perlの or die "~" に相当する部分がないのも気になるな…
try: ~ except: 使わなきゃダメなのかな

765:デフォルトの名無しさん
08/07/09 04:39:35
>>763
ファイルから1行ずつ読むループは
for line in file:
でいいんだよ。
759が何を駄目と言ってるのか分からない。

766:デフォルトの名無しさん
08/07/09 04:58:16
>>763
f = open('hoge.txt')
for line in f: print f, # 末端にカンマつき
f.close()

stdout.writeのほうが好みならそっちを
あと例外は補足しなければ大概はdieの代わりになるよ

767:デフォルトの名無しさん
08/07/09 05:10:36
>>765
おお…ホントだ! 試してみたら行けました
「Python ファイル読み込み」で検索すると>>763のような書き方しか出てこなかったので
for line in file: なんて書き方ができるとは知りませんでした

…どうして初心者向けの解説ページでは長々とした書き方を紹介してるんだろう
もしかして比較的最近の版じゃないと書けないやり方なんでしょうかね?
何にしても短く書けて嬉しい限りです

後は or die "~" 相当の書き方を調べてこないと…

768:デフォルトの名無しさん
08/07/09 05:10:41
ごめん間違い
for line in f: print line, で

769:デフォルトの名無しさん
08/07/09 05:15:50
>>766
膝を打ちました
print の最後にカンマをつけることで改行を出力しない
=読み込んだ行の改行を利用して改行してしまう、ということなのですね
上手いやり方があるなあ…
しかもたったの3行になってて感動しました
同じ処理でもこんなに短く書けるのか…

770:デフォルトの名無しさん
08/07/09 06:54:27
公式に良いチュートリアルがあるよ。
>>759-769の内容は網羅されてる。

URLリンク(www.python.jp)

771:デフォルトの名無しさん
08/07/09 12:19:44
sys.stdout.writelines(open("hoge.txt"))

for line in open("hoge.txt"): print line

772:デフォルトの名無しさん
08/07/09 20:51:05
>>770
「網羅されてる」ようには見えませんが…

7.2 ファイルを読み書きする
URLリンク(www.python.jp)

目についたのはこのへんですが、この内容から上記の話を知識として得るには無理がありませんか?
それとも、そちらで見ている項が違うんでしょうか?

余談ですが
こういってはなんですけど、公式のチュートリアルってなんだか判りづらくないですか…?
プログラミングそのものが初めての人向け、のように一見始まりながら
しかし噛み砕き方がかなり中途半端で、そのうえ、どこに何が載っているかが判りづらく
初心者にも、他言語習得済みの人にも
どちらにもお勧めできない解説になってるように思えます
…和訳文書があるだけマシではありますが、おそらくコレは原文からしてよくないんでしょうね

773:デフォルトの名無しさん
08/07/09 21:49:17
>>772
もっと先のイテレータのところにちょろっと書いてある。

774:デフォルトの名無しさん
08/07/09 22:29:17
余りわかりやすく書いてしまうと本が売れなくなる

775:デフォルトの名無しさん
08/07/09 22:35:07
イタリックは止めて欲しいよね

776:770
08/07/09 22:43:43
ちなみにPython2.4.2以降のチュートリアル(英語)には
ファイル読み書きの項にも載ってる
URLリンク(docs.python.org)

>>772
> 初心者にも、他言語習得済みの人にも
> どちらにもお勧めできない解説になってるように思えます
確かにチュートリアルは初心者向けではない
ただ良いと感じるかそうでないかは
あくまで読む人の経験に左右されるので一概には言えない
良くないと感じたら入門書を買うのが吉

777:デフォルトの名無しさん
08/07/09 23:03:38
pythonの入門書なんか書籍数が少ない上に中途半端なのばっかじゃん
python勉強しようって連中からしたらifとかforとかたらたら書いてあっても無意味なのにさあ
EffectiveC++とかEffectiveJava的な本が無いのがいかん

778:デフォルトの名無しさん
08/07/09 23:49:04
>>773
あっ…そこでしたか。これは失礼しました。たしかにちらりと紹介されてました

9. クラス - 9.8 イテレータ (iterator)
URLリンク(www.python.jp)

頭の中で「ファイル」「for文」のキーワードしか浮かばなくて違うところを探してました…

URLリンク(www.python.jp)
4. その他の制御フローツール - 4.2 for 文

Pyhon 2.5.2版チュートリアルでは、ファイル関係の項に事例が載ってるのが興味深いです
版が新しくなるたびに、微妙に改善?されてるのですね>原文

779:デフォルトの名無しさん
08/07/10 12:40:48
Cookbookでもみたら。
プログラミングの初心者には、
pythonで学ぶプログラミング作法がおすすめなんだがさすがに古いんだよな。

780:デフォルトの名無しさん
08/07/10 12:41:34
is 演算子はオブジェクトに関するアイデンティティテストですが,
定数に対しての式 3 is 3 が True になるのはどういう理屈によるのでしょうか.

781:デフォルトの名無しさん
08/07/10 14:01:23
定数じゃないから
>>> int(3) is 3
True

782:デフォルトの名無しさん
08/07/10 15:42:02
is ってオブジェクトとして同じってことであって,
値として同じってことじゃないと思うんですよ.

i = int(3)
j = int(3)
print i is j #これは True
print i == i #これは True

class TestClass():
  def __init(self):
    pass
  def __eq__(self, right):
    return True

p = TestClass()
q = TestClass()
print p is q #これは False
print p == q #これは True


783:デフォルトの名無しさん
08/07/10 15:46:43
Pythonの数値はimmutableだから
同じオブジェクトを使いまわしても問題ないんです

784:デフォルトの名無しさん
08/07/10 15:48:19
int,float,str等の場合はa==bがTrueでもa is bはFalseになる場合もあるので
使うべきではないね

785:デフォルトの名無しさん
08/07/10 15:50:31
変更不可能なオブジェクトの場合はそういうふるまいなのか?
って思ったんだけど…タプルでやってみる

x = (1,2)
y = (1,2)

print x is y #これは False
print x == y #これは True


786:デフォルトの名無しさん
08/07/10 15:58:30
そこらへんは実装依存
変更不可能なオブジェクトは使いまわしてもいいし使いまわさなくてもいい

787:デフォルトの名無しさん
08/07/10 16:45:27
実装依存 orz
危険だなぁ

788:デフォルトの名無しさん
08/07/10 16:52:37
そういう比較にisは使わないから危険ではないでしょ

789:デフォルトの名無しさん
08/07/10 16:55:37
>>> 100+100 is 200
True
>>> 100*100 is 10000
False

790:デフォルトの名無しさん
08/07/10 17:00:55
is をどういうときに使うのか今一つピンとこないなあ…
>>784の事例を考えると
「最初から何でもかんでもできるだけ全部 == でいいじゃねえかそのほうがシンプルだろう」
と思うのだけど…

791:デフォルトの名無しさん
08/07/10 17:06:38
値としてイコールなのと、オブジェクトが等しいことは全く別の話だが
ポインタがない言語だから分かりにくいのかね。

792:デフォルトの名無しさん
08/07/10 17:41:16
>>> x = None

>>> print x == None

True

>>> print x is None

True


None との比較には is None を使うべし、と説明してる記事をよく見かけるのですが
初心者向け記事・最初のうちは x == None だけ使ったほうがいいのかな
という気がしただけなんですけどね

793:デフォルトの名無しさん
08/07/10 17:42:31
なんで各行に改行が入るんだ… orz

794:デフォルトの名無しさん
08/07/10 17:53:38
>>791
でもちゃんと copy.deepcopy() とか用意されてるけどね

795:デフォルトの名無しさん
08/07/10 19:10:47
どのメソッド・関数でどれくらい時間がかかっているかを
測定してくれるプロファイラって Python にないですか?
PyDev から容易に使うことができればベストなんですが.

796:デフォルトの名無しさん
08/07/10 19:53:05
import profile でおkでした

797:デフォルトの名無しさん
08/07/10 20:05:52
hotshotもあるよ

798:デフォルトの名無しさん
08/07/15 22:43:38
>>762
Python2.5以降

with open('sample.txt','r') as fp:
for line in fp:
print line

799:798
08/07/15 22:47:21
ミスった。こうかな?
with open('sample.txt','r') as fp:
        for line in fp:
                 print line

800:デフォルトの名無しさん
08/07/16 00:18:35
インデントなくても分かるコードならそのままでよくね?
2chの仕様はみんなしってるし。
スレローカルで行頭のある記号(たとえば . とか)は
空白とみなすとかなら楽なんだけど。

801:デフォルトの名無しさん
08/07/16 08:09:50
プログラマ=アプリを使いこなす、ってイメージがあるから
2chは専用ブラウザで見てるって思ってるんだけど、そうでもないのかな。

802:デフォルトの名無しさん
08/07/16 12:45:16
htmlソース見たら空白復元出来るけど何が問題?

803:デフォルトの名無しさん
08/07/16 21:46:46
>>801
自分が使ってるアプリの独自仕様が標準だと思ってる人って痛いよね

804:デフォルトの名無しさん
08/07/16 22:28:40
どこにでもいるけどな

805:デフォルトの名無しさん
08/07/16 23:27:06
いい加減スレ違い

806:デフォルトの名無しさん
08/07/17 10:22:46
これでいけそうな気が
$ python -c "import sys; print sys.stdin.read().replace(' ', ' ')" < test.py

#! /bin/env python
def main():
    for i in range(10):
        print i

if __name__ == '__main__':
    main()
    


807:デフォルトの名無しさん
08/07/17 10:26:04
replace(' ', ' ') -> replace(' ', '&nbsp;')

808:デフォルトの名無しさん
08/07/17 15:47:25
C#使いだけど今日からPython始めるよ
みんなよろしく!


809:デフォルトの名無しさん
08/07/17 16:04:31
つ IronPython
いろんな意味で逃げ出せない

810:デフォルトの名無しさん
08/07/17 18:55:14
それも入れたー
とりあえず何か作ってみるわー

811:デフォルトの名無しさん
08/07/18 07:55:10
PythonはTkinterでコマンドラインアプリのラッパーづくり
WebアプリはApache+PHPでお手軽に作れる規模で十分な俺が
PythonでWebアプリ作ろうと思ったらどんなパッケージ使うべき?
ゴツいフレームワークは無しの方向で


812:デフォルトの名無しさん
08/07/18 08:04:11
普通にApacheでCGIでいいんじゃね?

813:デフォルトの名無しさん
08/07/18 13:42:30
web.pyとか?

814:デフォルトの名無しさん
08/07/18 18:41:56
そういえばdjangoの本でてるね
URLリンク(www.amazon.co.jp)


815:デフォルトの名無しさん
08/07/19 10:29:32
>>811
■[Python]web.pyで画像掲示板
URLリンク(d.hatena.ne.jp)

ローカルで動かそうとすると画像ファイルが
表示されない…でもシンプル。App engineも似た
ようなかんじで組める印象…

816:デフォルトの名無しさん
08/07/21 23:04:11
今日初めて生で柴田さんを見た。

817:デフォルトの名無しさん
08/07/21 23:46:03
受け付けの柴田さんなら毎日見てる

818:デフォルトの名無しさん
08/07/22 00:17:13
いくぜっ

819:デフォルトの名無しさん
08/07/25 01:41:29
一行めの/usr/bin/env pythonのenvって
環境変数無効にするって意味なんですか?

820:デフォルトの名無しさん
08/07/25 02:04:09
>>819
Unixでの常套句
この場合pythonのフルパスがわからなくても動作する。
PATHはとおっていないとだめだけど。

821:デフォルトの名無しさん
08/07/25 02:07:56
>>820
あー、環境変数PATHを有効にしてるってことですね。
呪文だと割り切りつつ、ずっと疑問だったのですがすっきりしました。
ありがとうございます!

822:デフォルトの名無しさん
08/07/25 02:12:24
正直、俺は呆れたよ…

823:デフォルトの名無しさん
08/07/25 02:19:25
だってwindows使いなんだもん
超初心者スレだから許してちょ!

824:デフォルトの名無しさん
08/07/25 02:37:45
Windowsだったらその行消しても問題ないよね?

825:デフォルトの名無しさん
08/07/25 02:43:01
うん

826:デフォルトの名無しさん
08/07/25 14:30:23
すると
*NIX環境下でも
Windows環境下でも
Mac環境下でも
どこでも動くPythonスクリプトを書こうと思ったら
1行目に必ず
#!/usr/bin/env python
と書いておくのが定石ということでいんでしょうか

827:デフォルトの名無しさん
08/07/25 17:07:33
>>819
pythonの実行ファイルが
/usr/bin/python
にあろうが、
/usr/local/bin/python
にあろうが動かそうとする場合に使うんでないかい?

ただし、欠点として2つ以上の引数(この場合envの後の python 以降)を認識しなかったはず

828:デフォルトの名無しさん
08/07/25 17:10:57
ちょっと質問があるのですが、
ライブラリのパスにzip付きパスがあるんですが、
これって標準ライブラリ一式を zipに固めて置いておけば動くっチューことなんでしょうか?
この編の仕組みについてドキュメントに記述があればどの辺にあるか教えてください。

ライブラリパス表示例:
 python -c 'import sys; print sys.path;'

829:デフォルトの名無しさん
08/07/25 17:17:37
別の単語で検索していたら、一発で見つかったw

4.12 zipimport -- Zip アーカイブからモジュールを import する
URLリンク(www.python.jp)

お騒がせしました。
ありがとうございました。

830:デフォルトの名無しさん
08/07/25 17:22:07
py2exe の _memimporter も調べた方がいいよ

831:デフォルトの名無しさん
08/07/29 17:24:04
M.Hiroiさんのお気楽pythonプログラミング入門で、
第4回ジェネレータのところの
リスト7がどう動くのか分かりませんでした。
打ち込んで動かすと、正常に動きました。
最初空リストの意味が分かりませんでしたが、
n==len(nums)が再帰の停止条件になっていると考え、
与えられたリストが[1,2,3]なら、n=3のとき、空リストが
n=2の階層に戻って、for yの繰り返しで、与えられた順序と
同じ順列のリストを作ったら、どの階層に戻っても、
if y not in xを満たさなくなり、一番外側のn=0に戻って、
一つ目の順列をプリントすると理解したつもりが
次の順列である[1,3,2]がどうして出てくるか分からなく
なったので、たぶん上の理解も間違っているのではと
思いました。それでトレースする方法をweb上やマニュアルから
調べましたが、結局うまくいかず、お手上げ。どうすればいいでしょ。


832:デフォルトの名無しさん
08/07/29 18:30:31
どこかわからん

833:デフォルトの名無しさん
08/07/29 20:37:42
>>831
>M.Hiroiさんのお気楽pythonプログラミング入門で、
>第4回ジェネレータのところの
>リスト7がどう動くのか分かりませんでした

答えて欲しけりゃ引用して来い



834:デフォルトの名無しさん
08/07/29 20:40:13
>831じゃないけどたぶんこれだよ
URLリンク(www.geocities.jp)

835:デフォルトの名無しさん
08/07/29 21:28:36
>>831
デバッガでステップ実行

836:831
08/07/29 22:58:49
ありがとうございます。Pdb sコマンドでステップ実行できました。
今から動作を確かめます。

837:デフォルトの名無しさん
08/07/30 11:04:16
ファイルディスクリプタ(番号)からファイルオブジェクトを作るにはどうすればいいのでしょうか?

838:デフォルトの名無しさん
08/07/30 11:51:07
os.fdopen

839:831
08/07/30 13:32:19
どう動くか分かりました。yieldはreturnのようなもので、
ループの途中でも中断して値を返していく。
普通のreturnとの違いはもう一度同じルーチンが
呼ばれたら、最後のyieldのところに戻って、
ループの続きを行い、最初のyieldのところに戻ったら、
全体の繰り返しが終わるようです。
デバッガの出力が少しマギらわしかったですが。

840:デフォルトの名無しさん
08/07/30 20:10:40
念のため聞いとくけどgen_perm(nums, n)が返すのはyieldの値じゃなくて
ジェネレータオブジェクトだってわかってるよね?

841:831
08/07/31 14:07:35
分かっていません。yieldの値が返っていると思っていました。
でも、呼び出しているところでfor文で受け取っているところが
言われてみれば、普通とは違う感じですかね。不意を付かれたので、
ちょっとググりましたら、イテレータに関係していそうです。
URLリンク(atkonn.blogspot.com)
上記のページで変数に入れて、next()で呼ぶと、次々と
値が変わるというのがfor文において次が呼ばれるみたいな
イメージで理解しましたが、普通に呼んだだけでは何も
表示されないというのが分かりませんでした。よろしかったら
お教えください。


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch