Pythonのお勉強 Part3 ..
[2ch|▼Menu]
48:デフォルトの名無しさん
09/07/09 09:25:39
初めてのPythonって評判悪いのか。
勉強用に読んだけどそんなに悪いとは思わなかったけどなあ。
10日で覚えるとかはちょっと。。


49:デフォルトの名無しさん
09/07/09 09:34:15
URLリンク(www.amazon.com)

これ読んだ人いる?

50:デフォルトの名無しさん
09/07/09 09:35:12
鈍器としては最高の出来>初めての
10日で覚える〜は鈍器としてすらありえない。

51:デフォルトの名無しさん
09/07/09 09:44:21
>>48
はじめてのPython と初めてのPython は別のもの


52:デフォルトの名無しさん
09/07/09 09:44:46
The Quick Python Book 第2版待ち

53:デフォルトの名無しさん
09/07/09 12:10:37
「Whats3onLP さらに新しいバージョンのPythonについて 」
URLリンク(python.is-a-geek.org)
を読みたいんだけど、Wikiが改竄されている。(´・ω・`)

54:デフォルトの名無しさん
09/07/09 16:53:53
Christian Tismerがpsycoプロジェクトを復活させるらしい

55:デフォルトの名無しさん
09/07/09 18:21:40
Psyco x64を切に希望します

56:デフォルトの名無しさん
09/07/09 18:28:32
PyPyまだー?

57:デフォルトの名無しさん
09/07/09 19:14:44
はじめてのPyPy

58:デフォルトの名無しさん
09/07/09 20:38:15
PyPyクックブック

59:デフォルトの名無しさん
09/07/09 20:53:05
PyPy待てど暮らせど

60:デフォルトの名無しさん
09/07/09 21:06:37
                  ゙'.     ,ト `i、  `i、    .、″
                    |    .,.:/""  ゙‐,. `    /
                 `  .,-''ヽ"`    ヽ,,,、   !
                    、,、‐'゙l‐、      .丿 : ':、
                   、/ヽヽ‐ヽ、;,,,,,,,,,-.ッ:''`  .,"-、
                  ,r"ツぃ丶  ``````   ../  `i、
              ,.イ:、ヽ/ー`-、-ヽヽヽ、−´    .l゙`-、
             _,,l゙-:ヽ,;、、             、、丶  ゙i、,,、
            ,<_ l_ヽ冫`'`-、;,,,、、、、.............,,,,、.-`":    │ `i、
          、、::|、、、ヽ,、、.    ```: : : ```      、.、'`  .|丶、
         .l","ヽ、,"、,"'、ぃ、、,、、、、.、、、.、、、_、.,,.ヽ´    l゙  ゙).._
        ,、':゙l:、、`:ヽ、`:、  : `"```¬——'''"`゙^`     : ..、丶  .l゙ `ヽ
       ,i´.、ヽ".、".、"'ヽヽ;,:、........、           、、...,,,、−‘`   、‐   |゙゙:‐,
      ,.-l,i´.、".`ヽ,,,.".`   `゙゙'"`'-ー"``"``r-ー`'":      _.‐′  丿  ,!
     j".、'ヽ,".、".、"`''`ー、._、、、           、._,、..-‐:'''′   .、,:"  丿
     ゙l,"`"`''ヽヽ"`"`  ```゙'''"ヽ∠、、、、ぃ-`''''": `      、._./`  ._/`
      `'i`ヽヽヽ`''ーi、、、: :                   、.,-‐'`   、/`
       ``ヽン'`"`  : `~``—ヽ::,,,,,,,,,,.....................,,,,.ー'``^    ,、‐'"`
          `"'゙—-、,,,,..、、               : ..,、ー'"'`
               : `‘"`—---------‐ヽ``"''''''""



61:デフォルトの名無しさん
09/07/09 22:44:25
PyPyワロスワロス

62:デフォルトの名無しさん
09/07/10 03:26:27
m = re.match("(.*?) = (.*?)",text)
foo[m.group(1)] = m.group(2)

これを m を介さずに一行で書くにはどうすれば良いですか?

63:デフォルトの名無しさん
09/07/10 03:31:12
(lambda m: foo.__setitem__(m.group(1), m.group(2)))(re.match("(.*?) = (.*?)",text))

64:デフォルトの名無しさん
09/07/10 03:32:19
foo.__setitem__(*re.match("(.*?) = (.*)", text).groups())
難読化して何が楽しいんだか

65:デフォルトの名無しさん
09/07/10 03:37:35
foo[m.group(2)] = m.group(1)
だったときでも使える?

66:デフォルトの名無しさん
09/07/10 03:38:58
そんなの関係ねぇし

67:デフォルトの名無しさん
09/07/10 03:44:26
s = re.match("(.*?) = (.*?)",text); foo[s.group(1)] = s.group(2)

68:62
09/07/10 05:36:03
きれい書く方法ないんですね。あきらめます。

69:デフォルトの名無しさん
09/07/10 09:14:40
そもそも m が None (ぬるぽ) のときはどうするつもりなんだ
exception 書くと結局数行付け足す羽目になるぜ

70:デフォルトの名無しさん
09/07/10 10:26:05
まぁ、質問の答えとしては、だいたいそもそもの構造自体が悪いってことはあるね。
質問に正確に答えるなら、その方法を答えるのが正解だけど。

71:デフォルトの名無しさん
09/07/10 11:45:17
そういえば昔のスレが荒れる基本パターンに
デザインパターンがあったけど、こんな記事があるみたいです:

Design Patterns in Real Python Projects
by Michael Schneider
URLリンク(pymag.phparch.com)


72:デフォルトの名無しさん
09/07/10 23:33:21
>>71
ふむ・・・名前からしてドイツ人?

73:デフォルトの名無しさん
09/07/11 01:28:38
>>71も大切だけど、
Pythonのバイブルを読むべきだと思いますよ。
URLリンク(www.amazon.co.jp)

74:デフォルトの名無しさん
09/07/11 01:33:51
まずチュートリアルだべ

75:デフォルトの名無しさん
09/07/11 01:42:23
>>73
宣伝乙

76:75
09/07/11 01:43:58
>>73
明日書店行って立ち見してくるわ

77:デフォルトの名無しさん
09/07/11 03:29:09
見るだけな。絶対買わない。

78:デフォルトの名無しさん
09/07/11 04:10:38
うちに余ってるからあげようか?

79:デフォルトの名無しさん
09/07/11 21:19:42
PythonTシャツを試作してみてるんだけど、
買うとしたらどのくらいの人間が買う?ということが気になっている。

80:デフォルトの名無しさん
09/07/11 21:30:33
URLリンク(t-shirts.cafepress.com)

81:デフォルトの名無しさん
09/07/11 21:39:38
URLリンク(www.python.org)

82:デフォルトの名無しさん
09/07/12 07:41:09
標準出力を変数に代入することは出来ますか?

変数に代入するときは標準出力に吐き出されず、
以降は print などで普通に出力される動作を期待しています。

83:デフォルトの名無しさん
09/07/12 08:09:59
できますよ

84:デフォルトの名無しさん
09/07/12 09:31:52
どうすればできるでしょうか?

85:デフォルトの名無しさん
09/07/12 09:59:08
回答まだでしょうか?

86:デフォルトの名無しさん
09/07/12 13:26:10
from cStringIO import StringIO
stdout = sys.stdout
sys.stdout = StringIO()
print "test"
test = sys.stdout.getvalue()
sys.stdout.close()
sys.stdout = stdout

これで、できました。失礼します。
あと、>>85は自分ではありません。

87:デフォルトの名無しさん
09/07/13 11:27:36
>かなり厳しいstrictな規格
strictって”厳しい”って意味ですよね
意味が重複してますよね

88:デフォルトの名無しさん
09/07/13 12:56:10
人に使わせるプログラムをPythonで書いて,とりあえずコンソールプログラムとしては完成したので,
今度はそれをEasyGuiでGUI化しようとしてるんだけど,コンソール(コマンドプロンプト)ウィンドウが
邪魔くさいので非表示にしたいんです。

ググってもわからなかったので,どうすればいいのかエラい人教えてください。

環境はWindows XPでPython 2.6.2動かしてます。
起動は.pyファイルをダブルクリックするようにしてるので,コマンドプロンプトを開いて
起動しているわけではありません。

89:デフォルトの名無しさん
09/07/13 13:03:27
>>88
拡張子を .pyw にする。
もしくは ctypes で FreeConsole() を呼ぶ。

90:88
09/07/13 13:10:58
>>89

> 拡張子を .pyw にする。

うわー,そんなんでよかったのか!

> もしくは ctypes で FreeConsole() を呼ぶ。

こっちも調べてみます。
速攻レスサンクス。

91:デフォルトの名無しさん
09/07/13 17:38:58
俺も知らんかった、.pywってそういう意味だったのか・・・


92:デフォルトの名無しさん
09/07/13 17:40:26
でも.pywはpythonw.exeに関連付けされてるだけだよ

93:88
09/07/13 18:50:03
うん。後から気がついた。

94:デフォルトの名無しさん
09/07/13 22:29:01
tyowww

95:デフォルトの名無しさん
09/07/14 16:26:04
import hashlib とすると、
>>> import hashlib
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.5/hashlib.py", line 133, in <module>
md5 = __get_builtin_constructor('md5')
File "/usr/lib/python2.5/hashlib.py", line 60, in __get_builtin_constructor
import _md5
ImportError: No module named _md5

と怒られます。解決策を教えてください。
cygwinでpython2.5.2です。


96:デフォルトの名無しさん
09/07/14 17:03:41
>>95
エラーを再現できない。

/usr/lib/python2.5/lib-dynload/_hashlib.dll
があるかどうか確かめてくれ。

97:95
09/07/14 17:15:55
>>96
お返事ありがとうございます。
存在します。


98:95
09/07/14 17:23:09

URLリンク(code.krypto.org)
から、hashlibのソースコードを持ってきてビルドしようとすると

$ python setup.py build
running build
running build_py
running build_ext
building '_sha' extension
gcc -shared -Wl,--enable-auto-image-base build/temp.cygwin-1.5.25-i686-2.5/Modul
es/shamodule.o -L. -lpython2.5 -o build/lib.cygwin-1.5.25-i686-2.5/_sha.dll
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../i686-pc-cygwin/bin/ld: cannot find
-lpython2.5
collect2: ld returned 1 exit status
error: command 'gcc' failed with exit status 1

というエラーでできないのですが、関係ありますか?

99:デフォルトの名無しさん
09/07/14 17:25:01
wget URLリンク(code.krypto.org)
setup.pyを編集
#   113     # The _hashlib module wraps optimized implementations
#   114     # of hash functions from the OpenSSL library.
#   115     exts.append( Extension('_hashlib', ['_hashopenssl.c'],
#   116                include_dirs = [ ssl_inc_dir ],
#   117                library_dirs = [ os.path.dirname(ssl_lib) ],
#   118                libraries = osNameLibsMap[os.name]) )
#   119     exts.append( Extension('_sha', ['shamodule.c']) )         
#   120     exts.append( Extension('_md5',                  
#   121           sources = ['md5module.c', 'md5.c'],
#   122           depends = ['md5.h']) )

URLリンク(inforno.net)

100:デフォルトの名無しさん
09/07/15 13:32:46

cpythonで作ったメインのプログラムからJythonで作ったモジュールを呼び出すことは可能ですか?

101:デフォルトの名無しさん
09/07/15 22:38:57
Unladen Swallowの更新が来たな

102:デフォルトの名無しさん
09/07/16 17:56:39
Neatxって凄い名前だな・・・

103:デフォルトの名無しさん
09/07/17 16:09:59
psyco v2の最初のリリースがきた
URLリンク(codespeak.net)

104:デフォルトの名無しさん
09/07/17 23:07:58
Psyco is not supporting 64 bit, yet. But it is well being considered.
期待して良いのか?

105:デフォルトの名無しさん
09/07/17 23:29:42
yahooの知恵袋っていつから珍回答で質問者をからかう場所になってんだ

106:デフォルトの名無しさん
09/07/17 23:31:34
なんでいきなりそんな話が出てくるの?

107:デフォルトの名無しさん
09/07/18 02:21:29
うー!2chには誤爆という文化があるのですよ!はうぅー!

108:デフォルトの名無しさん
09/07/18 14:19:57
↑これ、書き込んでんの30過ぎのおっさんだよ

109:デフォルトの名無しさん
09/07/18 15:05:03
ようつべでモンティパイソン見たら、結構酷いネタ多いなw

110:デフォルトの名無しさん
09/07/18 17:19:48
>>108
40過ぎだよ。

111:デフォルトの名無しさん
09/07/18 17:35:32
しかし、心はヤング

112:デフォルトの名無しさん
09/07/19 01:48:56
40過ぎてもせんずりしますか

113:デフォルトの名無しさん
09/07/19 03:15:30
はうぅー!Python 3.1で遊ぶのですぅ!うーうー!

114:デフォルトの名無しさん
09/07/19 15:41:25
>>112
俺らにゃpython.comがある

115:デフォルトの名無しさん
09/07/20 02:50:13
VPythonってなんかすごいですお
俺のようなVTKとかインストールすら出来ずに挫折した人にはナイスであります。

116:デフォルトの名無しさん
09/07/20 02:58:00
ビタミンのVか

117:デフォルトの名無しさん
09/07/20 03:21:32
D:にインスコすると死ねる

118:デフォルトの名無しさん
09/07/20 12:51:15
なんだか頭の悪そうな書き込みが豊満してますね

119:デフォルトの名無しさん
09/07/20 12:52:57
いつものruby厨が荒らしてるんだろう

120:デフォルトの名無しさん
09/07/20 15:48:56
VPythonマジ強力っていうか馬鹿な俺でも使えるのでした。
ローレンツアトラクタを書かせたら、20行くらいでくるくる回って感動ww

121:デフォルトの名無しさん
09/07/20 16:16:11
データが文字列であることを確認するには
isinstance(obj, (str, unicode)) # 2.x
isinstance(obj, (str, bytes)) # 3.x
となりますが、ひとつのファイルで2と3の両方をサポートしたい場合はどうかけばいいでしょうか。

122:デフォルトの名無しさん
09/07/20 16:24:20
前スレより転載

URLリンク(docs.python.org)
>>It is not recommended to try to write source code that runs unchanged under both Python 2.6 and 3.0;

sys.version_infoを見れば一応はできる

123:デフォルトの名無しさん
09/07/20 16:27:48
両方をサポートしたいなんて考えをやめるべきだ!

124:デフォルトの名無しさん
09/07/20 17:56:56
>>123
え、なんでだめなんですか?

125:デフォルトの名無しさん
09/07/20 18:03:36
URLリンク(docs.python.org)
ドキュメントにはこう書いてあるけど、
書けないことはないから、やってみれば

126:デフォルトの名無しさん
09/07/20 23:07:45
っ basestring

127:デフォルトの名無しさん
09/07/21 01:09:26
NameError: name 'basestring' is not defined

128:デフォルトの名無しさん
09/07/21 11:20:51
>>> basestring
<type 'basestring'>

129:デフォルトの名無しさん
09/07/21 14:36:46
The builtin basestring abstract type was removed.

130:デフォルトの名無しさん
09/07/21 14:39:35
> sys.version_infoを見れば一応はできる

131:初めてのPy
09/07/21 23:06:41
importで2回目の実行からエラーがでるんですが
コンパイルの設定とかあるんでしょうか
UnicodeDecodeError: 'utf8' codec can't decode byte 0x83 in position 24: unexpected code byte

Eclipse Classic (SDK) 3.4.2 (clean)
python-3.0.1

132:デフォルトの名無しさん
09/07/22 00:29:08
こーど

133:デフォルトの名無しさん
09/07/22 01:09:59
VPython、いまいち分かりにくかったけど、
・XY平面のグリッドをcurveで書く
・Zを上にするよう、scene.up=(0,0,1)を指定
・X,Y,Z軸をcurveで書く
・物体の影をXY平面に書く
したらすごく分かりやすくなった!

134:デフォルトの名無しさん
09/07/22 01:17:51
UnicodeDecodeErrorって3になってからでもでるの?

135:デフォルトの名無しさん
09/07/22 01:19:17
>>133
GJ!!
kwsk

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でだいぶ動作がマシになった。
完全に抜かれちゃったなあ


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

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