Pythonのお勉強 Part3 ..
[2ch|▼Menu]
136:デフォルトの名無しさん
09/07/22 01:21:23
>>134
そりゃ、Shift-JISで書かれたファイルをencode='utf-8'とかを指定して
読み込もうとしたらDecodeErrorになるよ。

137:デフォルトの名無しさん
09/07/22 01:35:27
>>134
b'\x82\xa0'.decode("ascii") とかでも UnicodeDecodeError

138:デフォルトの名無しさん
09/07/22 01:56:25
b'\x82\xa0'.decode("cp932")

139:デフォルトの名無しさん
09/07/22 02:49:31
>>135
おk、事務所に置いて来たので、10時頃まで待ってください。

140:デフォルトの名無しさん
09/07/22 11:11:02
まず、sceneを作るところ。
import math
#==============Set up scene===============
scene.title='Lorenz Attractor'
axr=50 #Max Range of Axis
scene.width = 800
scene.height = 800
scene.center = (0, 0, 0) #center, where camera looks always.
scene.forward = (-axr, axr, -axr) #where camera views at initial.
scene.up = (0,0,1) #z is up.
scene.range = axr*1.25 # zoom out a little, to get all axis in sight
#draw x-y plane grid
for i in range(-axr, axr+1, axr/20):
curve(pos=[(i, -axr,0),(i,axr,0)],color = (0.3,0.3,0.4)) #parallel to Y
curve(pos=[(axr, i,0),(-axr,i,0)],color = (0.3,0.4,0.3)) #parallel to X
#axis (x,y,z), and small arrow
xaxis = curve(pos=[(-axr,0,0), (axr,0,0)], color=color.red)
curve(pos=[(axr,0,0), (axr*0.95,axr*0.05,0)], color=color.red)
curve(pos=[(axr,0,0), (axr*0.95,-axr*0.05,0)], color=color.red)
yaxis = curve(pos=[(0,-axr,0), (0,axr,0)], color=color.green)
curve(pos=[(0,axr,0), (-axr*0.05,axr*0.95,0)], color=color.green)
curve(pos=[(0,axr,0), (axr*0.05,axr*0.95,0)], color=color.green)
zaxis = curve(pos=[(0,0,-axr), (0,0,axr)], color=color.yellow)
curve(pos=[(0,0,axr), (-axr*0.05,0,axr*0.95)], color=color.yellow)
curve(pos=[(0,0,axr), (axr*0.05,0,axr*0.95)], color=color.yellow)

xlabel = label(pos=(axr,axr/10,0), box=0, opacity=0.25, text = 'x')
ylabel = label(pos=(-axr/10,axr,0),box=0, opacity=0.25, text = 'y')
zlabel = label(pos=(-axr/10,0,axr),box=0, opacity=0.25, text = 'z')
#===========end setting up scene============

141:デフォルトの名無しさん
09/07/22 11:14:42
あ。貼り付けるとスペースは消えちゃうのか。forの次はindentしてください。
sceneの中心が原点、xy平面を見下ろし、z軸が上向き、ちょっとズームアウト。
軸のレンジ÷20で、XY平面にグリッドを書く。
X軸、ちょこっと矢印、Y軸、ちょこっと矢印、Z軸、ちょこっと矢印、「X」とかラベル付け。

142:デフォルトの名無しさん
09/07/22 11:17:32
#=====Objects to show=====
ball = sphere(pos=(0,0,0), radius=1, color=color.red, opacity=0.8)
shadow = cylinder(pos=(0,0,0), axis=(0,0,1), radius = 1, color=color.white, opacity=0.2)
trail = curve()
x, y, z = 0.1, 0,0
count = 0
pointslist = []

while(count < 10000):
#animation maximum rate per second
rate(1000)
# do the lorenz attractor
dx = 10.0 * (y - x)
dy = x * (28.0 - z) - y
dz = x * y - (2.666666 * z)

x = x + dx * 0.005
y = y + dy * 0.005
z = z + dz * 0.005
pointslist.append((x, y, z))
#do not "print" every time. it can be very slow.
if math.fmod(count,500)==0:
print count, x,y,z

ball.pos = (x,y,z)
shadow.pos = (x, y, 0) #shadow is drawn to X-Y plane
trail.append(pos=ball.pos, retain=100) # last some points

count = count + 1

points(pos=pointslist, size = 2, color=(1,0.5,0))

143:デフォルトの名無しさん
09/07/22 11:24:51
ボールを用意、陰(円盤)を用意、しっぽを用意。
ローレンツアトラクタを10000回計算。
結果の座標をListに足し、ボールと影と尻尾の座標をセット。
終わったらpointsで軌跡を描画です。
URLリンク(up2.viploader.net)
実行するとボールがくるくる動いた後、こうなります。

144:デフォルトの名無しさん
09/07/22 12:12:02
>>133
tt

145:デフォルトの名無しさん
09/07/22 12:17:16
これはおもろいすなぁ。
URLリンク(up2.viploader.net)
こんなブキミな物体(Torus Knot)も簡単に書ける。描画部分を下のように変えます。

pointslist = []
A = 3.0
B = 8.0
drawcount = 1000
for i in range(drawcount):
theta = 2 * math.pi * i * A / drawcount
x = ( 2 + math.cos(B*theta/A))*math.cos(theta) * 20
y = ( 2 + math.cos(B*theta/A))*math.sin(theta) * 20
z = math.sin(B*theta/A) * 20
pointslist.append((x, y, z))

for i, p in enumerate(pointslist):
c_hsv=(i/float(drawcount),1,1)
sphere(pos=p, radius=6, color=color.hsv_to_rgb(c_hsv), opacity=0.7)

146:デフォルトの名無しさん
09/07/22 12:25:42
フレンチクルーラーを思い出した

147:デフォルトの名無しさん
09/07/22 12:36:30
>>146
あれはさっくりして美味しいですよな。
URLリンク(up2.viploader.net)
(A,B)=(9,19)にしたら全然違うものが出来てしまったよorz

148:デフォルトの名無しさん
09/07/22 13:41:37
URLリンク(up2.viploader.net)
sphereで、opacity=0.12、material=material.emissive、追加でlocal_light(pos=p,color=color.white)
としたら結構綺麗なのが出来ました。こんなんが数行で書けるんだから時代の
進歩というのはすごいものでありますなぁ…

さて次はNumpyで遊んだ結果をVPythonで表示してみようかな?

149:デフォルトの名無しさん
09/07/22 15:32:47
負荷の大きい鯖のプログラムはperlなところが多い気がするのですが
pythonも高負荷に耐えれるのでしょうか

150:デフォルトの名無しさん
09/07/22 15:38:28
むしろPerlよりも軽い

151:デフォルトの名無しさん
09/07/22 15:54:38
phpよりも軽い?

152:デフォルトの名無しさん
09/07/22 19:23:51
>>149
「pythonも高負荷に耐えれるのでしょうか」じゃなくて
「pythonが高負荷を発生するのでしょうか」だろ。

153:デフォルトの名無しさん
09/07/22 19:25:40
Python電磁波クラブ

154:デフォルトの名無しさん
09/07/22 19:25:56
>負荷の大きい鯖のプログラムはperl

かなり曖昧だな



155:デフォルトの名無しさん
09/07/22 23:20:12
このページによると、
速度だけなら
python > perl > php > ruby
な感じ。
perlはメモリ消費優秀。
phpはメモリ消費大杉。

156:デフォルトの名無しさん
09/07/22 23:23:45
ページ張り忘れた。
URLリンク(shootout.alioth.debian.org)

157:デフォルトの名無しさん
09/07/22 23:35:17
つーか、PHPって別に速くないんかいw

158:デフォルトの名無しさん
09/07/23 00:12:16
良くある色が変わっていく表示は、RGBじゃなくてHSVで作ればいいのか。
良く分かったよ感謝

159:デフォルトの名無しさん
09/07/23 00:14:04
PHPの速さはapacheのSAPI経由から開始される高速な起動と、(他のmod_***より明らかに早い)
負荷のかかる処理をC言語の拡張に任せるというスタイルによるレスポンスのよさだからな。
オブジェクト指向を気取ってコードをたくさん書けば書くほど遅くなる罠。

まあそれはLWLではみな同じことが言えるわけだが。

160:デフォルトの名無しさん
09/07/23 00:36:57
PyCUDAとか使ってみたいですな
100倍速い!!とか言ってみたい。

161:デフォルトの名無しさん
09/07/23 06:39:44
> 負荷のかかる処理をC言語の拡張に任せる
それってどれも同じなんじゃね?

162:デフォルトの名無しさん
09/07/23 07:26:55
失敗した…
おれもVPython入れてみようと思って、Ubuntu9.0.4のsynapticで「あるじゃん」と思って入れたら、
これバージョン3だよ。opacityとか無いよ。

163:デフォルトの名無しさん
09/07/23 08:20:00
>>161
pythonがcgi.pyでやっているような処理を、phpではCで書かれた関数で行なっている。
測定してみればわかるけど、これはけっこう性能に効く。

164:デフォルトの名無しさん
09/07/23 08:29:04
wsgi

165:デフォルトの名無しさん
09/07/23 08:45:53
今どきcgiなんて使わないだろ。

166:デフォルトの名無しさん
09/07/23 08:50:58
PHPで数値計算と文字列処理のベンチを取ると激遅なんだよな。
まぁWebで数値計算はしないが。

ソースを忘れたけど

167:デフォルトの名無しさん
09/07/23 09:57:17
こんな感じでデータが入ったファイルを
-50,-28,13,0.66
 :

こんな風に読んで、VisualPythonの玉に入れてみたら
from visual import *
f = open("test.dat")
for oneline in f.readlines():
 plist = oneline.strip().split(',')
 p = [int(s) for s in plist[:3]]
 c_hsv = [float(plist[3]),1,1]
 sphere(pos=p, radius=2, color=color.hsv_to_rgb(c_hsv), opacity=0.7)

いきなり可視化できてしまったぞ。ちょwwマジかwwいいのかこれでww

168:デフォルトの名無しさん
09/07/23 10:17:57
なぜ、PythonはRubyの
# -*- coding:utf-8 -*-
をパクってるのでしょうか?文字コード指定は楽なのはわかりますが。

169:デフォルトの名無しさん
09/07/23 10:20:25
>>168
emacs や vim の文字コード指定方法をソースコードの文字コード指定方法に
一致させると楽だから。

170:デフォルトの名無しさん
09/07/23 10:26:48
>>168
去年からPythonで導入された方法。

171:デフォルトの名無しさん
09/07/23 10:26:53
>>168
ていうか、それRuby1.9からだよな。
Pythonのほうが古い。
てか、釣りだろ。

172:デフォルトの名無しさん
09/07/23 10:31:12
┐(´д`)┌

173:デフォルトの名無しさん
09/07/23 10:58:09
>>170
Python 2.3 からだから、5年くらい前じゃね?

174:デフォルトの名無しさん
09/07/23 11:07:38
乞食のruby厨にレス付けたら負けだよ

175:デフォルトの名無しさん
09/07/23 11:34:23
Rubyを使うとどこかの国のような思考回路になるってことですね。

176:デフォルトの名無しさん
09/07/23 11:37:40
Why do you stay in wrong thread?

177:デフォルトの名無しさん
09/07/23 11:37:49
Ruby書かされると脳みそが痒くなるんですよ。

178:デフォルトの名無しさん
09/07/23 12:04:47
ubuntuのaptでいれたpylabがバージョン古いから
最新版をsetup.py で上書きインストールしてしまうかと思う
しかし、何か不具合おこないか心配
aptで入れたパッケージを消してからpython setup.py install したほうがいいんだろうか

179:デフォルトの名無しさん
09/07/23 12:34:02
>>168
>なぜ、PythonはRubyの
># -*- coding:utf-8 -*-
>をパクってるのでしょうか?文字コード指定は楽なのはわかりますが。

これは恥ずかしい
マネしたのはRubyのほう

180:デフォルトの名無しさん
09/07/23 12:56:30
URLリンク(www.python.jp)

181:デフォルトの名無しさん
09/07/23 23:04:55
Python信者必死杉

いいじゃんパクったならパクったで

182:デフォルトの名無しさん
09/07/23 23:10:16
いつもRuby厨からケンカ売ってくるもんで^^

183:デフォルトの名無しさん
09/07/23 23:11:28
180の先にemacsの形式って書いてあるじゃん...

184:デフォルトの名無しさん
09/07/23 23:26:53
OSSじゃパクりパクられはむしろいいことだぞ?なにいってんだ?

185:デフォルトの名無しさん
09/07/23 23:33:53
出典は明記するべきだよね

186:デフォルトの名無しさん
09/07/24 01:36:05
てか、Emacs時代から無かったかそれ?
Ruby厨はなんでもRuby一番にしたがるから困る

187:デフォルトの名無しさん
09/07/24 07:01:48
Scipyってどうですか?
有限要素法とかあったりしますか?

188:デフォルトの名無しさん
09/07/24 08:26:07
なぜ、PythonはRubyの
変数とか代入とかハッシュとかの概念を
をパクってるのでしょうか?スクリプト作成は楽なのはわかりますが。

189:デフォルトの名無しさん
09/07/24 09:08:08
自演乙

190:デフォルトの名無しさん
09/07/24 10:12:31
現在のファイル名、関数名、行番号をlogするのに
os.path.basename(__file__) , (__name__).replace('__','')+'()' , inspect.getlineno(inspect.currentframe())

spam.py main() 19

こんなことしてるんですが、俺ダサ杉ですよね。華麗な表示方法をご教示くださいですよ。

191:デフォルトの名無しさん
09/07/24 10:32:23
Rubyだともっと簡素にかける

192:デフォルトの名無しさん
09/07/24 10:52:39
>>191
おれもそう感じた

193:デフォルトの名無しさん
09/07/24 11:03:43
>>190
logging モジュール
URLリンク(www.python.jp)

194:デフォルトの名無しさん
09/07/24 11:50:03
$:.unshift "./hoge/hoge/hoge/hoge/hoge/hoge"
require "hage.rb"

見たいなことはPythonで出来ませんか?

195:デフォルトの名無しさん
09/07/24 12:09:12
>>193
なるほど!

%(module)s モジュール名 (ファイル名の名前部分)
%(funcName)s ログ記録の呼び出しを含む関数の名前
%(lineno)d ログ記録の呼び出しが行われたソース行番号 (取得できる場合)

196:デフォルトの名無しさん
09/07/24 14:21:43
>>194
import sys
sys.path.append('./hoge/hoge/hoge')
import hage
でどうでしょう?

197:デフォルトの名無しさん
09/07/24 17:36:51
import os
hogedir = os.path._getfullpathname("./hoge/hoge/hoge/hoge/hoge/hoge")
os.sys.append(hogedir)
import hage

198:デフォルトの名無しさん
09/07/24 18:23:13
>>195
これ3.0に移行してstr.formatを使うようになっても%書式のままでいくのかなぁ
今見たけど変わってなかった

199:デフォルトの名無しさん
09/07/24 19:38:00
    ┌─┐
    │●│
    └─┤
   _   ∩
  ( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘      おっぱい!おっぱい!


200:デフォルトの名無しさん
09/07/25 13:56:37
ftpでファイルをローカルにコピーするのはこれでできたんですが
session.retrbinary('RETR '+file, open(file, 'wb').write)

標準出力にファイルの中身を吐き出すにはどう書けば良いんでしょうか?

201:デフォルトの名無しさん
09/07/25 14:10:11
>>198
どうするか悩みどころだよね。
将来的に % によるフォーマティングは廃止される予定だけど、
デフォルトのFormatterはどうしようも・・・
logging.basicConfig(newstyle_formatter=True)
とかでお手軽に新フォーマッターに移行できないかな・・・

202:デフォルトの名無しさん
09/07/25 15:08:13
>>200
session.retrlines('RETR foo.txt')

203:デフォルトの名無しさん
09/07/25 15:49:11
>>202
できました!
ありがとうございます。

204:デフォルトの名無しさん
09/07/26 00:30:35
         (⌒,,⌒)〜っ
        (⌒,_, ,⌒て ,,_,)
         ! ノ U。`yヘ_,、_ノ !
        し|~〜〜 。 ヘ⌒iヽフ
            |! ゚o 。.゚(・ω|・ ) びーるきたよー
           |! 。o゚ ⊂ ゚ とノ
          |i 。゚ ゚ o .゚|.。|. |
         |i、..゜。。゚ ゚し|'J
.           |,,._二二二_,!
       。゚o

205:デフォルトの名無しさん
09/07/26 07:45:15
a = ["abb","acc","add"]
print map(lambda x:x.replace("a",""), a)

これと同じ処理でもっといい方法ありますか?

206:デフォルトの名無しさん
09/07/26 09:40:07
>>205
lambda + map 使うくらいなら内包表記を使う
print [x.replace('a', '') for x in a]

lambda も map も悪いものではないけど、map+lambdaは推奨されない。

207:デフォルトの名無しさん
09/07/26 09:44:50
>>206
内包表記なんていうのがあるんですね。ありがとうございます。

LISP畑から来てるので map に lambda が推奨されないって変な感じですが
Pythonではあまり使わないようにします。

208:デフォルトの名無しさん
09/07/26 09:50:32
> LISP畑から来てるので map に lambda が推奨されないって変な感じですが

schemeのinternal defineのように関数内で関数定義して名前を与えて使うのがいいみたい


209:デフォルトの名無しさん
09/07/26 10:32:17
>>208
それは >>206 とはちょっと違う話で、少しでも複雑な関数を作るときは
ちゃんと名前を付けましょうねという意味で、lambda が単文しか実行
できなくなってる。

map + lambda が推奨されないのは、
1) 単純に map(lambda x: と書くタイプ数 が for x に削減される
2) map はリストが不要なときも一時リストを生成してしまう。
  (>>206ではリストが必要だったけど、必要ないときはジェネレータ内包が使える)
3) map 内で繰り返し関数呼び出しが発生する。内包だと式の評価なので lambda より速い
4) Lisp脳ではない人間にとっては、 map(lambda x: を読むときに頭の中で分解再構築が必要になる。
  内包表記の方がやりたいことをすっきりと書き下せる。

210:デフォルトの名無しさん
09/07/26 10:37:19
とりあえずIDLEでimport thisしようぜ

211:デフォルトの名無しさん
09/07/26 10:41:13
>>209
頭大丈夫? 自分が何を主張するために何を持ち出しているのか読み直した方がいいよ。


212:デフォルトの名無しさん
09/07/26 11:21:42
>>211
オレは>209の入ってる事がよく分かったが、何か問題でもあるのか?

213:デフォルトの名無しさん
09/07/26 11:44:48
>>209
1)については、そもそもlambdaとか6文字も必要なsyntaxにしたのが間違いだったんだと思う
Haskellみたいに記号使っとけば……
2)はpython3000ではmapもイテレータ作るし

まぁ内包のほうが速いし、そっち使ったほうがいいんだけど

214:デフォルトの名無しさん
09/07/26 13:18:29
-> だったっけ

215:デフォルトの名無しさん
09/07/26 14:19:08
>>213
Pythonにとって、lambdaは便利で強力だけど一つの文が複雑になるし遅いので
あまり推奨できないから、記号を導入してまでみんなに使ってもらおうとは
思ってないんだろう。

216:デフォルトの名無しさん
09/07/26 15:22:31
Pythonの場合、lambdaとインデントの相性が悪いのもあるんじゃない?
でも、他の言語使ってても複雑な式ならどのみち関数定義するから、
そのために何かして欲しいとは思わないけど。

217:デフォルトの名無しさん
09/07/26 15:50:27
f = λ x:a*x+b

これでいくか。

218:デフォルトの名無しさん
09/07/26 16:12:54
Perl
my $f = sub { $_[0]+1 }
$f->(42)

Ruby1.8
f = lambda { |x| x+1 }
f[42]
f.call 42

Ruby1.9
f = ->(x) { x+1 }
f[42]
f.call 42

Python
f = lambda x: x+1
f(42)

Haskell
f = \x -> x+1
f 42

219:デフォルトの名無しさん
09/07/26 16:27:54
どれも、これだ!ってのがないな。

220:デフォルトの名無しさん
09/07/26 16:45:23
というかλ記法って^が変化してλになったんだから
^記号をつかえばいいやんとか思う
ビット演算とまぎらわしいなら$で

221:デフォルトの名無しさん
09/07/26 16:46:13

Python
def f(x): return x+1
f(42)


222:デフォルトの名無しさん
09/07/26 16:47:28
$があるとperlみたいで汚いから嫌だ

223:デフォルトの名無しさん
09/07/26 18:47:47
>>192
いくのかなあ、って変わってないんだからそうに決まってるでしょ。
URLリンク(docs.python.org)

224:デフォルトの名無しさん
09/07/26 19:24:26
逆に>>221でなにが不都合があるんだろ。
名前を考えないといけないから思考が停止しちゃうとか?

225:デフォルトの名無しさん
09/07/26 19:37:45
>>224
内包表記のときはやっぱりラムダがあった方がいい。
名前も、じゃあ全てのfor文に名前を付けるか?みたいな話だと思われ。

それくらい気楽な関数。

226:デフォルトの名無しさん
09/07/26 20:31:36
俺が恵まれていないだけかも知れんが、俺の周りで
関数名つけるの面倒くさいっていうやつは、98%の確率で
ろくなプログラマではない

だいたい、面倒って言ったって、xxx2yyy くらいを考えれば十分だし、
一言で表せないような関数を渡すのは構造的に失敗してると思うし

227:デフォルトの名無しさん
09/07/26 20:38:30
>>226
どっちかというと、かぶらないか失敗っていう心配だな。
Pythonならあんまり気にしなくてもいいんだけどw

228:デフォルトの名無しさん
09/07/26 22:30:21
Python3に対応したpygame出てないのかよ
Python使いからの不満も多いみたいだし、こんなので3は普及するのかねぇ

229:デフォルトの名無しさん
09/07/26 22:33:35
pgreloaded はまだ開発中か

230:デフォルトの名無しさん
09/07/26 23:45:40
>>225
> 内包表記のときはやっぱりラムダがあった方がいい。
ラムダが内包表記で便利な経験が無いんだけど、
ラムダ+内包表記のcoolな例あったら挙げてみて。

231:デフォルトの名無しさん
09/07/27 02:30:48
可読性と内包表記、
やっぱり、[fnc(x) for x in a if check(x)==0]
のようにして、[ ]内はごちゃごちゃしないようにしたほうがイイすよね?

232:デフォルトの名無しさん
09/07/27 08:38:42
www.djangoproject.jp

まだ落ちてるよ
日本人でDjangoをやっているひとたちは
サイトが長時間落ちてもオッケー的な感覚の持ち主なんだろうな

233:デフォルトの名無しさん
09/07/27 12:54:32
東京で停電があったとき以来
復活してないサーバと比べりゃ(ry

234:デフォルトの名無しさん
09/07/27 13:16:15
>>231
読む人が「えーとこれは」と考え込まずに済むように書きたい。
したがってその位に留める(長くなるなら外に出す)という習慣は
良いことだと思われます。

235:デフォルトの名無しさん
09/07/27 13:33:44
def abc():
  hoge=fuga
  hage=moge
  def func(x):
    return x+1
  vwx=[fnc(x) for x in a if check(x)==0]
  return xyz

236:デフォルトの名無しさん
09/07/27 14:24:49
>>235
さすがにそれは内包表記の中で直接 x + 1 した方が良いだろ。

237:デフォルトの名無しさん
09/07/27 14:58:17
「長くなるなら」外に出す、なのに「x+1なのに外に出す」って何だよw

238:デフォルトの名無しさん
09/07/27 15:31:23
Pythonで無料レンタル鯖のいいとこ&有名なとこあります?

239:デフォルトの名無しさん
09/07/27 15:40:56
ドジャンゴが使っているところはやめたほうが良さそうだな。

240:デフォルトの名無しさん
09/07/27 16:20:11
レンタル鯖だと、Pythonはいまだに2.3や2.4ばかりで悲しい。

241:デフォルトの名無しさん
09/07/27 16:21:44
>>238
国内無料鯖は2.4どころか2.3、Python自体ないとかあってかなりの不遇で、自信を持っておすすめできるものはない。色々探してみるといい
ただSSHなどシェルアクセスできれば自力で導入できるとこもある(xreaとか。まあSSH使える無料鯖はほとんどないが…)
低価格鯖なら最近2.6が導入されたさくらがおすすめかな。

242:デフォルトの名無しさん
09/07/27 16:50:15
どうせ他にもいろいろしたくなるから、
まるまる仮想OS使えるところでいいんじゃないの。

243:デフォルトの名無しさん
09/07/27 17:14:51
月3000円も出せばVPS借りられるんだからそのくらい出せよ
それも出せないなら自宅鯖でも作れ
いやならPHPでも使ってろ

244:デフォルトの名無しさん
09/07/27 19:41:54
釣りか?

70 名前: デフォルトの名無しさん Mail: sage 投稿日: 2009/07/27(月) 15:02:19
PHPで無料レンタル鯖のいいとこ&有名なとこあります?

245:デフォルトの名無しさん
09/07/27 22:38:51
Pythonスレの方がレスが多くて
みんなやさしくて好きです

246:デフォルトの名無しさん
09/07/27 22:42:32
>>238
スレリンク(tech板:4-10番)

247:デフォルトの名無しさん
09/07/27 22:43:01
表向きは永久凍土な連中ということで通ってるんだから
そういうこと言っちゃいけません

248:デフォルトの名無しさん
09/07/27 22:47:20
>>238
Google App Engine 2アプ目
スレリンク(php板)

249:デフォルトの名無しさん
09/07/27 22:51:55
GAE はないわなぁw

250:デフォルトの名無しさん
09/07/27 23:37:18
@pagesとか言うところが2.5.1みたいだ

251:デフォルトの名無しさん
09/07/27 23:42:47
実際に sys.version 出力させてみたら
2.5.2 だったよ。

252:デフォルトの名無しさん
09/07/28 07:48:58
関数の中から実引数の数を調べることはできますか。

def f(a, b=1, c=None):
 print (a, b, c)

とあって、f(0) という呼び出し方をした時に、f() の中で実引数の数がいくつなのかを調べる方法があれば教えてください。

253:デフォルトの名無しさん
09/07/28 08:07:59
バイトコード調べれば何とか…
じゃなくて
def f(*args):
    defaults = (None, 1, None, )
    len(args) で調べる
    args = tuple(args) + defaults[len(args):]
とかした方がいい

254:デフォルトの名無しさん
09/07/28 08:59:52
>>252
URLリンク(www.python.jp)

標準モジュールも知らない低レベルプログラマは
今すぐPythonやめてPHPに戻れよ

255:デフォルトの名無しさん
09/07/28 09:04:44
found = None
for x in L:
 if something(x) == expected:
  found = x
  break
という処理をもっと簡潔にかけますか。
Ruby なら
found = L.find {|x| something(x) == expected }
という処理です。
内包表記で頑張ろうと思ったのですがbreakの仕方がわからず断念しました。
#Rubyは説明のために出したのであり、PythonとRubyとの比較をするつもりではないのでご了承下さい。

256:デフォルトの名無しさん
09/07/28 09:54:57
[i for i in xrange(10) if i >= 7][0]

257:デフォルトの名無しさん
09/07/28 10:15:34
>256 だといったん完全リストにしちゃうから
元が xrange(一億) とかだった場合にすげー重くならない?

イテレータ使ってても,リスト内包表記で一旦
リスト化しちゃうと遅延評価はされなくなっちゃうよね?

258:デフォルトの名無しさん
09/07/28 11:37:56
>>239
なんで?

おすすめは
zope
web.py
なの?


259:デフォルトの名無しさん
09/07/28 12:00:59
(i for i in xrange(10) if i >= 7).next()

260:デフォルトの名無しさん
09/07/28 12:12:43
>>259
スゲー
面白い書き方だなw

261:デフォルトの名無しさん
09/07/28 12:54:59
>>254
牛乳飲めよ

262:デフォルトの名無しさん
09/07/28 13:12:03
>>261
PHPに戻れよドカタ

263:デフォルトの名無しさん
09/07/28 13:18:20
>>258
Django自体は問題ナッシング
むしろすばらしい
問題は日本のヤツら

264:デフォルトの名無しさん
09/07/28 14:54:13
Djangoの中に遅延評価関数とか入ってるからwebやらなくても使ってみたい気はする

265:デフォルトの名無しさん
09/07/28 15:14:13
Formがもうちょっとイカしてくれてればなぁ
っていうか web 板の django スレが寂しすぎる件

266:デフォルトの名無しさん
09/07/28 18:01:09
Djangoのutilsには,便利なクラスや関数がたくさんあるので
utilsだけで使うことが良くあるよ

267:デフォルトの名無しさん
09/07/28 22:28:19
>>259
ありがとうございます!
でもPython3で動かない。。。。
Python2と3の両方で動く書き方はありませんか?
聞いてばかりですみません。

268:デフォルトの名無しさん
09/07/28 22:47:03
>>267
python3の場合

(x for x in range(10) if x>=7).__next__()

269:デフォルトの名無しさん
09/07/28 23:10:51
>>268
next(x for x in range(10) if x>=7)
だろ

270:デフォルトの名無しさん
09/07/28 23:18:40
ごめん

271:デフォルトの名無しさん
09/07/29 01:56:49
Don't mind.

272:デフォルトの名無しさん
09/07/29 06:29:23
>>255
found変数をどう使いたいのか判らないけど、Pythonのfor文には
else 節があるので、後で if found is None: return とかするのであれば
その for 文を
for found in L:
  if something(found) == expected:
    break;
else:
  return
みたいにはできるよ。

あと、 >>269 みたいなやり方をするなら、
found = next(x for x in L if somethong(x) == expected, None)
って二つ目に default を入れないと、見つからなかったときに next が
StopIteration 例外を出すよ。

273:デフォルトの名無しさん
09/07/29 06:34:35
sunkus

274:デフォルトの名無しさん
09/07/29 09:54:00
>>252 f() の中で実引数の数がいくつなのかを調べる方法があれば教えてください。

無理。デフォルト引数処理は関数呼び出しの直前に行われるから、f(..) の中ではデフォルト引数値が使われたか否かは判別できない。253 さんの示したように、関数の呼び出し方を変えて自分で調べるしかない。

ここらの Python の内部処理を知りたかったら URLリンク(www.nasuinfo.or.jp) を読め。少しマニアックだが。


275:デフォルトの名無しさん
09/07/29 11:49:53
class foo:
  def __init__(self):
    self.bar = range(5)
  def __call__(self):
    self.bar.reverse()
class hoge:
  def __init__(self):
    self.hage = foo()
    self.foobar = self.hage.bar
    self.hage()
cls = hoge()
print cls.foobar == cls.hage.bar


.foobarには、.hage.barの値をコピーしているだけですか?
それともポインタ的なものが入ってるんでしょうか?

276:デフォルトの名無しさん
09/07/29 12:10:48
barの型次第
上の場合はリストだから参照になるね

277:252
09/07/30 07:00:23
>>254
>標準モジュールも知らない低レベルプログラマは
>今すぐPythonやめてPHPに戻れよ

みなさんの怒りを買うような質問をしてしまい、申し訳ありませでした。


278:252の母
09/07/30 10:17:41
息子がご迷惑をおかけして申し訳ありませんでした。

279:252の父
09/07/30 11:06:55
息子にはPythonをあきらめてPHPに戻るようによく言い聞かせました

280:デフォルトの名無しさん
09/07/30 13:21:43
いやいや、誰もが最初はそんなもんですから。

281:デフォルトの名無しさん
09/07/30 13:35:18
話がまとまったところで、あとは若い人たちに任せるとしましょう。

282:デフォルトの名無しさん
09/07/30 15:24:22
おまえら表面は凍ってるのに中身は生暖かいのな。

283:デフォルトの名無しさん
09/07/30 23:55:49
今からpython勉強するなら、2.6.2と3.01どっちがおすすめ?

284:デフォルトの名無しさん
09/07/31 00:15:39
仕事で必要なら、必要な方なのは置いといて。
私は、stringが完全Unicodeになってる3をすすめます。

285:デフォルトの名無しさん
09/07/31 00:50:07
初めてPYTHONをやり、最初、2.4入れて
setが使えないので、1ヶ月で2.5に移行
その後、文字化けが面倒なので2ヶ月で3に移行
最初から3にすれば良かった
てかemacsで文字化けする
しかもWindowsのエラーで、プロンプトからemacs起動出来ないから直し方わかんね
結局UTF-8使ってない

286:デフォルトの名無しさん
09/07/31 00:58:21
なるほど、こういう人たちがいるがために今の状況があるわけか

287:デフォルトの名無しさん
09/07/31 01:07:20
ライブラリが全然ついて来ないから
未だに 2.x だけどな。

288:デフォルトの名無しさん
09/07/31 01:13:02
3.1は失敗作だったねえ。Python5.0に期待。
対するRubyは1.9.2でだいぶ動作がマシになった。
完全に抜かれちゃったなあ

289:デフォルトの名無しさん
09/07/31 06:29:42
pass

290:283
09/07/31 07:11:16
ありがとうございました
参考にします

291:デフォルトの名無しさん
09/07/31 11:55:24
>>283
用途次第だけど2.5がライブラリ豊富で一番良いよ

292:デフォルトの名無しさん
09/07/31 12:43:59
2.6 でなく 2.5 を勧める理由が意味不明

293:デフォルトの名無しさん
09/07/31 12:45:54

2.5 でなく 2.6 を勧める理由が意味不明


294:デフォルトの名無しさん
09/07/31 13:42:38
ダンジョーも動かない2.6を勧める理由が意味不明

295:デフォルトの名無しさん
09/07/31 14:29:15
2.5.2で間違いない

296:デフォルトの名無しさん
09/07/31 17:29:14
>>294
サーバが止まりまくりのDjangoなんて使えたって意味ないだろ

297:デフォルトの名無しさん
09/07/31 18:04:01
ジャンゴが止まりまくるってどんな環境よ

298:デフォルトの名無しさん
09/07/31 18:23:07
デベロップ用のサーバで公開したのかなw

299:デフォルトの名無しさん
09/07/31 22:28:32
URLリンク(djangoproject.jp)

どうして止まるんだろう...。

300:デフォルトの名無しさん
09/07/31 22:34:20
>>299
デベロップ用のサーバで公開したのかなw

301:デフォルトの名無しさん
09/07/31 22:46:12
マルチコアのCPUで並列実行させたいんですが、
Pythonのthreadやthreadingモジュールだと
実際には同時平行で複数のスレッドが実行されないって本当ですか?
並列化するのにお勧めのモジュールってありませんか?


302:デフォルトの名無しさん
09/07/31 23:03:13
>>301
Wikipedia項目リンク
URLリンク(docs.python.org)

303:デフォルトの名無しさん
09/08/01 01:35:18
>>302
すみません、わかりません。答えを教えてください。

304:デフォルトの名無しさん
09/08/01 02:47:30
>>303
Wikipedia項目リンク

305:デフォルトの名無しさん
09/08/01 06:49:35
GILが問題になるようなプログラムにPythonは向いてないよ

306:デフォルトの名無しさん
09/08/01 07:33:59
>>301
multiprocessing モジュールがお勧め。並列性のある問題を解くのに使えば
複数プロセスが同時に並列実行されてちゃんと台数効果が出ます。

307:デフォルトの名無しさん
09/08/01 07:42:54
>>299
まだ止まってんのかwwwwww

308:デフォルトの名無しさん
09/08/01 09:01:10
僕たちサーバ管理よりイベントが大好きなんです
アッーー!

309:デフォルトの名無しさん
09/08/01 10:37:07
>>302>>306
ありがとうございます。
GILがあって今一つ並列実行しにくいのでプロセスをフォークするんですね。
スレッドのタスクが重ければフォークのコストは大したことないですが、
リソースの共有が大変になるんでしょうか。
Core i7で8コアもあるのでそろそろ並列化をまじめに考えなくちゃと思っているので、とりあえずいじってみます。
それから>>303は私じゃないです。


310:デフォルトの名無しさん
09/08/01 11:04:31
ドジャンゴもマルチプロセス使えば落ちないんじゃねえのwwwwww

311:デフォルトの名無しさん
09/08/01 12:08:53
件のページはdjangoじゃなくてサーバ自体が落ちてんだろ
煽ってるバカ何なの

312:デフォルトの名無しさん
09/08/01 13:42:23
Djangoがサーバを落としたの???
なんたるマルウエア!!

313:デフォルトの名無しさん
09/08/01 14:34:43
またruby厨の荒らしっすか

314:デフォルトの名無しさん
09/08/01 14:47:37
>>311
>件のページはdjangoじゃなくてサーバ自体が落ちてんだろ

Apacheは応答してるっぽいから、サーバ自体が落ちているという事はないのでは?
Dangoの人は適当で信用ならない


315:デフォルトの名無しさん
09/08/01 16:28:33
djangoはジャンゴって読むんじゃないの?
昔の有名なギタリストにいるよね

316:デフォルトの名無しさん
09/08/01 16:35:36
アンガールズ「ハイ! ジャンゴジャンゴジャンゴジャンゴ」

317:デフォルトの名無しさん
09/08/01 17:30:33
そう、djangoは"ジャンゴ"と読みます
一方日本でdjangoを使っている人は"ドジャンゴ"や"ダンジョー"と呼ばれています

318:デフォルトの名無しさん
09/08/01 19:33:53
そう、djangoは"ジャンゴ"と読みます
一方日本でdjangoを使っている人は"ドジャンゴ"や"ダンジョー"とruby厨は呼びます

319:デフォルトの名無しさん
09/08/02 02:03:59
日本語でおk

320:デフォルトの名無しさん
09/08/02 02:11:46
民間人に送られる最高の爵位・ダショー。

ちなみに我らがPython神のGuido van Rossumは、BDFLと呼ばれる。

321:デフォルトの名無しさん
09/08/02 03:53:30
Djangoは1.1出てたのか・・・

322:デフォルトの名無しさん
09/08/02 08:35:11
318はイタいが、320はもっとイタいな(wwWwwWwwwwWwwWWww

323:デフォルトの名無しさん
09/08/02 10:52:39
ジャンゴといったらジャンゴ・フェット。

324:デフォルトの名無しさん
09/08/02 13:03:55
pass

325:デフォルトの名無しさん
09/08/02 16:25:09
ジャンゴジャンジャンゴジャンゴ

326:デフォルトの名無しさん
09/08/03 04:07:02
pat = re.compile(r'.*¥.html$')
としたときに、patからもとの文字列('.*¥¥.html$')を取り出すことはできますか。
よろしくおねがいします。

327:デフォルトの名無しさん
09/08/03 04:14:09
pat.pattern

328:デフォルトの名無しさん
09/08/03 04:47:12
>>327
ありがとうございました。
ところで dir(pat) としても pattern というのは出てこないのですが、どういうことでしょうか。

329:デフォルトの名無しさん
09/08/03 05:12:00
URLリンク(djangoproject.jp)

復活したみたい

330:デフォルトの名無しさん
09/08/03 08:26:53
>>328
(´・ω・`)知らんがな

331:デフォルトの名無しさん
09/08/03 09:44:20
>>329
(´・ω・`)知らんがな

332:デフォルトの名無しさん
09/08/03 10:48:23
静的htmlに必要最低限のcgiだけつけたいのだけど
どのフレームワークがお勧めよ

333:デフォルトの名無しさん
09/08/03 14:22:49
CGIHTTPServer

334:デフォルトの名無しさん
09/08/03 14:23:59
>>332
民間人に送られる最高の爵位・ダショー。

335:デフォルトの名無しさん
09/08/03 15:25:06
ダショー >>> ダンジョー >>> ドジャンゴの順で偉いのだが
ダショーレベルでも鯖運営に支障をきたすくらいの低スキル

336:デフォルトの名無しさん
09/08/03 18:29:06
意味わからん

ジャンゴの話題になるとどこからともなく湧いてくるな

337:デフォルトの名無しさん
09/08/03 19:31:03
>>328
不思議だね。

338:デフォルトの名無しさん
09/08/03 20:04:54
>>328
help(re)
でも出てこない

339:デフォルトの名無しさん
09/08/03 20:09:03
>>328
URLリンク(www.python.jp)
ここの一番下には書いてある

340:デフォルトの名無しさん
09/08/03 21:26:11
_sre.cのpattern_getattrが処理してるみたい

341:デフォルトの名無しさん
09/08/03 22:13:09
URLリンク(www.kent-web.com)
コメントを取得するコードを参考にして、拡張子を.cgiで実行しましたがスクリプトエラーになってしまいます。
どこが問題でしょうか?

342:デフォルトの名無しさん
09/08/03 22:19:23
>>341
人に尋ねる前に自分でデバッグしてご覧。
Webにアップするスクリプトも最初はローカルで動かして様子を見るものなんだよ。

343:デフォルトの名無しさん
09/08/03 22:22:02
>>342
ありがとうございます。
出直してきます。

344:デフォルトの名無しさん
09/08/03 22:24:23
>>341
そのコードのコピー元と思われるブログには続きがある
URLリンク(d.hatena.ne.jp)

345:デフォルトの名無しさん
09/08/05 18:45:37
def hello():
 """コメント"""
 print "hello"

Python では上のように関数定義の最初の文字列リテラルが関数のドキュメントになるそうですが、
これの呼び名ってありますか。
「関数コメント」とか「関数ドキュメント」で通じるでしょうか。

346:デフォルトの名無しさん
09/08/05 18:57:12
>>345
ほい。
URLリンク(www.python.jp)

347:デフォルトの名無しさん
09/08/05 18:59:31
ドキュメンテーション文字列

348:デフォルトの名無しさん
09/08/05 19:14:09
AndroidでPython使えるんだね。
一気にGoogleケータイ欲しくなった・・・
三月に変えたばかりなんだが。

349:デフォルトの名無しさん
09/08/06 03:39:03
>>348
ほほう。といっても何に使えばいいのか思い付かない俺ww

350:デフォルトの名無しさん
09/08/06 15:06:43
Launchpadがdojangoじゃなくてzopeなのは何か理由があるの?

351:デフォルトの名無しさん
09/08/07 13:19:04
作り始めた時期の問題じゃないかな。
Launchpad作り始めた時は、まだDjangoがマイナーだったとか。想像だけど。

352:デフォルトの名無しさん
09/08/08 08:11:08
www.python.org つながんないんだけど、なんかあった?
Python ダウンロードしたいんだけど、どこかミラーない?
ftp.python.jp は 2.5 までしかないみたいだし。

353:デフォルトの名無しさん
09/08/08 09:00:56
>>352
URLリンク(sunsite.informatik.rwth-aachen.de)
とかどう?
URLリンク(www.freebsd.org)
で見つけた。

354:352
09/08/08 09:47:13
>>353
助かりました。ありがとうございます。

355:デフォルトの名無しさん
09/08/08 19:41:22
BeautifulSoupって死んだんか・・・


356:デフォルトの名無しさん
09/08/08 21:44:16
おれも>>352とまったく同じ状況でした。
><>353 感謝ですっ

357:353
09/08/08 22:44:09
>>354
>>356
いえいえ。感謝はミラーを提供してくれている方たちにどうぞ。

358:デフォルトの名無しさん
09/08/09 01:40:12
>>355
lxmlでどうにか

359:デフォルトの名無しさん
09/08/09 02:03:21
>>355
何の話だw

360:デフォルトの名無しさん
09/08/09 14:53:36
>>359
知らないのか?
Python3.0でSGMLParserがなくなったんでBeautifulSoup3.1.0以降では
SGMLParserの代わりにHTMLParserを使うようになったんで、
これまでパースできたちょっと崩れたHTMLがパースできなくなってる。
開発者は、もうツマンネーからこれ以上の対応をする気はねーよ、らしい。

URLリンク(www.crummy.com)


361:デフォルトの名無しさん
09/08/09 15:20:46
最後のほう生々しいこと書いてあるね

BS使ってるモジュールがどれほどあるのか知らないけど
Py3.0への移行の支障になったりして

362:デフォルトの名無しさん
09/08/09 15:47:52
3.Xへの移行は年単位でかかるだろ…
Zopeなんてどんだけかかるんだか

363:デフォルトの名無しさん
09/08/09 17:07:26
Pythonで万人に分かりやすいスマートなコメント文を書きたいんだが、どう書いたらいいだろうか。javadocのような指標みたいなの無い?

364:デフォルトの名無しさん
09/08/09 17:54:18
>>363
PEP 257

365:デフォルトの名無しさん
09/08/09 18:11:09
doxygenが喰えるように書く

366:デフォルトの名無しさん
09/08/09 18:40:44
ううむ、BSは巷のちょっと
不作法なHTMLをパースさせるのに
役立っていたんだがのう

elemental treeって今のバージョンは
その辺耐性あるのかしら。

367:デフォルトの名無しさん
09/08/09 19:13:04
ElementTreeはXMLパーサですよ

368:デフォルトの名無しさん
09/08/10 07:49:28
>ちょっと崩れたHTMLがパースできなく

それはツマンネーな

369:デフォルトの名無しさん
09/08/10 09:26:40
まあ、HTMLのパーザなんて、泥縄の塊だしな。

370:デフォルトの名無しさん
09/08/10 09:50:49
スレリンク(tech板)
ここでopy2on(別名おっぱい)というのをやってます

371:デフォルトの名無しさん
09/08/11 00:38:42
Pythonのお勉強をしようと思って
2chに書き込むスクリプトをPython 3.0.1(Windowsです)で書いてみたのですが
urllib.parse.urlencode()でShift-JISの文字列を
期待通りにURLエンコード(パーセントエンコーディング)できません。
{"s":"あ"}をurlencode()して"s=%82%A0"がほしいのですが
普通にやると下のようになります。。
何か良い解決策はないでしょうか?

>>> import urllib.parse
>>> s = "あ".encode("shift-jis")
>>> print(urllib.parse.urlencode({"s":s}))
s=b%27%5Cx82%5Cxa0%27

いろいろ試してみたところ、quote()やquote_plus()では
期待通りの値(%82%A0)が返ってきましたが
urlencode()は中でdict内のstr以外の値にstr()をあててquote_plus()しているので
期待通りの値が返ってこないことがわかりました。
…2.6とかにしたほうがいいでしょうか><

372:デフォルトの名無しさん
09/08/11 00:54:04
なんかバグっぽいな・・・
報告されてた URLリンク(bugs.python.org)

373:371
09/08/11 02:11:52
>>372
ありがとうございます!バグですか。。
3.0.1での解決策って
必要なところだけquote_plus()して自分で文字列連結するくらいですかね?

374:デフォルトの名無しさん
09/08/11 04:25:55
ですね



375:デフォルトの名無しさん
09/08/11 06:32:45
import _socket
from _socket import *
(socket.py 45)

こういうふうに一つのモジュールで二つの方法でインポートするのは
どういう意図があってのことなんでしょうか?


376:デフォルトの名無しさん
09/08/11 06:56:37
_socket の名前空間をそのまま使いたいとき
普通はこういうこと考えなくていいよ

377:デフォルトの名無しさん
09/08/11 08:17:34
初心者なら、from は使うべきではないと思う俺だぜ

自分が何やっているのかわからなくなるぜ

378:デフォルトの名無しさん
09/08/11 09:53:52
言いたい事は理解できるが、無闇に記述量を増やすとLL使う意義そのものが怪しくならんか?

379:デフォルトの名無しさん
09/08/11 10:06:27
とはいえ名前空間の中がごちゃごちゃしてると後で困る
from/importの使い分けはいざ説明しようとなると面倒だな…

380:デフォルトの名無しさん
09/08/11 10:19:43
>>378
記述を減らす分には置換を掛ければ一発さ。
でも記述をフル識別子化するのはそうもいかない。

381:デフォルトの名無しさん
09/08/11 12:30:41
>379
それもわかる。記述量・速度と可読性のトレードオフなんだよね。

>380
タイプ量が多い事自体がまず問題じゃね?

IDEの入力支援がある前提なら、問答無用でfrom禁止でも良いと思うけど。


382:371
09/08/11 12:42:58
>>374
ですかー
自分でquote_plus()してやるようにします。
ありがとうございました!


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

4179日前に更新/189 KB
担当:undef