┌─┐ │●│ └─┤ _ ∩ ( ゚∀゚)彡 ┌─┬⊂彡 │●│ おっぱい!おっぱい! └─┘ おっぱい!おっぱい!
乙
宿題は自分で
宿題スレって他所だったような
しかも既出だった気がする
おい!前スレで初めて1000とっちゃった... しかしあんなレスでとるなんて...なんかごめん...
いやらしいお茶目言語Python
前スレにあった_mssqlを使ってみたんだけど、これ簡単でいいなぁ。 ADO.NETでも、自分ユーティリティでmyDataSet as DataSet=mySQLLib.GetDS(クエリー文字列) とか1行で取れるようにはしているけど。 こういう、実務的?なもののお勉強をもっとしたいものですわ。 Windows2003のイベントログとか、タスクスケジューラとかをPythonで扱えるのか見てみようかな。
Windows専用になるなら、IronPythonでも普通のPythonでも良い気がするよ。
>>15 なるほど。
.NETが関係してるものと勘違いしてました。
微妙にスレ違いすまんが wscript/cscriptでイベントログ読むと ログが頻繁に出力されるときは 取りこぼしが発生するんだよな EventLogAPI叩けば大丈夫らしいんだけど Pythonはどうなってるのかな
>>17 それはMSDNのフォーラムで聞くべき内容だな。
女子も中学生も使う みんなのPython
アッー!な人たちも忘れないで。。。
そういえば、日本のPythonコミュニティをどうこうするとか息巻いて玉砕してた人たちがいたよな 元気にしてるのかな?
ついでだから教えて欲しいんですが日本のPythonサイトにはど うして/Zope/がくっついてるのでしょうか?
クスクス。
今見てみたけど、内容が古いなぁ>python.jp
ところで、みんなのPythonっての、ここでの評判はどうなの? 回りにPythonはじめるのにいい本ないかって聞かれて、本屋にあったしアマゾンでも前の版は結構評判いいみたいなんでその名前出しておいたんだけど。 その後責任感じて自分でもちゃんと目を通してみたら、なんだかなぁって感じ。 細かい間違いやページ稼ぎの埋め草かと思えるような部分結構多いよね。
もう飽きたよ
そうなんだ。すまん。 やっぱここの評判は良くないんだ。 ひとにすすめる(ってほどじゃないけど)前にここ見ればよかった。 アマゾンのレビューって結構あてにならないよね。
かといってそんなこと聞いてくるような奴に、初めてのPythonやチュートリアル勧めるわけにもいかないし 入門としてはあのくらいでしょうがないんじゃないかなぁ
女子も中学生も使う みんなのPython
>>27 恥ぱいより100倍マシだから安心していいよ
不満なら自分で書いてみれば?
>>31 最近は代替になりそうなのが他にあるんだけどね
既に使ってる人はわざわざ初心者本を読まないので
お勧めされるまでは至らない状況
>>34 >最近は代替になりそうなのが他にあるんだけどね
たとえば?
恥じらいのぱいそん、 もしくは 恥じらいのおっぱい、 か。
>>35 AmazonでPythonで検索して出てくるようなやつ
どれもこれもダメっていうのなら話は別だけど
そういえば python.jp/Zope/ なサイトには 恥ぱいも みんぱいも 載ってるんだよなぁ
>>37 みんなのPython改訂版というのが先頭に来ましたです。
きっと3つめを勧めたいんだろうな 2つめは初めての〜だしw
42 :
デフォルトの名無しさん :2009/07/09(木) 01:21:08
>>40 三番目はないわ(wwwwwwwwWwwWwwwWwwwwWWwww
勧めるの著者くらいだろ(wwWwWWwwwwwwWWWwwWwWwWWW
いきなりPython クックブック、というのはどうだろう。
ないわー
でも、みんPyとかはじPyとか読んでいて「こまけぇことは(ry」となる人には 良いと思われる>いきなりクックブック
クックブックはありだろ。ネットで読めるし。 三番目は、絶対ない(W
初めてのPythonって評判悪いのか。 勉強用に読んだけどそんなに悪いとは思わなかったけどなあ。 10日で覚えるとかはちょっと。。
鈍器としては最高の出来>初めての 10日で覚える〜は鈍器としてすらありえない。
>>48 はじめてのPython と初めてのPython は別のもの
The Quick Python Book 第2版待ち
54 :
デフォルトの名無しさん :2009/07/09(木) 16:53:53
Christian Tismerがpsycoプロジェクトを復活させるらしい
Psyco x64を切に希望します
PyPyまだー?
はじめてのPyPy
PyPyクックブック
PyPy待てど暮らせど
゙'. ,ト `i、 `i、 .、″ | .,.:/"" ゙‐,. ` / ` .,-''ヽ"` ヽ,,,、 ! 、,、‐'゙l‐、 .丿 : ':、 、/ヽヽ‐ヽ、;,,,,,,,,,-.ッ:''` .,"-、 ,r"ツぃ丶 `````` ../ `i、 ,.イ:、ヽ/ー`-、-ヽヽヽ、−´ .l゙`-、 _,,l゙-:ヽ,;、、 、、丶 ゙i、,,、 ,<_ l_ヽ冫`'`-、;,,,、、、、.............,,,,、.-`": │ `i、 、、::|、、、ヽ,、、. ```: : : ``` 、.、'` .|丶、 .l","ヽ、,"、,"'、ぃ、、,、、、、.、、、.、、、_、.,,.ヽ´ l゙ ゙).._ ,、':゙l:、、`:ヽ、`:、 : `"```¬——'''"`゙^` : ..、丶 .l゙ `ヽ ,i´.、ヽ".、".、"'ヽヽ;,:、........、 、、...,,,、−‘` 、‐ |゙゙:‐, ,.-l,i´.、".`ヽ,,,.".` `゙゙'"`'-ー"``"``r-ー`'": _.‐′ 丿 ,! j".、'ヽ,".、".、"`''`ー、._、、、 、._,、..-‐:'''′ .、,:" 丿 ゙l,"`"`''ヽヽ"`"` ```゙'''"ヽ∠、、、、ぃ-`''''": ` 、._./` ._/` `'i`ヽヽヽ`''ーi、、、: : 、.,-‐'` 、/` ``ヽン'`"` : `~``—ヽ::,,,,,,,,,,.....................,,,,.ー'``^ ,、‐'"` `"'゙—-、,,,,..、、 : ..,、ー'"'` : `‘"`—---------‐ヽ``"''''''""
PyPyワロスワロス
62 :
デフォルトの名無しさん :2009/07/10(金) 03:26:27
m = re.match("(.*?) = (.*?)",text) foo[m.group(1)] = m.group(2) これを m を介さずに一行で書くにはどうすれば良いですか?
(lambda m: foo.__setitem__(m.group(1), m.group(2)))(re.match("(.*?) = (.*?)",text))
foo.__setitem__(*re.match("(.*?) = (.*)", text).groups()) 難読化して何が楽しいんだか
65 :
デフォルトの名無しさん :2009/07/10(金) 03:37:35
foo[m.group(2)] = m.group(1) だったときでも使える?
そんなの関係ねぇし
s = re.match("(.*?) = (.*?)",text); foo[s.group(1)] = s.group(2)
68 :
62 :2009/07/10(金) 05:36:03
きれい書く方法ないんですね。あきらめます。
そもそも m が None (ぬるぽ) のときはどうするつもりなんだ exception 書くと結局数行付け足す羽目になるぜ
まぁ、質問の答えとしては、だいたいそもそもの構造自体が悪いってことはあるね。 質問に正確に答えるなら、その方法を答えるのが正解だけど。
73 :
デフォルトの名無しさん :2009/07/11(土) 01:28:38
まずチュートリアルだべ
76 :
75 :2009/07/11(土) 01:43:58
見るだけな。絶対買わない。
78 :
デフォルトの名無しさん :2009/07/11(土) 04:10:38
うちに余ってるからあげようか?
PythonTシャツを試作してみてるんだけど、 買うとしたらどのくらいの人間が買う?ということが気になっている。
80 :
デフォルトの名無しさん :2009/07/11(土) 21:30:33
標準出力を変数に代入することは出来ますか? 変数に代入するときは標準出力に吐き出されず、 以降は print などで普通に出力される動作を期待しています。
できますよ
どうすればできるでしょうか?
回答まだでしょうか?
from cStringIO import StringIO
stdout = sys.stdout
sys.stdout = StringIO()
print "test"
test = sys.stdout.getvalue()
sys.stdout.close()
sys.stdout = stdout
これで、できました。失礼します。
あと、
>>85 は自分ではありません。
>かなり厳しいstrictな規格 strictって”厳しい”って意味ですよね 意味が重複してますよね
人に使わせるプログラムをPythonで書いて,とりあえずコンソールプログラムとしては完成したので, 今度はそれをEasyGuiでGUI化しようとしてるんだけど,コンソール(コマンドプロンプト)ウィンドウが 邪魔くさいので非表示にしたいんです。 ググってもわからなかったので,どうすればいいのかエラい人教えてください。 環境はWindows XPでPython 2.6.2動かしてます。 起動は.pyファイルをダブルクリックするようにしてるので,コマンドプロンプトを開いて 起動しているわけではありません。
>>88 拡張子を .pyw にする。
もしくは ctypes で FreeConsole() を呼ぶ。
90 :
88 :2009/07/13(月) 13:10:58
>>89 > 拡張子を .pyw にする。
うわー,そんなんでよかったのか!
> もしくは ctypes で FreeConsole() を呼ぶ。
こっちも調べてみます。
速攻レスサンクス。
俺も知らんかった、.pywってそういう意味だったのか・・・
でも.pywはpythonw.exeに関連付けされてるだけだよ
93 :
88 :2009/07/13(月) 18:50:03
うん。後から気がついた。
tyowww
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です。
>>95 エラーを再現できない。
/usr/lib/python2.5/lib-dynload/_hashlib.dll
があるかどうか確かめてくれ。
97 :
95 :2009/07/14(火) 17:15:55
>>96 お返事ありがとうございます。
存在します。
98 :
95 :2009/07/14(火) 17:23:09
http://code.krypto.org/python/hashlib/hashlib-20081119.tar.gz から、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
というエラーでできないのですが、関係ありますか?
100 :
デフォルトの名無しさん :2009/07/15(水) 13:32:46
cpythonで作ったメインのプログラムからJythonで作ったモジュールを呼び出すことは可能ですか?
Unladen Swallowの更新が来たな
Neatxって凄い名前だな・・・
Psyco is not supporting 64 bit, yet. But it is well being considered. 期待して良いのか?
yahooの知恵袋っていつから珍回答で質問者をからかう場所になってんだ
なんでいきなりそんな話が出てくるの?
うー!2chには誤爆という文化があるのですよ!はうぅー!
↑これ、書き込んでんの30過ぎのおっさんだよ
ようつべでモンティパイソン見たら、結構酷いネタ多いなw
しかし、心はヤング
40過ぎてもせんずりしますか
はうぅー!Python 3.1で遊ぶのですぅ!うーうー!
VPythonってなんかすごいですお 俺のようなVTKとかインストールすら出来ずに挫折した人にはナイスであります。
ビタミンのVか
D:にインスコすると死ねる
なんだか頭の悪そうな書き込みが豊満してますね
いつものruby厨が荒らしてるんだろう
VPythonマジ強力っていうか馬鹿な俺でも使えるのでした。 ローレンツアトラクタを書かせたら、20行くらいでくるくる回って感動ww
データが文字列であることを確認するには isinstance(obj, (str, unicode)) # 2.x isinstance(obj, (str, bytes)) # 3.x となりますが、ひとつのファイルで2と3の両方をサポートしたい場合はどうかけばいいでしょうか。
両方をサポートしたいなんて考えをやめるべきだ!
っ basestring
NameError: name 'basestring' is not defined
>>> basestring <type 'basestring'>
The builtin basestring abstract type was removed.
> sys.version_infoを見れば一応はできる
131 :
初めてのPy :2009/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
こーど
VPython、いまいち分かりにくかったけど、 ・XY平面のグリッドをcurveで書く ・Zを上にするよう、scene.up=(0,0,1)を指定 ・X,Y,Z軸をcurveで書く ・物体の影をXY平面に書く したらすごく分かりやすくなった!
UnicodeDecodeErrorって3になってからでもでるの?
>>134 そりゃ、Shift-JISで書かれたファイルをencode='utf-8'とかを指定して
読み込もうとしたらDecodeErrorになるよ。
>>134 b'\x82\xa0'.decode("ascii") とかでも UnicodeDecodeError
b'\x82\xa0'.decode("cp932")
>>135 おk、事務所に置いて来たので、10時頃まで待ってください。
まず、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============
あ。貼り付けるとスペースは消えちゃうのか。forの次はindentしてください。 sceneの中心が原点、xy平面を見下ろし、z軸が上向き、ちょっとズームアウト。 軸のレンジ÷20で、XY平面にグリッドを書く。 X軸、ちょこっと矢印、Y軸、ちょこっと矢印、Z軸、ちょこっと矢印、「X」とかラベル付け。
#=====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))
これはおもろいすなぁ。
http://up2.viploader.net/pic3/src/vl2_161264.png こんなブキミな物体(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)
フレンチクルーラーを思い出した
負荷の大きい鯖のプログラムはperlなところが多い気がするのですが pythonも高負荷に耐えれるのでしょうか
150 :
デフォルトの名無しさん :2009/07/22(水) 15:38:28
むしろPerlよりも軽い
phpよりも軽い?
>>149 「pythonも高負荷に耐えれるのでしょうか」じゃなくて
「pythonが高負荷を発生するのでしょうか」だろ。
Python電磁波クラブ
>負荷の大きい鯖のプログラムはperl かなり曖昧だな
このページによると、 速度だけなら python > perl > php > ruby な感じ。 perlはメモリ消費優秀。 phpはメモリ消費大杉。
つーか、PHPって別に速くないんかいw
良くある色が変わっていく表示は、RGBじゃなくてHSVで作ればいいのか。 良く分かったよ感謝
PHPの速さはapacheのSAPI経由から開始される高速な起動と、(他のmod_***より明らかに早い) 負荷のかかる処理をC言語の拡張に任せるというスタイルによるレスポンスのよさだからな。 オブジェクト指向を気取ってコードをたくさん書けば書くほど遅くなる罠。 まあそれはLWLではみな同じことが言えるわけだが。
PyCUDAとか使ってみたいですな 100倍速い!!とか言ってみたい。
> 負荷のかかる処理をC言語の拡張に任せる それってどれも同じなんじゃね?
失敗した… おれもVPython入れてみようと思って、Ubuntu9.0.4のsynapticで「あるじゃん」と思って入れたら、 これバージョン3だよ。opacityとか無いよ。
>>161 pythonがcgi.pyでやっているような処理を、phpではCで書かれた関数で行なっている。
測定してみればわかるけど、これはけっこう性能に効く。
wsgi
今どきcgiなんて使わないだろ。
PHPで数値計算と文字列処理のベンチを取ると激遅なんだよな。 まぁWebで数値計算はしないが。 ソースを忘れたけど
こんな感じでデータが入ったファイルを -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
なぜ、PythonはRubyの # -*- coding:utf-8 -*- をパクってるのでしょうか?文字コード指定は楽なのはわかりますが。
>>168 emacs や vim の文字コード指定方法をソースコードの文字コード指定方法に
一致させると楽だから。
>>168 去年からPythonで導入された方法。
>>168 ていうか、それRuby1.9からだよな。
Pythonのほうが古い。
てか、釣りだろ。
┐(´д`)┌
>>170 Python 2.3 からだから、5年くらい前じゃね?
乞食のruby厨にレス付けたら負けだよ
Rubyを使うとどこかの国のような思考回路になるってことですね。
Why do you stay in wrong thread?
Ruby書かされると脳みそが痒くなるんですよ。
ubuntuのaptでいれたpylabがバージョン古いから 最新版をsetup.py で上書きインストールしてしまうかと思う しかし、何か不具合おこないか心配 aptで入れたパッケージを消してからpython setup.py install したほうがいいんだろうか
>>168 >なぜ、PythonはRubyの
># -*- coding:utf-8 -*-
>をパクってるのでしょうか?文字コード指定は楽なのはわかりますが。
これは恥ずかしい
マネしたのはRubyのほう
Python信者必死杉 いいじゃんパクったならパクったで
いつもRuby厨からケンカ売ってくるもんで^^
180の先にemacsの形式って書いてあるじゃん...
OSSじゃパクりパクられはむしろいいことだぞ?なにいってんだ?
出典は明記するべきだよね
てか、Emacs時代から無かったかそれ? Ruby厨はなんでもRuby一番にしたがるから困る
Scipyってどうですか? 有限要素法とかあったりしますか?
なぜ、PythonはRubyの 変数とか代入とかハッシュとかの概念を をパクってるのでしょうか?スクリプト作成は楽なのはわかりますが。
自演乙
現在のファイル名、関数名、行番号をlogするのに os.path.basename(__file__) , (__name__).replace('__','')+'()' , inspect.getlineno(inspect.currentframe()) spam.py main() 19 こんなことしてるんですが、俺ダサ杉ですよね。華麗な表示方法をご教示くださいですよ。
Rubyだともっと簡素にかける
$:.unshift "./hoge/hoge/hoge/hoge/hoge/hoge" require "hage.rb" 見たいなことはPythonで出来ませんか?
>>193 なるほど!
%(module)s モジュール名 (ファイル名の名前部分)
%(funcName)s ログ記録の呼び出しを含む関数の名前
%(lineno)d ログ記録の呼び出しが行われたソース行番号 (取得できる場合)
>>194 import sys
sys.path.append('./hoge/hoge/hoge')
import hage
でどうでしょう?
import os hogedir = os.path._getfullpathname("./hoge/hoge/hoge/hoge/hoge/hoge") os.sys.append(hogedir) import hage
>>195 これ3.0に移行してstr.formatを使うようになっても%書式のままでいくのかなぁ
今見たけど変わってなかった
┌─┐ │●│ └─┤ _ ∩ ( ゚∀゚)彡 ┌─┬⊂彡 │●│ おっぱい!おっぱい! └─┘ おっぱい!おっぱい!
ftpでファイルをローカルにコピーするのはこれでできたんですが session.retrbinary('RETR '+file, open(file, 'wb').write) 標準出力にファイルの中身を吐き出すにはどう書けば良いんでしょうか?
>>198 どうするか悩みどころだよね。
将来的に % によるフォーマティングは廃止される予定だけど、
デフォルトのFormatterはどうしようも・・・
logging.basicConfig(newstyle_formatter=True)
とかでお手軽に新フォーマッターに移行できないかな・・・
>>200 session.retrlines('RETR foo.txt')
(⌒,,⌒)〜っ (⌒,_, ,⌒て ,,_,) ! ノ U。`yヘ_,、_ノ ! し|~〜〜 。 ヘ⌒iヽフ |! ゚o 。.゚(・ω|・ ) びーるきたよー |! 。o゚ ⊂ ゚ とノ |i 。゚ ゚ o .゚|.。|. | |i、..゜。。゚ ゚し|'J . |,,._二二二_,! 。゚o
a = ["abb","acc","add"] print map(lambda x:x.replace("a",""), a) これと同じ処理でもっといい方法ありますか?
>>205 lambda + map 使うくらいなら内包表記を使う
print [x.replace('a', '') for x in a]
lambda も map も悪いものではないけど、map+lambdaは推奨されない。
>>206 内包表記なんていうのがあるんですね。ありがとうございます。
LISP畑から来てるので map に lambda が推奨されないって変な感じですが
Pythonではあまり使わないようにします。
> LISP畑から来てるので map に lambda が推奨されないって変な感じですが schemeのinternal defineのように関数内で関数定義して名前を与えて使うのがいいみたい
>>208 それは
>>206 とはちょっと違う話で、少しでも複雑な関数を作るときは
ちゃんと名前を付けましょうねという意味で、lambda が単文しか実行
できなくなってる。
map + lambda が推奨されないのは、
1) 単純に map(lambda x: と書くタイプ数 が for x に削減される
2) map はリストが不要なときも一時リストを生成してしまう。
(
>>206 ではリストが必要だったけど、必要ないときはジェネレータ内包が使える)
3) map 内で繰り返し関数呼び出しが発生する。内包だと式の評価なので lambda より速い
4) Lisp脳ではない人間にとっては、 map(lambda x: を読むときに頭の中で分解再構築が必要になる。
内包表記の方がやりたいことをすっきりと書き下せる。
とりあえずIDLEでimport thisしようぜ
>>209 頭大丈夫? 自分が何を主張するために何を持ち出しているのか読み直した方がいいよ。
>>211 オレは>209の入ってる事がよく分かったが、何か問題でもあるのか?
>>209 1)については、そもそもlambdaとか6文字も必要なsyntaxにしたのが間違いだったんだと思う
Haskellみたいに記号使っとけば……
2)はpython3000ではmapもイテレータ作るし
まぁ内包のほうが速いし、そっち使ったほうがいいんだけど
-> だったっけ
>>213 Pythonにとって、lambdaは便利で強力だけど一つの文が複雑になるし遅いので
あまり推奨できないから、記号を導入してまでみんなに使ってもらおうとは
思ってないんだろう。
Pythonの場合、lambdaとインデントの相性が悪いのもあるんじゃない? でも、他の言語使ってても複雑な式ならどのみち関数定義するから、 そのために何かして欲しいとは思わないけど。
f = λ x:a*x+b これでいくか。
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
どれも、これだ!ってのがないな。
というかλ記法って^が変化してλになったんだから ^記号をつかえばいいやんとか思う ビット演算とまぎらわしいなら$で
Python def f(x): return x+1 f(42)
$があるとperlみたいで汚いから嫌だ
逆に
>>221 でなにが不都合があるんだろ。
名前を考えないといけないから思考が停止しちゃうとか?
>>224 内包表記のときはやっぱりラムダがあった方がいい。
名前も、じゃあ全てのfor文に名前を付けるか?みたいな話だと思われ。
それくらい気楽な関数。
俺が恵まれていないだけかも知れんが、俺の周りで 関数名つけるの面倒くさいっていうやつは、98%の確率で ろくなプログラマではない だいたい、面倒って言ったって、xxx2yyy くらいを考えれば十分だし、 一言で表せないような関数を渡すのは構造的に失敗してると思うし
>>226 どっちかというと、かぶらないか失敗っていう心配だな。
Pythonならあんまり気にしなくてもいいんだけどw
228 :
デフォルトの名無しさん :2009/07/26(日) 22:30:21
Python3に対応したpygame出てないのかよ Python使いからの不満も多いみたいだし、こんなので3は普及するのかねぇ
pgreloaded はまだ開発中か
>>225 > 内包表記のときはやっぱりラムダがあった方がいい。
ラムダが内包表記で便利な経験が無いんだけど、
ラムダ+内包表記のcoolな例あったら挙げてみて。
可読性と内包表記、 やっぱり、[fnc(x) for x in a if check(x)==0] のようにして、[ ]内はごちゃごちゃしないようにしたほうがイイすよね?
www.djangoproject.jp まだ落ちてるよ 日本人でDjangoをやっているひとたちは サイトが長時間落ちてもオッケー的な感覚の持ち主なんだろうな
東京で停電があったとき以来 復活してないサーバと比べりゃ(ry
>>231 読む人が「えーとこれは」と考え込まずに済むように書きたい。
したがってその位に留める(長くなるなら外に出す)という習慣は
良いことだと思われます。
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
>>235 さすがにそれは内包表記の中で直接 x + 1 した方が良いだろ。
「長くなるなら」外に出す、なのに「x+1なのに外に出す」って何だよw
Pythonで無料レンタル鯖のいいとこ&有名なとこあります?
ドジャンゴが使っているところはやめたほうが良さそうだな。
レンタル鯖だと、Pythonはいまだに2.3や2.4ばかりで悲しい。
>>238 国内無料鯖は2.4どころか2.3、Python自体ないとかあってかなりの不遇で、自信を持っておすすめできるものはない。色々探してみるといい
ただSSHなどシェルアクセスできれば自力で導入できるとこもある(xreaとか。まあSSH使える無料鯖はほとんどないが…)
低価格鯖なら最近2.6が導入されたさくらがおすすめかな。
どうせ他にもいろいろしたくなるから、 まるまる仮想OS使えるところでいいんじゃないの。
月3000円も出せばVPS借りられるんだからそのくらい出せよ それも出せないなら自宅鯖でも作れ いやならPHPでも使ってろ
釣りか? 70 名前: デフォルトの名無しさん Mail: sage 投稿日: 2009/07/27(月) 15:02:19 PHPで無料レンタル鯖のいいとこ&有名なとこあります?
Pythonスレの方がレスが多くて みんなやさしくて好きです
表向きは永久凍土な連中ということで通ってるんだから そういうこと言っちゃいけません
GAE はないわなぁw
@pagesとか言うところが2.5.1みたいだ
実際に sys.version 出力させてみたら 2.5.2 だったよ。
関数の中から実引数の数を調べることはできますか。 def f(a, b=1, c=None): print (a, b, c) とあって、f(0) という呼び出し方をした時に、f() の中で実引数の数がいくつなのかを調べる方法があれば教えてください。
バイトコード調べれば何とか… じゃなくて def f(*args): defaults = (None, 1, None, ) len(args) で調べる args = tuple(args) + defaults[len(args):] とかした方がいい
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との比較をするつもりではないのでご了承下さい。
[i for i in xrange(10) if i >= 7][0]
>256 だといったん完全リストにしちゃうから 元が xrange(一億) とかだった場合にすげー重くならない? イテレータ使ってても,リスト内包表記で一旦 リスト化しちゃうと遅延評価はされなくなっちゃうよね?
>>239 なんで?
おすすめは
zope
web.py
なの?
(i for i in xrange(10) if i >= 7).next()
>>258 Django自体は問題ナッシング
むしろすばらしい
問題は日本のヤツら
Djangoの中に遅延評価関数とか入ってるからwebやらなくても使ってみたい気はする
Formがもうちょっとイカしてくれてればなぁ っていうか web 板の django スレが寂しすぎる件
Djangoのutilsには,便利なクラスや関数がたくさんあるので utilsだけで使うことが良くあるよ
>>259 ありがとうございます!
でもPython3で動かない。。。。
Python2と3の両方で動く書き方はありませんか?
聞いてばかりですみません。
>>267 python3の場合
(x for x in range(10) if x>=7).__next__()
>>268 next(x for x in range(10) if x>=7)
だろ
ごめん
Don't mind.
>>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 例外を出すよ。
sunkus
274 :
デフォルトの名無しさん :2009/07/29(水) 09:54:00
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の値をコピーしているだけですか? それともポインタ的なものが入ってるんでしょうか?
barの型次第 上の場合はリストだから参照になるね
277 :
252 :2009/07/30(木) 07:00:23
>>254 >標準モジュールも知らない低レベルプログラマは
>今すぐPythonやめてPHPに戻れよ
みなさんの怒りを買うような質問をしてしまい、申し訳ありませでした。
息子がご迷惑をおかけして申し訳ありませんでした。
息子にはPythonをあきらめてPHPに戻るようによく言い聞かせました
いやいや、誰もが最初はそんなもんですから。
話がまとまったところで、あとは若い人たちに任せるとしましょう。
おまえら表面は凍ってるのに中身は生暖かいのな。
今からpython勉強するなら、2.6.2と3.01どっちがおすすめ?
仕事で必要なら、必要な方なのは置いといて。 私は、stringが完全Unicodeになってる3をすすめます。
初めてPYTHONをやり、最初、2.4入れて setが使えないので、1ヶ月で2.5に移行 その後、文字化けが面倒なので2ヶ月で3に移行 最初から3にすれば良かった てかemacsで文字化けする しかもWindowsのエラーで、プロンプトからemacs起動出来ないから直し方わかんね 結局UTF-8使ってない
なるほど、こういう人たちがいるがために今の状況があるわけか
ライブラリが全然ついて来ないから 未だに 2.x だけどな。
3.1は失敗作だったねえ。Python5.0に期待。 対するRubyは1.9.2でだいぶ動作がマシになった。 完全に抜かれちゃったなあ
pass
290 :
283 :2009/07/31(金) 07:11:16
ありがとうございました 参考にします
>>283 用途次第だけど2.5がライブラリ豊富で一番良いよ
2.6 でなく 2.5 を勧める理由が意味不明
2.5 でなく 2.6 を勧める理由が意味不明
ダンジョーも動かない2.6を勧める理由が意味不明
2.5.2で間違いない
>>294 サーバが止まりまくりのDjangoなんて使えたって意味ないだろ
ジャンゴが止まりまくるってどんな環境よ
デベロップ用のサーバで公開したのかなw
>>299 デベロップ用のサーバで公開したのかなw
マルチコアのCPUで並列実行させたいんですが、 Pythonのthreadやthreadingモジュールだと 実際には同時平行で複数のスレッドが実行されないって本当ですか? 並列化するのにお勧めのモジュールってありませんか?
>>302 すみません、わかりません。答えを教えてください。
GILが問題になるようなプログラムにPythonは向いてないよ
>>301 multiprocessing モジュールがお勧め。並列性のある問題を解くのに使えば
複数プロセスが同時に並列実行されてちゃんと台数効果が出ます。
僕たちサーバ管理よりイベントが大好きなんです アッーー!
>>302 >>306 ありがとうございます。
GILがあって今一つ並列実行しにくいのでプロセスをフォークするんですね。
スレッドのタスクが重ければフォークのコストは大したことないですが、
リソースの共有が大変になるんでしょうか。
Core i7で8コアもあるのでそろそろ並列化をまじめに考えなくちゃと思っているので、とりあえずいじってみます。
それから
>>303 は私じゃないです。
ドジャンゴもマルチプロセス使えば落ちないんじゃねえのwwwwww
件のページはdjangoじゃなくてサーバ自体が落ちてんだろ 煽ってるバカ何なの
Djangoがサーバを落としたの??? なんたるマルウエア!!
またruby厨の荒らしっすか
>>311 >件のページはdjangoじゃなくてサーバ自体が落ちてんだろ
Apacheは応答してるっぽいから、サーバ自体が落ちているという事はないのでは?
Dangoの人は適当で信用ならない
djangoはジャンゴって読むんじゃないの? 昔の有名なギタリストにいるよね
アンガールズ「ハイ! ジャンゴジャンゴジャンゴジャンゴ」
そう、djangoは"ジャンゴ"と読みます 一方日本でdjangoを使っている人は"ドジャンゴ"や"ダンジョー"と呼ばれています
そう、djangoは"ジャンゴ"と読みます 一方日本でdjangoを使っている人は"ドジャンゴ"や"ダンジョー"とruby厨は呼びます
日本語でおk
民間人に送られる最高の爵位・ダショー。 ちなみに我らがPython神のGuido van Rossumは、BDFLと呼ばれる。
Djangoは1.1出てたのか・・・
318はイタいが、320はもっとイタいな(wwWwwWwwwwWwwWWww
ジャンゴといったらジャンゴ・フェット。
pass
ジャンゴジャンジャンゴジャンゴ
pat = re.compile(r'.*¥.html$') としたときに、patからもとの文字列('.*¥¥.html$')を取り出すことはできますか。 よろしくおねがいします。
327 :
デフォルトの名無しさん :2009/08/03(月) 04:14:09
pat.pattern
>>327 ありがとうございました。
ところで dir(pat) としても pattern というのは出てこないのですが、どういうことでしょうか。
静的htmlに必要最低限のcgiだけつけたいのだけど どのフレームワークがお勧めよ
CGIHTTPServer
>>332 民間人に送られる最高の爵位・ダショー。
ダショー >>> ダンジョー >>> ドジャンゴの順で偉いのだが ダショーレベルでも鯖運営に支障をきたすくらいの低スキル
意味わからん ジャンゴの話題になるとどこからともなく湧いてくるな
_sre.cのpattern_getattrが処理してるみたい
>>341 人に尋ねる前に自分でデバッグしてご覧。
Webにアップするスクリプトも最初はローカルで動かして様子を見るものなんだよ。
>>342 ありがとうございます。
出直してきます。
def hello(): """コメント""" print "hello" Python では上のように関数定義の最初の文字列リテラルが関数のドキュメントになるそうですが、 これの呼び名ってありますか。 「関数コメント」とか「関数ドキュメント」で通じるでしょうか。
ドキュメンテーション文字列
AndroidでPython使えるんだね。 一気にGoogleケータイ欲しくなった・・・ 三月に変えたばかりなんだが。
>>348 ほほう。といっても何に使えばいいのか思い付かない俺ww
Launchpadがdojangoじゃなくてzopeなのは何か理由があるの?
作り始めた時期の問題じゃないかな。 Launchpad作り始めた時は、まだDjangoがマイナーだったとか。想像だけど。
www.python.org つながんないんだけど、なんかあった? Python ダウンロードしたいんだけど、どこかミラーない? ftp.python.jp は 2.5 までしかないみたいだし。
354 :
352 :2009/08/08(土) 09:47:13
BeautifulSoupって死んだんか・・・
おれも
>>352 とまったく同じ状況でした。
><>353 感謝ですっ
357 :
353 :2009/08/08(土) 22:44:09
最後のほう生々しいこと書いてあるね BS使ってるモジュールがどれほどあるのか知らないけど Py3.0への移行の支障になったりして
3.Xへの移行は年単位でかかるだろ… Zopeなんてどんだけかかるんだか
Pythonで万人に分かりやすいスマートなコメント文を書きたいんだが、どう書いたらいいだろうか。javadocのような指標みたいなの無い?
doxygenが喰えるように書く
ううむ、BSは巷のちょっと 不作法なHTMLをパースさせるのに 役立っていたんだがのう elemental treeって今のバージョンは その辺耐性あるのかしら。
ElementTreeはXMLパーサですよ
>ちょっと崩れたHTMLがパースできなく それはツマンネーな
369 :
デフォルトの名無しさん :2009/08/10(月) 09:26:40
まあ、HTMLのパーザなんて、泥縄の塊だしな。
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とかにしたほうがいいでしょうか><
373 :
371 :2009/08/11(火) 02:11:52
>>372 ありがとうございます!バグですか。。
3.0.1での解決策って
必要なところだけquote_plus()して自分で文字列連結するくらいですかね?
ですね
import _socket from _socket import * (socket.py 45) こういうふうに一つのモジュールで二つの方法でインポートするのは どういう意図があってのことなんでしょうか?
_socket の名前空間をそのまま使いたいとき 普通はこういうこと考えなくていいよ
初心者なら、from は使うべきではないと思う俺だぜ 自分が何やっているのかわからなくなるぜ
言いたい事は理解できるが、無闇に記述量を増やすとLL使う意義そのものが怪しくならんか?
とはいえ名前空間の中がごちゃごちゃしてると後で困る from/importの使い分けはいざ説明しようとなると面倒だな…
>>378 記述を減らす分には置換を掛ければ一発さ。
でも記述をフル識別子化するのはそうもいかない。
>379 それもわかる。記述量・速度と可読性のトレードオフなんだよね。 >380 タイプ量が多い事自体がまず問題じゃね? IDEの入力支援がある前提なら、問答無用でfrom禁止でも良いと思うけど。
382 :
371 :2009/08/11(火) 12:42:58
>>374 ですかー
自分でquote_plus()してやるようにします。
ありがとうございました!
っas
臨機応変に対応できてこそパイソニアンだ! Javaみたいなのはうんざりだよ。
パイソニアンとかパイソニスタとかどれも今ひとつなんだけど なんかいいのないの
蛇遣い
パイソンマン パイソナー パイン
「パイソン」さんが作ったんだから、元々人の名前なんだけどね。
>>388 ×パイソンマン
○パイソンパーソン
どこかの怖いヒスおばさんに怒られるぉw
おpy星人でいいお
アボリションオブルビー
へびんちゅ
>>378 1)
import longlonglongnamemodule
longlonglongnamemodule.hogehoge()
2)
from longlonglongnamemodule import hoge
hoge()
3)
import longlonglongnamemodule as m
m.hoge()
396 :
388 :2009/08/12(水) 12:25:50
>>390 それ一瞬考えたけど、
バイキンマンがOKなんだから
乙パイソンより問題ないだろw
バイバイキン
パイパイソン
タオパイパイ
>> hoge(5, 2) 3 >> hoge(-5, 3) -2 こういう関数ってありますか?
hogeじゃわからんw
釣られるなよ
hoge = lambda x,y:(abs(x) - y) * x / abs(x)
hage
中華なパイパイ
hoge = lambda x,y: - (y * x / abs(x))
hoge = lambda x,y: x - (y * x / abs(x))
hoge = lambda x,y: 3 if x==5 and y==2 else -2
その関数で一体何がしたいんだろう
草民が沸いてるね
床でも天井でもない
414 :
デフォルトの名無しさん :2009/08/14(金) 09:35:04
>現在、既に動いている案件に対する人員追加の募集になります。渋谷、恵比寿周辺で活動されている技術者の方、ご応募お待ちしています!応募は Death march
415 :
デフォルトの名無しさん :2009/08/14(金) 21:42:05
>>413 naze django wo tsukattanoni enjou surunokana ?
即日だからってデスマって言ってたら 世の中デスマだらけだな いや、事実デスマだらけなのか・・・
418 :
デフォルトの名無しさん :2009/08/15(土) 02:52:34
手を出してみる
Open JDK見てたら、timsortってのがコミットされてた。 どっかで見たような気がしたから調べたら、Tim Petersのアルゴリズムだった。 意外とすごいぞPython
TDN駄目プログラマオッー!!!
Web+DB Pressとか未だに恥ずかしくてレジに持って行けない
没落
>>418 キミはなにやってもムリだと思う。
コンビニのバイトとかもムリ。肉体労働はもっとムリ。
充実した人生を送っている者は、みずからを世界の一部と認識する。
送れてない者は自分より1mmでも惨めなものを必死こいて探す
そもそもジャンゴを業務でやってたって人間自体がほとんどいないんじゃw そんなに使われてるん? 日本で。
ドジャンゴを使っている人々 - ブラック企業 - 低脳開発者(たいていはもとPHP使い) - ITドカタ 厨房 / ブラック御用達フレームワークということですかね
おった!
みんな幸せになれると良いねえ
>>429 -サーバが落ちていることより角電池が気になるひとびと
これ追加。
直列四本はDanger! High Voltageだからやめろ
僕はほんたうにつらいなあ
ググルは黒だもんね
どうやら435はブラック 逃げたりバックれたりするレベル
439 :
デフォルトの名無しさん :2009/08/16(日) 16:22:35
py2exeをLinux上で使ってWindowsでも動くようにしたいんですが可能ですか? ググっても情報がないので何か情報をお願いします
>>413 >こういうのに手を出したがるおめでたいヤツって今時居るのかね
ストックオプションという言葉に釣られる人が未だにいるくらいだから、居るんじゃね?
>>439 バイナリの実行プログラムをLinuxでもWindowsでも
実行可能にするのがどれだけ大変なことか考えたことはあるのか?
ただし、Linux上でWindows上で実行可能なexeを作る「だけ」なら環境を構築してあげれば可能かもしれない。
当然Linux上ではそのexeは動作しないが。
443 :
デフォルトの名無しさん :2009/08/16(日) 19:11:44
>>441 申し訳ない
どうやら私の書き方が悪かったみたいですね
書き直します
Linux上で作ったソフトをLinux上のpy2exeでバイナリ作成して
その作成したバイナリをWindowsで動かすことは可能ですか?
とりあえず今知りたいことは
・そもそもLinux上でpy2exeは利用可能なのか?
・それはWineなどを経由しなくても可能なのか?
・Linuxで作成が可能ならそういった情報が載ったサイトなどを知りたい
よろしくお願いします
まだDebianにはPython2.6もPython3のパッケージもない?
>>443 そもそもスクリプトでLinuxに依存するような機能を使ってたり、
Linuxに依存するようなことをやってたらどっちにしろ動かない。
クロスコンパイラは無いんじゃまい?
>>443 人の話を聞けよ。
>ただし、Linux上でWindows上で実行可能なexeを作る「だけ」なら環境を構築してあげれば可能かもしれない。
>当然Linux上ではそのexeは動作しないが。
って先に答えを書いてるじゃないか。
py2exeがやってることはpycをzipで固めて1exe化した
pythonインタプリタにくっつけているだけなので、やろうと思えば他のOS上でもできる。
448 :
デフォルトの名無しさん :2009/08/16(日) 19:29:05
>>448 すんません、aptラインの書き方わかんないす・・・orz
450 :
デフォルトの名無しさん :2009/08/16(日) 20:08:25
>>449 experimentalパッケージでも入れると申すか!
悪いことは言わんまだ使うな
451 :
デフォルトの名無しさん :2009/08/16(日) 20:10:26
GTKの人かw
>452 あ〜、なるほど なんかもやもやしてたのがすっきりした!
cmake
numpy関連のバージョンをlinuxのデフォルトバージョンから手動で上げようとしたら めんどくさすぎて死んだ asdfみたいな簡単な仕組みはないの?
「make」と鬱と「負け」って読んじゃうんだよな
457 :
デフォルトの名無しさん :2009/08/17(月) 18:34:23
3.x 系列でも type(hoge) == types.DictType とかで 型を判定することができますか?
それってisinstanceじゃダメなの?
>>443 Linux上でPy2Exeは動かない
WineでWinのPython実行環境を構築すれば、
Python作ソフトをPy2ExeでExe化可能かもしれない
(やったことはないので確証は無い)
元よりWin上でPyhtonスクリプトをExe化する
ものだから(どこの説明でもそう書いて
あるのだが…)、WinでのPython実行環境が無いと
Exe化した際の不具合の特定が面倒だよ。
>>459 XP (note) で作った exe が他の XP (note) では動くのに
XP (netbook) で動かなくて焦ったことはある
vista でも動かない orz
動かないというだけじゃなくて、そのときの症状を具体的に言うのが、 初心者を抜け出す第一歩だよ。 とりあえず、VC++ Runtime Library の 2005 か 2008 の再頒布可能パッケージを インストールしてみな。
DLL地獄ようこそようこ
466 :
デフォルトの名無しさん :2009/08/18(火) 11:02:09
俺のアイドル天使はいずこに?
角電池とかよっきゅんとかここは相変わらずカオスなスレですね
イケメンハッカーも忘れないで! アッー!
またruby厨降臨?
>>464 のリンク見て不思議に思ったんだが
cx_FreezeはなんでVC++ランタイムライブラリを
配布できるんだ?
PSFライセンスの絡みであの手のライブラリは勝手に
配布しちゃいかんのじゃないの?
そのためPy2Exeはわざと除外してんだろう
472 :
デフォルトの名無しさん :2009/08/18(火) 20:56:04
pythonをsakuraエディタで使えるようにしたいんですが、 ちゃんとした色設定ファイルがありません。 原理的にどこかにあると思うんですけど、 (IDLEと同じくらいの) keyword(演算子、組み込み変数、組み込み関数、予約語等)をまとめたファイルって どこかにないのでしょうか?
> 原理的にどこかにあると思うんですけど ? 「原理的」の意味が分からない というかサクラエディタのスレで聞いた方がいいのでは?
import sys, os, itertools, keyword def importable(name): try: __import__(name) except Exception: return False return True def toplevel_modules(path): for root, dirs, files in os.walk(path): names = itertools.chain(dirs, (os.path.splitext(i)[0] for i in files)) for name in names: if importable(name): yield name break if __name__ == '__main__': words = set(keyword.kwlist) words.update(dir(__builtins__)) for i in dir(__builtins__): words.update(dir(getattr(__builtins__, i))) stdout = sys.stdout for path in sys.path: words.update(i for i in toplevel_modules(path)) sys.stdout = stdout for i in sorted(words): print i 自前で作ればいいんだよ
475 :
デフォルトの名無しさん :2009/08/18(火) 23:28:28
Python 3.1 で書き始めて MySQLdbがPython 2.6どまりなことに気づいた・・ どうしよ SQLite用に書いていたソフトを MySQL用にしたいだけなんだけど 既に本体は Python 3.x にべったりで書いてる 死にたい
476 :
デフォルトの名無しさん :2009/08/18(火) 23:40:06
シリーズ3作目はフラグ
MySQL の c ライブラリを直接呼べ
ctypes大作戦
ctypesっていいよね。
481 :
デフォルトの名無しさん :2009/08/19(水) 18:20:43
WebARENAのsuitexが「Python の最新バージョンに対応w」らしいのですが 実際にどのバージョンが入っているかご存知の方はいらっしゃいますか?
文字通り「Python の最新バージョンに対応w」なら 3.0 なんて有り得ん罠 良くて 2.4 と予想
3.1.1
>>480 #include <ctypes.h>
こうですか?わかりません><
3.x系列への移行はあんまり上手くいってないのか
487 :
472 :2009/08/20(木) 05:43:09
>>488 これで3.0系にアップデートされたら阿鼻叫喚になるなw
[ "a" for x in range (10)] と [ "a" ] * 10 は下の方が早い?
自分でベンチマークすればいいだろうが
下の方が10倍以上速かった
[]の中がImmutableだったら*のほうがいいってことかな
[ chr(ord('a') + x) for x in range (10) ] を [ "a" ] * 10 みたいな書き方できますか?
ジェネレータの中でエラーが発生すると、 エラーメッセージ中のスタックトレースが ジェネレータ呼び出しまでの部分しか出力されません。 ジェネレータの内部以降のスタックトレースも 出力されるようにするにはどうすればいいのでしょうか。 処理系はIronPythonです。
>>500 文字列はimmutableだから、ひとつのオブジェクトへの参照のリストになって問題なし。
実際、上のも (CPythonの実装では) 全部同一オブジェクトを参照するよ。
リストのリストを作りたいときは、
[[] for x in xrange(10)]
の方が良いね。
>>499 ジェネレータの内部で
try
except
print traceback
人生の敗北者はもうPython使っちゃだめですか?
>>502 どもども。
手元で追試してみたら、499で書いた制限がCPythonでもIronPythonでも発生しない。
(それぞれ標準コンソールでテスト)
実はPythonインタプリタはC#プログラムから自前で呼び出してるんだが、
そこの初期化なりトラップ法なりが間違っているような気がしてきた。
505 :
デフォルトの名無しさん :2009/08/22(土) 17:02:41
モジュールの先頭に """あれこれ""" とか クラスの先頭に """のれそれ""" 書いてドキュメントとしています. pydoc にかけるとそれらはただ単なる文字列として表示されるだけ なんですが,なんかこう,定められたフォーマットとかあるんでしょうか? それとは別にどっかで見たので __author__ とか __licence__ とか 設定してみたんですが,pydoc はそういうのはガン無視らしいです. いままで覚書をコメント文で書いていたんですが, ドキュメントのこともそろそろちゃんと考えないと 自分的に破たんする(先月の自分は自分じゃない)とおもって Python使いの方はどうやってるのかと.
>>505 EpydocとかPydoctorとか調べてみて。
508 :
365 :2009/08/22(土) 19:09:34
っ
なんでpythonってlist.rindex()ないの?
需要が無いんだろ。 rangeのようにパラメータの与え方で 逆に動くかとも思って試したが出来なかった。 ソース(Ver2.6,Ver3.1)を見るとこうなってる。 for (i = start; i < stop && i < Py_SIZE(self); i++) { start>stopでデクリメントされればな〜とでも MLに投げればそのうち実装されるんじゃねw
511 :
デフォルトの名無しさん :2009/08/22(土) 21:48:01
一連の処理の開始から,要所要所までにかかる時間を できれば高精度で(1/100秒くらいで)計測したいと思っています. datetime を使って現在時刻を取得するのではとても精度が 悪いのですが,Pythonの中だけで完結できる方法としては ほかにどのような方法があるでしょうか? timeit は上のような用途には適してないと思います. ある関数内での処理時間を計測するには使えると思いますが, 複数のチェックポイントで次々とというのには不向きかと
どうしてdatetimeが出てきたのかよくわからないのだけれども time.time()かtime.clock()じゃ不十分なのかな
513 :
デフォルトの名無しさん :2009/08/22(土) 22:17:56
いやぁ,単純に datetime.datetime.now() で得たオブジェクトなら そのまま print しても見やすくフォーマットしてくれるなぁ,と. で,datetime.datetime.now() でも十分な精度でした. テストした環境がVMで,しかもその上で動かしてるLinuxカーネルの タイマ割り込みの周期が1000回/秒だったせいで時計がずれまくってた だけだった. つーわけで俺のかんちguyでした
514 :
デフォルトの名無しさん :2009/08/22(土) 22:33:33
作ったスクリプトが遅いなぁと上の方法で計測してみたところ, Pythonであれこれimportしているせいか 全ての import が終わるまで10秒くらいかかってます. で,そのあとの処理はさくさくと. bogomips が500を切るNASでやってるのが悪いのですが, import を早く済ませるテクニックとかあるんでしょうか. そりゃ絶対的に必要な時間はしかたないですが・・・ ちゃんと pyc もできてるし,打つ手はないかなぁ
importのコストのうち、pycで削減できるのはコンパイル時間のみ。 10秒もかかるってことは、どれかのモジュールのグローバルに重い処理があるんじゃない?
(´・ω・`) God knows
質問です。 8時間悩んだバグが単なる変数の再初期化のし忘れでした。 このやりきれない気持ちをどうすればよいですか。
再初期化をする必要がないスコープで書く方法を学ぶ
∧∧ (´・ω・) おやすみ・・・ _| ⊃/(___ / └-(____/  ̄ ̄ ̄ ̄ ̄ ̄ ̄
∧∧ (´・ω・) おはヨーグルト! _| ⊃/(___ / └-(____/  ̄ ̄ ̄ ̄ ̄ ̄ ̄
おまえら発火損逝った?
はっかそんいった?
同じモジュールでも、複数のファイルからimportするとその分だけメモリ消費しますか? from hoge import *だとそのファイルの物になって、複数ファイルでfromするとメモリ消費しますか?
>>527 消費しない。
あるモジュールがはじめてimportされるとき、モジュールオブジェクトが作られて、
sys.modulesに保存される。
#a.py
print 'hello, I'm a'
#b.py
print "hello"
import a
a.foo = 'bar'
import c
#c.py
import a
print 'hello, I'm c'
print a.foo
$python b.py
してみて。
次に、 c の import a を、 import sys; a = sys.modules['a'] で置き換えてみて。
白化村征かなかったのか。駄目だなあ。
予想してみたけど分りません(>_<) 薄荷無羊駝(シソ科ハッカ属)、咲かなかったのか。 白化村(色素が抜けて全身真っ白の人しかいない伝説の村)、まさか無かったのか。
ハッカービレッジとかそんなのか?知らんけど
GAEあほだろ
つまらない質問で悪いんだが、 タプル同士をベクトルみたいに足し算するのはどうやるの? ab = (1, 2) ac = (3, 4) abc = (ab[0]+ac[0], ab[1]+ac[1])
map(sum,zip(ab,ac))
numpy
タプルはベクトルでも行列でもねーぞ
ab = 1 + 2j ac = 3 + 4j abc = ab + ac
つまらない質問で悪いんだが、 タプルを複素数にするのはどうやるの?
>>536 tuple(ai + bi for ai, bi in zip(a, b))
おまけ:2ノルム
math.sqrt(sum(ai * bi for ai, bi in zip(a, b)))
>>542 tup = (1, 2)
complex(*tup)
>>542 complex(*ab)+complex(*ac)
>>544 thx!
つまらない質問で悪いんだが、
複素数をタプルにするのはどうやるの?
>>546 ((complex(*ab)+complex(*ac)).real, (complex(*ab)+complex(*ac)).imag)
とりあえず吉川と布袋に囲まれたら泣いて謝ると思う
なんのこっちゃわからんが、みんなすごいね
ぬのぶくろは弱いぞ
ヘタれ布袋
パイヤング
matplotlibのbounding box調節関数のサンプルが見つからない
文字列 % 辞書 はなんの為に使うんでしょうか? def gettext_noop(string, **kwargs): retval = string if kwargs: retval %= kwargs return retval
sprintfみたいなもんや
マンモスありがとうございます
558 :
デフォルトの名無しさん :2009/08/26(水) 20:24:36
"abc%sdef" % "hoge" みたいなフォーマット文字列の書き方とはもうサヨナラ? 悲しすぎる.
"abc{}def".format("hoge")のほうが読みやすい %sdefとかだと文字とフォーマット表記が混じって読みにくい
長いこと%sやら%dな変換指定子に慣れてるから 他の書式にされると覚えにくくて困る ええC#のことです
正規表現も読みにくいな
LINK = "<%(tag)s %(attr)s>%(name)s</%(tag)s>"
dict_ = {}
dict_["tag"] = "a"
dict_["attr"] = 'href="
http://localhost:8080/ "'
dict_["name"] = "hack you"
LINK % dict_
MENU = "<menu>\n%(item)s</menu>"
ITEM = "<li>%(content)s</li>\n"
print MENU % {"item" :"".join([ITEM % {"content": LINK % dict_}]*10)}
LINK = "<{tag} {attr}>{name}</{tag}>".format(tag = "a",
attr = 'href="
http://localhost:8080/ "',
name = "hack you")
ITEM = ("<li>{content}</li>\n"*10).format(content = LINK)
MENU = "<menu>\n{item}</menu>".format(item = ITEM)
print(MENU)
インデントずれた
LINK = "<{tag} {attr}>{name}</{tag}>".format(tag = "a",
attr = 'href="
http://localhost:8080/ "',
name = "hack you")
ITEM = ("<li>{content}</li>\n"*10).format(content = LINK)
MENU = "<menu>\n{item}</menu>".format(item = ITEM)
print(MENU)
LINK = "<{tag} {attr}>{name}</{tag}>".format(
{tag: "a", attr: 'href="
http://localhost:8080/ "', name: "hack you"})
ぶっちゃけ、変数展開型言語も色んなテンプレも別に見やすいわけじゃないんだよな。 なんか良い方法あればいいんだけど。
sqlite3でテーブルが作成されてなかったり、 データベースファイルがないのを検出する方法ってありますか?
>>567 > sqlite3でテーブルが作成されてなかったり、
SELECT * FROM sqlite_master;
> データベースファイルがないのを検出する方法ってありますか?
os.path.exists
1. Write "God" functions hundred lines of code 2. Never return anything in a function, especially not some type of value that could demonstrate your function succeeded or failed. 3. Never write a test...EVER. 4. Call Perl from Python 5. Screw Control Flow import os if os.path.exists("/tmp"): def myfunc(): x = 4 return x class Foo(object): y = 1 f = Foo() print f.y + myfunc() 6. Abuse conditional logic to the point that you double or even triple an "unmaintainable" Cyclomatic Complexity Score of 50. 7. Use sleep statements like Holy Water. 8. Initiate the same logic more then once, "just to be sure". count = 0 for i in range(5): if os.path.exists("/tmp"): print "bingo" def foo(): print "stuff" if os.path.exists("/tmp"): import sys sys.exit(1) 9. Write Library Code that does a sys.exit(0) on an exception. 10. Reimplement the Python Standard Library in every piece of code you write. Summary If you can do just a couple of these things in every piece of code you write, you are well on your way to writing bad python code! Stay tuned for part II.
571 :
デフォルトの名無しさん :2009/08/29(土) 05:31:37
PyDev 便利に使っているけど、やっぱり餅は餅屋というか、 Eclipse で Java している時のような至れり尽くせり感がないなぁ・・ もっと、こう、至れり尽くせりなPython用IDEって何があるんでしょうか。
eric4
emacs
emacs+rope
emacs+rope+auto-complete+anything
おまえらがEclipseをろくに使ったことがないということはよくわかった
577 :
デフォルトの名無しさん :2009/08/29(土) 10:39:21
ううむ・・ericも含めて、それだったら PyDev でいいや・・・
実際 Eclipse 使ったことないんだが、至れり尽くせりって具体的にどんなことが出来るのかね?
eclipseを使ったら彼女が出来ました
>>578 ファイルを保存する段階でコンパイルエラーを指摘してくれるのを最初に見たときは感動したな。
Visual Stdio 2008でも同じことが出来るけど。
環境がIronPythonになるが、Visual StudioでPythonのスクリプトを動かすことが出来るよ。
なんだ、ドザか。
w
見事に外したな
並列実行用のモジュールにMultiProcessingというのがあるようなんですが、 メモリ共有型の場合でも対応できるんでしょうか? 例えば大きな行列があって、並列処理で別々の部分を処理したりしたいんですが。。。 threadingでは実際には並列効果がないというのを知ってショックを受けてます・・・
yes you can
588 :
デフォルトの名無しさん :2009/08/29(土) 22:16:41
【JAVA質問スレより】
940 :デフォルトの名無しさん:2009/08/29(土) 22:08:40
>>937 一番もてるのはperl。
もっとも嫌われるのはpython。
C,C++は、相性とテクニック次第。
なんで?
なんでそいつに聞かないの?
モテる相手がバグだからさ
うまいな
>>588 なんでか知らんが、俺の周りでもpyてょnは変態呼ばわり。
凡人には使えない言語だ
言語じゃなくて使ってる人が変態(ry
変態専用か
変態じゃないよ 仮に変態だったとしても変態という名の紳士だよ
俺もうんこ喰うけど別に変態ってわけじゃないな
凡人は使わない言語だ
またruby厨の荒らしっすか
ruby厨は使わない言語だ
そりゃそうだ
これは良いマイキースレ
>569,570 他はともかく 4. Call Perl from Python これはあり得ないだろ…
大学の時の教授は os.system 呼びまくりだったから あり得ない話ではない。
> 4. Call Perl from Python いま仕事で使ってるスクリプトがまさにそれだ……
CentOSってPython2.4なんだけど、2.5とか2.6で動かすメリットって大きい? 用途としてはDjangoでWebアプリ
>>607 困ってないなら何もいじる必要ないのでは?
特にスピードが速くなるとかは感じない.
でも自分でコード書くなら 2.6 使っておくとよいのではとおもう.
3.x 系は自分としては使いたい拡張モジュールが
対応していないのでNG.標準モジュールだけならありかと.
>>608 サンクス
実行速度とかは特に差が出ないのね
Javaなんかだとバージョンあげると明らかにパフォーマンスあがるもので気になっていたので。
モジュールとかはおおむね2.4以降なら動くみたいだしそのままでいくわ
2.4はkuso
理由は?
システムのバージョンを上げるのはトラブルの元 ローカルに入れるのならおk
test
無責任に逃げ出すゴミ虫はなにやっても駄目だけどな
自虐すか(笑)
誰か逃げたの?
仕事しろ、あとTwitterでやれw
ゴミ虫はゾンビ化するとやっかいだから、煽らない方がいいよ...
よくみんな黙ってるよ みんな大人だ
逃げちゃう人ってそいつが存在しなくたってまったく問題ナッシングなことを証明するチャレンジャーだよね
レッドソックス松坂のことか
624 :
デフォルトの名無しさん :2009/09/01(火) 14:30:36
FreeBSDで checking for python libraries... not found って言われたのですが /usr/local/lib/python2.6 じゃないんですか?
Makefileもよめないの?
626 :
デフォルトの名無しさん :2009/09/01(火) 17:22:32
ぴーひゃらりんこだぷー
あんなの読むのは土方とマニアだけでいいと思うんだ
そうだね、フリーライダーは読まなくていいね
matplotlibの最新版でグラフにアノテーションつける機能が使いたかった 古いシステムではnumpyが古くて入らなかった numpy関連全部バージョン上げるの大変だからOSのバージョンごと上げたらいろいろ大変になった
人間性から見て一生底辺だね どんな仕事についても駄目っぽいね
>>624 よくわからんけど upgrade-site-packages やってないとかいうオチ?
Pythonってopensslライブラリが標準ではついてこないのか。 くそ。
pythonとは関係ないからな
ssl
OpenSSLがついてこないから、標準ではRSAとかの暗号関連ができないのか。ざんねん。
>>635 SSLができてもなあ・・・
twisted
twisted標準化してくれよ
641 :
デフォルトの名無しさん :2009/09/02(水) 10:43:23
>>607 Cent OS は使用した事が無いですが?
OS version default の directory を残して python support Link の patch を当てるのが無難だと思います…
python support Link の patch を取っていれば問題ない様です… version up をするので在ればですが…
ドカタかフリーライダーか、とかそういう対立軸以前に 余裕があるのかないのか、という人間としての質の差が重要な気がしている
<⌒/ヽ-、___ /<_/____/  ̄ ̄ ̄ ̄ ̄ ̄ ̄
口をきいてもつまらなく、得るモンもなきゃ、しゃべる意味ないやろ。
お前がひとりぼっちなのはよくわかったからPythonのことを書けよ。
社会のために、 そのまま引きこもっとけや。
もちろん靴下装備で
社会の為にいろいろ活動します
自宅を警備します
二次元世界との架け橋を作ります。
\ \
口
python2.5でプロセス操作が可能なライブラリってありますか?
subprocess
d = dict としたあとで key in d が出来る様にするにはどうすればいいんだろう?
d = d.keys()
いつもdictでfor文まわすのってどうやるんだったっけって調べてしまうぜ。 いちいち言語の文法をそらんじなくなって久しい。
662 :
デフォルトの名無しさん :2009/09/05(土) 12:21:13
>>660 なんでわざわざdictのkeyを取り出す必要があるんだ?
>>662 keyの文字列自体を何かに使いたいとき
入門書嫁。
リファレンス嫁。
またRuby厨があらしてるのか
C#イラネ ヘジのクラスライブラリは勘弁
どうみてもPythonもC#も被害者じゃないか
いや、普通にPython+C#で商用プログラム書いてるところですが何か。
それと比べたらたとえ揚げ足取りであったとしても、ちゃんと文章を細かく読んでくれて、理由もつけられて、 その文章内容自体について説教・罵倒される方がはるかにましだということにあの人たちはなぜか気づかない (多分、リアルがそれなりに充実した幸せな人たちだからだろう)。今の時代、話を聞いてくれて、まともな ことを言ってくれる近所の頑固親父的な人なんて絶滅危惧種なのに。 まあ、普通の大人の現代(近代)社会を考えると仕方がないのかもしれないけど。よく言われることだが、社会人は 自分の利益になるケース以外では他人(特にいわゆる「バカ」)に対して注意なんてすることはないのだ。 そんなの時間がもったいない、「時は金なり」ということ(まったくいやなことだが)。 それにしても、「「バカ」であることを自己認識し自重する人たち」にとっては、現代とはなんと寂しい・辛い世界 であることか。その人たちは相手にされること、馴れ合うことすらできないのだから。
αブロガーっぽいコピペだな
最初の二行を読むだけで目が回ったが
括弧が多すぎる。統合失調症の臭いがする。
単にLISP使いなんだろ
真のLisperは括弧を省略しない
Python使いからすると 閉じ括弧を省略できると最高なんだが
かつて、対応する括弧までを一気に閉じるスーパー括弧というのがあってだな
haskellの$演算子はカッコを減らすのにいい
Python使いの口癖 オフサイド!
「M式というのもある」と発言してうそつき呼ばわりされた屈辱の日々
684 :
デフォルトの名無しさん :2009/09/07(月) 06:57:21
最近C++一辺倒でもなと思ってPythonを使い始めたやつですが, Pythonってのは本質的に関数言語であって,クラスシステムは 後付けっつーことですか? self とか cls があらわになっているをの見て, そういうもんなのかなと. なぜPythonに手を出したかというと 普段使わなくても多重継承がないと不安だからとか そういう理由だとまた叩かれるのかな.
ドMの癖に いやらしいねえこの男は
>>684 OOP機能は最初から装備されていたそうなので、あとづけではないらしい。
そこかしこに不自然さが残るのは確か(superとか)なんだけど、許容範囲だから我慢してる。
あとPythonの作者は関数型言語をあまりよく知らないらしいから、「本質的に関数型」ではなくて「偶発的に関数型」じゃないかな。
> self とか cls があらわになっているをの見て,
> そういうもんなのかなと.
そういうもんです。違和感あるだろうけど、我慢できる範囲だと思うので、我慢して使ってください。そのうち慣れます。
>>684 個人的にはselfとかどの名前空間なのか明示する方が分かりやすい
省略しまくる言語とか訳分からん記号使いまくる言語は氏ねとか思う
>>687 そうじゃない。self.method()は別に構わない。
def method(self): がちょっと嫌いなだけ。
> self とか cls があらわになっているをの見て, > そういうもんなのかなと. そういうもんです。 どの名前空間なのか明示する方が分かりやすいです。 慣れないうちは __init__() に self 入れ忘れて、 "引数の数があわない" という一見変なエラーに悩まされますが、 そのうち気にならなくなります。 どちらかというとわたしは unicode/str の encode/decode でよく悩まされました。 こちらももうすっかり慣れましたけど。 どちらも今となっては良い思い出です。
>>688 俺も前から第一引数のselfに疑問を持っているんだが、Guidoがimplicit selfを
絶対に導入しない理由は何なの?
ちょっとググってみたが良く分からんかった。
>>688 selfまで省略されるとお前どっから来たんだよッて俺がキレる
書くときは冗長に思えるけど読むときには便利、と思えるかな?>self
>>693 それは読んで知ってたけど、論拠としては弱いと思ってた。
>>694 サンクス。これを読んで一応納得した。デコレータを使った時に困るのは分かるが、
半分以上はGuidoの思想上の問題のような気がする。本人が絶対にexplicit self
を無くさないと言っているのだから仕方ないが。
Pythonのメソッドって関数みたいなもんでしょ? 逆にいつでもselfを使える前提にするほうが変だと思う。 引数とって値を返す、関数らしい構造で良いと思う。 逆にRubyでは関数はメソッドの亜種だから、関数でもわざわざselfが設定されてる。 Javaではそもそも裸の関数が無いのだからselfがあるのは納得。
って、Javaはthisだった、ごめ
>>695 >デコレータを使った時に困るのは分かるが、
自分はここがよくわからないんだけど、だれか解説たのむ。
以下引用:
> メソッドがデコレートされたときに,self引数が渡されるかどうかを知ることはできない。
> というのは,デコレータはメソッドをスタティックメソッドに変えることもあるし(この場合selfはない),
> クラスメソッドに変えることもあるし(この場合は,selfの変わりにクラスオブジェクトが渡される),
> まったく違ったことをすることもできる
> (@staticmethodや@classmethodと同じ働きをするデコレータをPythonで書くことは希だと思うが)。
> つまり,デコレータが何をするかを知り得なければ,メソッドに明示的にselfが定義されているかどうかを知ることができないのである。
>>696 > 逆にいつでもselfを使える前提にするほうが変だと思う。
>>694 のリンク先を読めば分かるが、そんなことは誰も主張してない。
>699 しってるよw 俺の感想を言っただけ。
見苦しい言い訳だな。妄想は自分の脳内で完結させろ
>>698 デコレータは関数を引数にとって「何か」を返す関数。
クラス宣言の中でデコレータを使うと、デコレータの返したモノがクラスのメンバになる。
そうするとコンパイル時に「何か」を決定できないので暗黙の引数を追加できない。
>>696 classと無関係なただの関数はself書かなくていいよ
お前は何が言いたいんだ
基地外が暴れだしたか
今更selfがなくなると違和感ありまくり。
解説ありがとうございます。でもやっぱりわからない。
>>702 >デコレータは関数を引数にとって「何か」を返す関数。
>クラス宣言の中でデコレータを使うと、デコレータの返したモノがクラスのメンバになる。
↑これはわかる。↓これがわかんない。
>そうするとコンパイル時に「何か」を決定できないので暗黙の引数を追加できない。
・コンパイル時に「何か」を決定することと、暗黙の引数を追加することに、どういう関係がありますか?
・コンパイル時ではなく実行時に決定するのではだめでしょうか。
・暗黙の引数を、追加するのではなく最初から追加しておけばいいように思うけど、それだとまずいでしょうか。
だれか時間のある人教えてください!
オナニー言語やね
低脳はPHPがRubyをやればいいよね
またRuby厨が荒らしてるのか まったく・・・
>>698 デコレータは関数を関数に変換するもの(最近はクラスもできるが)。
self必須にすることで関数とメソッドはほぼ互換になる
>foo.meth(arg) == C.meth(foo, arg)
ここで、C.methは関数扱いできる。
メソッドが関数として扱えるので、
メソッドのデコレータは関数のデコレータを作るのと同じやり方でできる。
逆にself省略できるようにしたらメソッドのデコレータを作るのが難しくなると思う。
>>712 若干の冗長性が柔軟性を生むいい例だね。
Pythonは仕様の簡潔性が特徴のスクリプト言語なわけで。
(予約語や特殊な文法が少ない)
>>712 厳密に言うと、デコレータの出力は関数とは限らないよね。
@property
def foo(self):...
みたいにすると、 foo は foo.__get__() というメソッドが定義されたオブジェクトになる。
>>714 いや、まぁそこら辺は厳密性を犠牲にして説明しやすくしたということで(ry
codezineの翻訳はクソ
reportlabでpdfを作ると 同じものを作っても作るたびに 出来るファイルのサイズが違うのですが こんなもんなのでしょうか? pdfデータに日時が入ってるのかな
帝国ピストンはMLで質問しろよ
動的に渡す関数(メソッド内で関数を定義して戻り値で返すような)って、 自由変数の束縛はいったいどうやるんだ? そういうことをやりたいときはグローバル変数使うかクラス使うかしかないんだろうか……。
やってからいえ 関数の呼び出し->local名前空間の生成->関数オブジェクト生成->local名前空間の解放->関数オブジェクト返る 関数オブジェクトから参照してる変数は上位の名前空間が消えてもクロージャな参照が残ってるからGCに回収されずに使える
>>やってからいえ その言葉をそのまま返そう。 外側のメソッド[A]で定義した関数内関数[B]で[A]のローカル変数aを[B]内で使用しようとしたとき、 [B]内でそのままaと書くと未定義参照エラーになる。 かといって[B]の引数で与えても値渡しなのでa自体を書き換えることはできないよね。
python3 nonlocal
>>> def fa(): ... a=3 ... def fb(): ... a=5 ... print a ... print a ... return fb ... >>> b=fa() 3 >>> b() 5
nonlocalをpython2.xで模倣するときは ・L=[x]みたいにリストにして、L[0]に対する操作にする ・f.x = xのように関数の属性にして、f.xに対する操作にする
>>725 >>> def fa():
... a=3
... def fb():
... a+=5
... print a
... print a
... return fb
...
>>> b=fa()
3
>>> b()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 4, in fb
UnboundLocalError: local variable 'a' referenced before assignment
>>>
>>726 >>> def fa():
... a=3
... def fb():
... fa.a+=5
... print fa.a
... print a
... return fb
...
>>> b=fa()
3
>>> b()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 4, in fb
AttributeError: 'function' object has no attribute 'a'
>>728-729 >>> def fa():
... fa.a=3
... def fb():
... fa.a+=5
... print fa.a
... print fa.a
... return fb
...
>>> b=fa()
3
>>> b()
8
>>>
pprintを使ってて、読めなくなった日本語をそのまま、読めるようにしたい。 >>> k=dict(hoge=u"欝") >>> k {'hoge': u'\u6b1d'} >>> r=pprint.pformat(k) >>> r "{'hoge': u'\\u6b1d'}" >>> これを、pprintのフォーマットを保持したまま "{'hoge': u'欝'}" みたいに人が読める形に、出来ませんか?
733 :
732 :2009/09/09(水) 03:22:29
自己レス 一旦unicode化して、"unicode-escape"を使えば行けた。 #!/usr/bin/env python # -*- coding:utf-8 -*- import pprint d=dict(hoge=u'欝') k=pprint.pformat(d) print k >>>{'hoge': u'\u6b1d'} u=unicode(k,'utf-8') print u.decode('unicode-escape') >>>{'hoge': u'欝'} 配列の中に入った日本語とかも効くようだ。
関係ないけど /usr/bin/env を使うのは環境依存でハマる事があるからあまり良くない気が。
735 :
デフォルトの名無しさん :2009/09/09(水) 12:17:23
環境依存ではまらないように設けた仕組みだろうに、 環境依存で動かないなんて本末転倒だな。
> /usr/bin/env を使うのは環境依存でハマる 具体的に詳しく。 /usr/bin/env が無くて /bin/env とか、 PATHの設定に問題が、とか?
/usr/local/bin/env
>>734 おれも詳しく知りたい。
#!/usr/bin/python
#!/usr/local/bin/python
はよくなくて
#!/usr/bin/env python
とするほうがいいとずっと思ってたんだけど、違うの?
734は相当劣悪な環境を使っているに違いない。激しく同情する。
レンタルサーバで使えない
HOME以下に自分でビルドしたPythonをインストールしてパスを通してるとき、 /usr/bin/meld とかディストリビューションのアプリが #!/usr/bin/env 使ってて 軒並み動かなくなったなぁ。
742 :
デフォルトの名無しさん :2009/09/09(水) 15:49:53
ターミナルから起動して使うと、なぜか出力が最後にまとめて行われてしまいます。 バッファリング周りを自分なりに調べて試してみたのですが、改善しません。 教えていただけるとうれしいです _ _ #!/usr/bin/env python -u import sys for line in sys.stdin: line = line.rstrip() if line: print "true" else: print "false" sys.stdout.flush()
>>741 どうでもいいところでハマってそれを自慢したがるド変態のM夫君っているものですね。
質問の本題とは関係ないのだが、 > #!/usr/bin/env python -u shebang で複数の引数を渡そうとした場合の動作は移植性がない。
>>743 でもこの場合は、単に君が、どうでもいいところで「こいつは自慢してるんだろう」と誤読する
キチガイなだけでは?
#!/usr/bin/python にすればいいじゃん?
python2.6.2/python3.1.1 ○バッファされない ×バッファされる × py2 sys.stdin ○ py2 sys.iter(stdin.readline, None) ○ py3 sys.stdin ○ py3 sys.iter(stdin.readline, None) ファイルのf.next()は効率のために先読みするんだけど、それが原因かな。 py3でどこが変更されたかはよくわからなかった
748 :
747 :2009/09/09(水) 17:07:36
訂正。 × py2 sys.stdin ○ py2 iter(sys.stdin.readline, None) ○ py3 sys.stdin ○ py3 iter(sys.stdin.readline, None)
出力がバッファリングされてるんじゃなくて、 > for line in sys.stdin: これのために、入力が終わるまで実行が止まってる。 for line in iter(sys.stdin.readline, ""): こうする。
ああpy3kのf.__next__は単純にf.readlineを呼び出すだけみたいだ。 ドキュメントには先読みすると書いてあるけど、たぶんこれはドキュメントのバグ。
751 :
742 :2009/09/09(水) 17:36:41
>>744 ありがとうございます、勉強になります!
>>747-750 ありがとうございます、出来ました!
バッファリングの問題じゃなかったんですね、お恥ずかしい。
>>745 変態のくせにプライドだけ高いなんてどんだけひとりぼっち君。
>>752 今度の設定はプライドか。ってか俺は
>>741 ではないし。
なんか君のキャラ設定って、鏡に映った君自身っぽい。
>>753 >なんか君のキャラ設定って、鏡に映った君自身っぽい。
自分のキャラ設定は鏡に映った自分自身という、再帰的新感覚キャラ「なんか君」
情けないようで逞しくもある
俺はUnix系の環境持ってないから分からんけど #!python だとダメなの?
堂々巡り開始
emacsでpython編集してたら、なんか嫌になった netbeansにしようかなあ
>>760 えーと、どゆこと?
パスが必須ってこと?
それとも、そういう意味に解釈されてしまうってこと?
>>761 バイナリをテキストエディタで編集しちゃダメですよ。
slimeだったらタグファイル作らなくてもタグジャンプしてくれたり、 何も設定しないデフォルトでほとんど何でもできちゃうのに python.elが貧弱すぎる
うちのCentOSのPythonは /usr/bin/python 2.3 (プレインストール) /usr/local/bin/python 2.5 (自分でコンパイル) が入ってる ちなみに /usr/bin/python を 2.5 で上書きしてしまうと yum が動かなくなるのでこうしてる 自分の shell の path は /usr/local/bin/python が先なので #!/usr/bin/env python と書いても大丈夫なような気がするけど 自前のスクリプトは #!/usr/local/bin/python で作ってるよ
stow使ってる
こども? 近藤さん?
770 :
デフォルトの名無しさん :2009/09/11(金) 11:35:07
Python 3 シリーズを将来使うために 今 2.3 とかで動かしているスクリプトを メンテのたびに 2.6 に移し始めてます. 以降のためのガイドライン(from future importとか) のページってありませんか? 出来れば日本語だとうれしい・・
>>770 >出来れば日本語だとうれしい・・
Rubyなら日本語の情報が盛りだくさん!
773 :
デフォルトの名無しさん :2009/09/11(金) 13:21:08
eggファイルってWindowsのPythonでも使える?
774 :
デフォルトの名無しさん :2009/09/11(金) 16:07:04
つかえましたすまそ
eggファイルといえば、site-packageにはいったeggが 展開もされずにそのまま動いてて、どうしてコレで動くんだろ? って思ったことはあるな。
Pythonのimportは拡張することが出来て、zipファイルからimportする拡張がデフォルトで入っている。 非圧縮zipだとファイルシステムからstatする時間が要らなくなるので通常ファイルのモジュールよりも 高速にロードできる。
777
Windows版2.5.1で試したことあるが python.exeとpython25.dllだけあれば 後は全部zipに入れても動くよw zipの中身適当に絞り込んだやつと、exeとdllを、未だUSBに入れてあるわ〜
779 :
デフォルトの名無しさん :2009/09/11(金) 18:38:46
Python でメモリがつがつ使うプログラム書くと, 当然ながら仮想メモリまで食いつぶしていきますよね? せめて自分がどれくらいメモリを使っているかくらいは 知りたいのですが,OSに依存しないメモリ使用量の 取得方法ってあるでしょうか? メモリ上にデータをキャッシュするようなアプリを書いていて 最終的にはスラッシングが起こりだしたらキャッシュの量を 減らすというような処理を行いたいと思っています. 最終的には.
>>OSに依存しないメモリ使用量の取得方法 ざっと探してみたけどないので君が作るといい
781 :
デフォルトの名無しさん :2009/09/11(金) 20:26:46
easy_install は便利だけど同じパッケージの新しいバージョンをインストールしても 上書きしていくだけなんだよね?古いバージョンのアンインストールをきれいにやってから 新しいバージョンのパッケージをインストールしてくれないものだろうか?
782 :
デフォルトの名無しさん :2009/09/11(金) 20:32:06
俺もピートン勉強すっかな
>>772 日本語を入力するまでは満足してました。
>>779 どれぐらいのメモリを使ったらスラッシングが始まるのかがOSに依存すると思うのですが。
>>784 それは別にOS依存しててもいいのでは?
大事なのはスラッシングが起こったことが検知できるかどうかでしょ。
ああいえばじょうゆう。 んなことできる訳ねーダロカス
むしろスラッシングが起こったことをアプリ側に分からないようにするのが近代的なOS設計だと思うんだが。 それに逆らってどうする。
>>787 スラッシングがおこってもプロセスが実行しつづけられるようにするのは近代的なOSの設計だといえるけど、
スラッシングが起こったことを検出できない、検出させないのは、別に近代的でもなんでもない。
検出できるような設計にしたら近代的でなくなるのか?そんなわけない。
今年はじょうゆう14年か
>>788 で? Pythonのプログラムが書きにくいからってOSの開発者に文句を言うつもりか?
>>788 は気にくわないことすべてに文句つけそうで怖い。
788の方がまっとうな考えだな。 にちゃんは半可通が多数決で正しい答を出すから恐いw
>>790 間違いを指摘されたからといって怒るなよ。
なんで
> Pythonのプログラムが書きにくいからってOSの開発者に文句を言うつもりか?
ということになるんだ?意味わかんねー。
別に間違っててもいいじゃんか。指摘されたら修正すればいいだけ。
間違いを認めようとせず、ごまかすためにキレるほうが格好悪いぞ。
まぁ、かと言って、全く非の打ち所のない言語もまだないからな。 その中でPythonはかなり使いやすい部類だと思う。
摩訶不思議なコードを書いて俺SUGEEEしてる人が少ないのが良い
つか当初の質問のレベルが低すぎるだけじゃね。
>>795 摩訶不思議なコードを書くのは
そうでもしないと今流行りの機能が実装できない(C++の謎なテンプレートとか)か、
変なコードのほうが高速だったり(末尾再帰とか)
ミスが起こりにくかったりする(if(0==x){〜とか)
とか、そんな事情がある。
Pythonはそもそもそういうのが起こらないように設計されてるからなー
最初はメモリ使用量とスラッシングの話だったのに 気づかないまま別の方向に向かっているおまいらがすき
zope.interfaceが"要らない"ことに気付くまで1年かかった
800 :
デフォルトの名無しさん :2009/09/12(土) 17:07:43
Windows で IDLE を起動してただ exit() と打つと Python IDLE "The program is still running! Do you want to kill it? っていうダイアログボックスがでてくるんだけどこれはバグ? Windows Vista Business 上で Python 2.5, 2.6, 3.1 で確認しました
ばかじゃないのおまえ
>>792 x 半可通が多数決で正しい答を出す
o 半可通が多数決で出した答を正しいと思い込む
>>792 の意図するところはこっちだろう
o 半可通が多数決で「正しい」答を出す
何をもってしてバグとするんだ?
805 :
デフォルトの名無しさん :2009/09/12(土) 20:04:53
print __builtins__ の結果と import __main__ print __main__.__builtins__ の結果が違うのはなぜでしょうか? たとえば __builtins__.__dict__ はありますが __main__.__builtins__.__dict__ はありません
807 :
デフォルトの名無しさん :2009/09/12(土) 20:32:48
>>806 アドバイスありがとうございます
CPythonのコードはまだ読んでいませんがIDLEのコードを読んでいます。
lib\idlelib\AutoComple.py の中に
import __main__
中略
namespace = __main__.__dict__.copy()
namespace.update(__main__.__builtins__.__dict__)
というコードがあって、__main__.__builtins__.__dict__
の意味が分からず悩んでいます。
808 :
805=807 :2009/09/12(土) 20:52:19
なんかあさってだな
そういう意味ではない
python2.6でpy2exeを使いmechanizeをimportしたスクリプトをexe化したいのですが なにやら色んな物がないといわれます。で色んなもを入れたり、パス変更したりして 対応したのですが dummy.Processというモジュールだけ見つかりません。 (python2.6/Lib/multipurocessingの中にprocess.pyがあったので/Lib/dummy/process.py と置いてみましたがダメでした) easy_installを試しましたがダメでした。 対処法もしくはdummy.Processがどこにあるかわかる方いますか?
/Lib/dummy/process.py -> /Lib/dummy/Process.py
from multiprocessing.dummy import Process
815 :
812 :2009/09/13(日) 09:27:34
>>813 それでやってみましたがダメでした
>>814 自作スクリプト内ではdummy.processをimportしておらず、mechanize内でもimportされていなかったので
どのスクリプトのimportをそのように書き換えるのかわかりません
で、なぜかLib/multiprocessing/dummy/processとするとdummy.processは通りました
しかし、また新たにmultiprocessingが必要(?)でて
easy_installすると
こんどはmultiprocessing._mmap25とwin32processが必要といわれ。。。
なんだかきりがないように感じられたので諦めます
すいませんでした
なんでPythonはRubyの文法を盗んでるのでしょうか
具体例を挙げてください。
defなんてそうだよね
Rubyのが先に世に出たのに後からでたPythonが元祖語ってるという皮肉
>>819 アホか。Pythonの初出が1991年でRubyが1993年だろ。調べてから言え。
それから、RubyとPythonがどっちが優れてるかなんてフレームの元なのでやめたほうがいい。
用途によって使いやすいほうを使えば十分。
>>818 いまだとBooとかScalaとかあるけど
PythonやRubyの前って関数定義にdef使ってるのってないのかな
Assembly BASIC C ... O Python Q Ruby S ... Z
スルー
procedure hogehoge function hogehoge
Python2.5.2ですが、ユニコードって内部的には一律一文字2バイトで表現されていると思って良いのでしょうか? C拡張でユニコードを扱う関数を作りたいんですが、Cでどのようにユニコード文字のバイト区切りを判断すれば良いのか分からなくて。
ユニコード文字のバイト区切り?
たぶん、Pythonでの扱い以前にUnicodeの基礎知識が不足していると思われ
欠けている部分があるので分からないわけですが、 基本知識はあると思ってるのですが... そもそもUTF-8なんて話してません、ユニコードそのものの話です。 pythonにおいてunicode()で生成したユニコードのインスタンスをCレベルで操作したいという話です。 初期のUnicodeが16ビット固定長だった事は知っています。 しかし現在は21ビットにまで拡張されています。 ということは16ビットでは不足するケースがあるわけで、 原理的に固定長決め打ちというわけにはいかないはずです。 また、pythonのレベルからはunicode文字列の実バイト数を知るメソッドが見付けられませんでした。
あ、
>>832 は、コードポイントをそのまま二進数で表現していると推測しています。
また、BMPだけならば16ビット固定でも良いのでしょうが、 Pythonのunicodeobject.hやunicodectype.cには UCS2、UCS4という文字列が両方とも含まれているので、 16ビット固定なのか32ビット固定なのか良く分かりません。
2バイト固定や4バイト固定と知っているならそうと、どちらかなら判別方法を教えてくれればいいのに、わざわざUTF-8を持ち出して混乱させようとするなんて、ほんとににちゃんねるってのは根性悪いですね。 さようなら。
さようなら
>>> u=u'日本語' >>> u u'\u65e5\u672c\u8a9e' >>> s=u.str() Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'unicode' object has no attribute 'str' >>> s=str(u) Traceback (most recent call last): File "<stdin>", line 1, in <module> UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128) >>> l=u.split() >>> l [u'\u65e5\u672c\u8a9e'] >>> l=u.split(u'') Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: empty separator uを s='\x65\xe5\x67\x2c\x8a\x9e' または l=[0x65,0xe5,0x67,0x2c,0x8a,0x9e] というバイト列にしたいのですが どのような方法があるでしょうか?
>>> u=u'日本語' >>> u u'\u65e5\u672c\u8a9e' >>> l = [] >>> for i in u: ... n = ord(i) ... l.extend((n >> 8, n & 0xff)) ... >>> l [101, 229, 103, 44, 138, 158] >>> map(hex, l) ['0x65', '0xe5', '0x67', '0x2c', '0x8a', '0x9e']
>>838 thx!
>>> u=u'日本語'
>>> map(hex, reduce(lambda x, y: x + [ord(y) >> 8, ord(y) & 0xff], u, []))
['0x65', '0xe5', '0x67', '0x2c', '0x8a', '0x9e']
おいおい。 sys.setdefaultencoding()で文字コードを再設定してやるのが先だろ? むちゃくちゃやってやがるな……。
もう手遅れかもしれんが、Pythonとunicodeについて。 Pythonのビルドオプションで、unicodeはUTF-16とUCS4が選択できる。 デフォルトではUTF-16になっていて、これはWindowsでUnicodeファイル名を そのまま扱えたり、.NET や JVM のUTF-16文字列と互換性があったりと、 相互運用性が求められるときに便利。 でも、一文字を1カウントで扱いたいという要求もよくあり、 .NET/JVM/WindowsAPI などとの 相互運用性が求められない分野ではUCS4が使われることもある。 たとえばFedoraやUbuntuなんかのPythonはUCS4でビルドされている。
import sys sys.argv.append("-n") from idlelib.PyShell import main main() スクリプトの最後にこう書けばIDLEのインターフェイスを 立ち上げることができるんだけど,その時 Tk の メニューを隠すとかできないもんかなぁ. PyShell のコード自体に手を入れることはしたくない.
しかし、ほんとユニコードってうんこ仕様だな。 まさに誰得だよ、これ。
>>845 まあ欠点も色々あるが、結局Unicodeほど便利な文字コードも無いからな。
特にWebアプリはUTF-8で統一してしまうのが一番簡単。
UTF-8はBOMをつけてはいけないという仕様にしてくれてれば殆ど困らなかったのになぁ。
むしろ日本人ならBOMに理解を示そうよ。 一番BOMの恩恵受けるのは日本なんだし。
UTF-16ならBELEあるからBOMの必要性がわかるが、 なんでUTF-8にBOMが必要なんだ? いやとあるスレで、SJISやEUCテキストとの識別を容易にするために BOM付きUTF-8を提案したのは俺だったりするのだが。
BOMはトラブルの元って認識なんだが。
Pythonやっぱつかえねーなー
BOMはPython関係ねー
やっぱRubyだなー
UTF-8でソース書くときは いつも付けてるが。
>>850 BOM のせいで shebang がどうさしないとか
PythonやPerl、Lispはやってて面白いし使える言語だがRubyだけは使いたくないな 存在価値も無いし
Rubyしかありえねえだろ。日本だぞここは
俺にとって四国は海外なので無問題。
四国と何の関係があるの?
860 :
858 :2009/09/15(火) 04:05:24
松江って四国にあると勘違いしちゃった。テヘ
松山と間違えたわけか
>>843 ありがとうございます、助かります。
ヘッダやライブラリの何かの変数でどちらか判定できそうかと思ったんですが、
そこまでは分かりませんでした。
でも、debian sid x86_64ですが、UCS2っぽいです。
UCS2だとwchar_tを使っているみたいなのでなんとかなりそうです。
ctypes.c_wchar_pも使えそう。
withステートメントの意義が分からない
スレッドの同期オブジェクトをwithで使えるクラスを書いておくと、めーっちゃ便利。 def something(self): 通常の処理 with SynqObj(self.lock): クリティカルセクションな作業 通常の処理
>>862 関係ないかもしれないけど gcc で wchar_t って UCS-4 相当というか4バイトじゃなかったっけ?
>>862 pyconfig.hに
Py_UNICODE_SIZEってのがある
あれ、with lock: ... って書けるよね。threadingでもthreadでも
870 :
デフォルトの名無しさん :2009/09/15(火) 12:00:28
with 構文の as は何のため?
reStructuredTextをはがしてPlain Textにするモジュールってありますか?
>>869 ああ、864は複数のスレッドの呼び分けをログで確認するためにラッパーを介しているだけだから。キニスンナ。
普通はlockオブジェクトを直にwith呼び出ししてかまわない。
>>870 Python 2.6のリリースノート読め!
>>873 サンキュー。
でもドキュメント無いからソースよめってことね…。
shebangのこと忘れてたよ
rst2xxx -> xxx2txt みたいな経路でいけないかな?
Pyhton3.0以降の言語仕様を日本語で解説してるサイトや書籍ってある? 3.0以降の資料が少なすぎて、勉強がさっぱり進まない やはり英語を覚えるのが先なのか・・・
腐るほどあるような気が Python3.0でググるよりPython3000のほうが多いかも
オライリーの第3版初めてのPythonの中でちょっとだけ触れられている
>>878 うーん、一部を解説したものしか見つからない
できたら3.1までの仕様変更点を全て網羅している
解説が欲しいんだけど
>>880 Python 3.0/3.1のリリースノートを読むのが結局一番早いよ。
Pythonはこの辺とても丁寧。
ところで、
IronPythonに向いた軽量なO/Rマッパーが見当たらなかったので
『100行ちょっとのやる気のないPython製O/Rマッパー』をベースに
実装してみたんだけど、試してみたい人います?
一応、Python/IronPython両用です。
>>866 確かにありました。
4になっていました。
>>865 sizeofで確認したところ確かに4バイトでした。
pyconfig.hの記述と一致してます。
UCS2って2バイトだと思ってましたが、
実装上はwchar_tで表現するので4バイトになってるってことなんでしょうか。
UCS4は元が4バイトですよね。
とりあえずPythonではunicode一文字は4バイトと思って良いのかな。
ほんとunicodeとその周辺のエンコーディングはよく分かりません。
pyconfig.hはautoconfなんかで出力してんじゃないの
>>886 あー、なるほど・・・
とりあえずLinux(gcc)ではi686でもamd64でもwchar_tがあり、
>>865 さんの指摘どおり両方とも4バイトでした。
UCS4の場合にはどちらもwchar_tで4バイトですが、
UCS2(UTF-16)の場合にはwchar_tと不一致なので
unsigned shortが使われるようです。
これも両方共2バイトでした。
ということで、Linux(gcc)ではUCS2ならばunsigned shortで2バイト、
UCS4ならばwchar_tで4バイトということですね。
最近のLinuxディストリビューションではUCS4が多いらしいです。
Debian sidでもそうです。
Py_UNICODEを使った方が良いのだと思いますが、
Cで書く部分はできるだけPython独立にしておいて
ctypesからそれを利用したいので、
とりあえずwchar_tを使うことにします。
でもimmutableだからなのか、unicodeをそのまま渡して
中身を変更するような事はすぐにはできないっぽいです。
create_unicode_bufferを使うしかなさそうです。
boostPython
>>881 プププ、クソ本の著者乙(wwWwwwwWWWwwwWwWwww
>>884 ,889
いや、当の著者の再配布許可が出たところなんだけど。
別に信じないならいいけどさ。
884と889は低脳。 みんぱいの人に嫉妬するクソ本作者。
またruby房の嫌がらせか
大抵の謎の書き込みは >892 で納得できちゃうね
Pythonスレはスルー力が有って良いと思う
895 :
デフォルトの名無しさん :2009/09/16(水) 10:48:56
何か書こうと思ったんだけど忘れた
逃げるなよ。
逃げるが勝ちだな
逃げちゃだめだ
>>888 ひょっとしてctypesよりboost.pythonの方が良いっていう意味のレスですか?
そうでないとしても、それをきっかけにしてboost.pythonも検討してみました。
boost.pythonとしては、まだunicode文字列を引数としてどう受け渡すのか
方式が定まってないっぽいんですが、とりあえずPyObject* opとして受け取って
PyUnicode_AS_DATA(op)でconst char*として実際のデータバッファのアドレスを取り出して、
それをwchar_t*にキャストして自作のC++関数などに渡せば良さそうです。
C++ではwchar_t*として扱うPython独立なプログラムとして作成して、
引数を渡すところだけはこの変換をするために一枚かぶせる感じです。
unicodeの実装がwchar_tではない場合には困るんすが、C++だし、
とりあえずテンプレート使っておけば後々それほど困らないでしょうし。
これでunicode文字列をC++の中で書き換えることもできました。
boost.pythonって、ほんとに楽にC++とやりとりできますね。
俺が逃げるまで逃げるなよ
902 :
デフォルトの名無しさん :2009/09/17(木) 06:49:55
はやくにげてえーーーー
boost.python前提になると他の言語からも使えるdllにならない
904 :
デフォルトの名無しさん :2009/09/17(木) 11:28:50
Eclipse で Java 開発環境と mingw による C言語での開発 環境をスタンドアロンで持ち歩いてるんですが, PyDev と Python 実行環境もそんなことができればなぁ と思ってます.Windows 環境です. Windows の Python はレジストリに何か登録しているよう なんで,そういうポータブルなことは難しいでしょうか?
>>903 まずはC++で(Pythonその他から)独立したクラスを作っておけばいいんじゃないですか?
907 :
デフォルトの名無しさん :2009/09/17(木) 21:24:45
unittest.TextTestRunner で複数のテストを次々と実行するトキ, 最初に発生した例外でストップしてほしいんですが,できますか?
emacsのpython-mode.elで、ユニコードリテラル中にエスケープせずに文字を書くのと、 エスケープコードを書くのとで、py-execute-bufferの際に別物にされてしまう。 (素のバイトストリング扱いになるらしい) C-x C-f foo.py #!/usr/bin/python # -*- mode: python-mode; coding: utf-8 -*- print u'あ' == u'\u3042' C-c C-c => False $ python foo.py True どうしたものか。
sys.getdefaultencoding()
910 :
908 :2009/09/19(土) 04:44:02
sys.getdefaultencoding() は環境によらず ascii を返すので原因は違うところにあるようだ。 ちなみに locale.getdefaultlocale() はいつでも ('en_US', 'UTF8') が帰る。 C-c ! で ipython を出しておいて C-c C-cすれば普通にターミナルからやるのと同じ挙動に なったので、それでいいことにしたわ。
911 :
デフォルトの名無しさん :2009/09/19(土) 09:48:33
循環参照してしまうとそのオブジェクトはプロセスの 終了まで解放されない? class ClassA(object): def __init__(self): import sys sys.stderr.write("ClassA.__init__(...) %s\n" % str(self)) def __del__(self): import sys sys.stderr.write("ClassA.__del__(...) %s\n" % str(self)) class ClassC(object): def __init__(self): import sys sys.stderr.write("ClassC.__init__(...) %s\n" % str(self)) self.a1 = ClassA() self.a2 = ClassA() self.a1.a2 = self.a2 self.a2.a1 = self.a1 def __del__(self): import sys sys.stderr.write("ClassC.__del__(...) %s\n" % str(self)) これで ClassC のインスタンスを作ると, ClassA.__del__ は永遠に呼び出されない. せめてプロセスの終了時には呼び出されると思ってた.
ふうむ,ガベージコレクタが __del__ の 呼び出し順を決定できないからか. そもそもデストラクタがあるのに循環参照が 起きるような設計をするなということだよな.
>>908 C-x C-f foo.py
#!/usr/bin/python
# -*- mode: python-mode; coding: utf-8 -*-
print u'あ' == u'\u3042', hex(ord(u'あ')), u'あ'.encode('utf8')
C-c C-c => False (どうなりますか?)
914 :
908 :2009/09/19(土) 17:52:16
>>913 C-c C-c => False 0x20
と出ます。u'あ'.encode('utf8') はエラーも出さずに飲み込まれてしまっているみたい。ちなみに
print u'あ’ -> なにも表示されない、
print u'\u3042' -> UnicodeEncodeError: 'ascii' codec can't encode character u'\u3042'...
となる。あらかじめC-c ! でipythonのバッファを出しておけばこれらの問題は起きない。
>>911 そういうのって明示的に循環参照削除するメソッド作って呼び出すもんじゃないの?
と最近Pythonに興味もったPerl使いが言ってみる。
Perlだと参照を弱める(リファレンスカウント減らす)方法あるけど、
Pythonだと似たような方法有るのかな。
del
boost だと weak_ref とかの弱参照なスマートポインタがあるよな
Pythonにもweak_refあるけど、やっぱり明示的に参照切るほうが多いかな。 weak_refは余計なコストかかるし。
infopile思ったより本格的だった 朝から使ってたけど普通に常用メーラで行けそう
C++は元々が自前でメモリ管理しなきゃいけないから余計にああいうの欲しくなるけど 最低限で済むPythonではやはり最低限で良いと思うやね
>>> L=[] >>> L[:] [] >>> L[:]=[1,2,3] >>> L [1, 2, 3] リストの初期化がなんか違和感が… 納得できん
2つのクラス同士でクラスオブジェクト同士を相互参照したい場合、 class Topic: child = Reply class Reply: parent = Topic なんて書いてたら、当然2行目で未定義識別子の参照でエラーになる。 これって、2つの定義を相互参照なしに定義した後で、classmethodを明示的に呼び出して 動的に結びつけるしか方法がないよね? 用途としては自作の軽量ORMライブラリを作ってるところで、 オブジェクト化したテーブル同士の親子関係を表現しようとしている。 で、例えばTopicから連結されてるReplyのインスタンスが欲しいので何らかの形で事前に教えておく必要がある、と。
class Topic: pass class Reply: pass Topic.child = Reply Reply.parent = Topic
>>924 それ、初期化じゃなくて代入だから・・・
?
929 :
デフォルトの名無しさん :2009/09/21(月) 01:38:05
930 :
デフォルトの名無しさん :2009/09/21(月) 01:40:50
class Topic: children = [] class Reply: parent = Topic Topic.children.append(Reply)
>>924 は何に対して違和感を感じているんだろう
配列が伸び縮みすることになのか
要素の範囲を指定して代入することになのか
L[:] ってなんかきんもー、なのか
>>> l=[9,8,7,6] >>> l [9, 8, 7, 6] <- 普通 >>> l[1:]=[3,4,5] >>> l [9, 3, 4, 5] <- 普通 >>> l[1:]=[2,1] >>> l [9, 2, 1] <- きもい >>> l[:]=0 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: can only assign an iterable <- 微妙 >>> l[:]=[0,0] >>> l [0, 0] <- きもい
[1:]=の結果に違和感覚えないのに[:]の結果に違和感覚える理由が解らん
>>933 スライスの代入で左辺と右辺のリストの要素数が
一致していなくても構わない(右辺にあわせて伸び縮みする)のが気持ち悪いってこと?
だったらリンクリストでも勉強すれば違和感なくなるんじゃないかね
>>934 >>> l[1:]=[2,1]
>>> l
[9, 2, 1] <- きもい
だから入門書読めよ低脳。
バカだなあ。
つーか、それがキモイならスライスの意味ないだろとw
>>> l[1:]=[3,4,5] >>> l [9, 3, 4, 5] <- 普通 >>> l[1:]=[2,1] >>> l [9, 2, 1] <- きもい このきもいと普通の違いがわからん 要素が1個減ったらきもい?何か見落としてるんだろうか・・・
C言語の配列かなんかと勘違いしてるんじゃね? 抽象度の高い操作を理解できないとか
スライスの代入ってあんまりやんないからどうでもいいや
python の配列って中身はリストなんですか? と思ったら L=[] で L に代入してるな orz
変数名がL,M,Nではじまる場合にはリストなんだよ。
>>941 あぁ。3要素のときはreplaceに見えるからきもくないのか
よくわかったありがとう
>>943 質問の意味がよくわからないが、
Pythonのリストはメモリ上の連続領域を利用した配列型のリスト
(C++のstd::vectorやJavaのArrayListの類)
いわゆる連結リストではないので途中に挿入する操作には弱い。
>>942 直感的に思えないから、俺もあまり使わないな。
冗長でも、新しいリストを作ってしまうな
実装は連続メモリ型かも知れんが 表向きリストのような動作をするように設計されてんだろうな
from VideoCapture import Device cam = Device() cam.saveSnapshot('image.jpg')
python2.5がsnow leopardでコンパイルできん・・・ だれか助けて
いやです
誰か、wxPythonの開発にオススメのIDEの候補があったら教えてほしい。 今まで試したのは boa-constructorとwxGladeとPyCrust 普段visual studioとかXCode使ってるんで上で列挙した環境は微妙すぎて 使う気がおきない
XRCed
ついでにtkのGUIデザイナとかお願いします
957 :
デフォルトの名無しさん :2009/09/26(土) 08:51:59
age ume
hage
Pythonレベルでオブジェクトのリファレンスカウントを調べる方法はありますか。
だよもん
pywin32の日本語ドキュメントとかないですか? ヘルプは役に立ちません
964 :
デフォルトの名無しさん :2009/09/29(火) 19:59:25
ちょっと質問なんだけど E.coliの和名と属名を答えたいんだけど どう書けばいいかな。
>>963 Cとかでwin32api使える人向けだろうアレは
>>964 大腸菌に詳しい人に訊いてください
ところで,あるモジュール ModuleA をインポート
使用としていて,ModuleA.py が自分と同じディレクトリにあれば
import ModuleA とできますよね?
同じモジュールがフルパス(?)で
import a.b.c.ModuleA としてもインポートできるとき,
この二つは異なるモジュールとして扱われるのでしょうか?
>>966 同じモジュールなら同じモジュール。
print(ModuleA is a.b.c.ModuleA)
として確かめてみたら?
968 :
デフォルトの名無しさん :2009/09/30(水) 07:55:09
import AAA.ModuleA import ModuleA a1 = AAA.ModuleA.ClassA() assert isinstance(a1, AAA.ModuleA.ClassA) #OK assert isinstance(a1, ModuleA.ClassA) #NG assert AAA.ModuleA.ClassA is ModuleA.ClassA #NG ちなみに a1 = AAA.ModuleA.ClassA() a2 = ModuleA.ClassA() print type(a1) → <class 'AAA.ModuleA.ClassA'> print type(a2) → <class 'ModuleA.ClassA'>
969 :
デフォルトの名無しさん :2009/09/30(水) 07:57:58
src/AAA/ModuleA src/AAA/ModuleB となっていて PYTHONPATH には src/ が通っています. 上のコードは ModuleB から ModuleA を使っています. import AAA.ModuleA でインポートされるモジュールと import ModuleA でインポートされるモジュールは ファイルは同じですが異なるものとして扱われているようなのですが・・
sys.path.append('a.b.c') import ModuleA
>>969 で?
自分の書いたモジュールをカレントディレクトリでアクセスしようが
特定の上位ディレクトリからアクセスしようが自分の責任なわけで、
両方の方法でアクセスしてるなら自分で最後まで責任を取るべきなんだが。
>>968 は今までしらんかった。さんくす。 by 967
>>969 どっちかに統一して使いましょう、ということなんだろうね
root権限のないパソコンでpythonのパッケージはどのディレクトリにいれてますか? ~/lib/site-packages とか?
root権限のない場合はでvirtualenvとpipを使ってる
s/はで/は/
/usr/bin/python /usr/lib/python2.6 /usr/lib/python2.6/site-packages ↓ /home/hoge/bin/python /home/hoge/lib/python2.6 /home/hoge/lib/python2.6/site-packages
977 :
デフォルトの名無しさん :2009/10/03(土) 01:33:05
py2exeでexeにした後は なにか適当なインストーラでパッケージング? python流のなにか方法がある?
979 :
デフォルトの名無しさん :2009/10/03(土) 09:58:05
GUIなアプリケーションは wxPythonがいいのかgtkがいいのか悩む Tkはまぁ最初から入ってるしIDLEでも使ってるから 無難なのかもしれないけどなんか古臭い見た目が
っPyQt
色んなPythonアプリで使われてるからwxがいいんじゃない
>>979 それはなんという偏見!
Tcl/Tkでは各OSの最新の見た目に合わせられるよう対応が追加されてる。
Python/TKが古いだけ。
対応? 知らんがな。
Turtleとか地味に改良してるくせに 中の人はGUIやらせたくないんだろうか
別ブランチでttkの開発されてるよ。 メインストリームに統合されるのはいつになるかわからないけど、早ければPython 2.7に でも載るかもね。
別ブランチでttkの開発されてるとか、そういう情報はどこで入手すればいいの? 公式のML購読すればいいの?
750 デフォルトの名無しさん [sage] Date:2009/10/02(金) 02:35:44 ID: Be:
質問です。
環境はvine5.0 Python 2.5.4 です。
>>> from turtle import *
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named turtle
と出ました。
turtleが入ってないということでしょうか?
またその場合どうすればいいのでしょうか?
どうかご教授お願いします。
751 デフォルトの名無しさん [sage] Date:2009/10/02(金) 04:17:28 ID: Be:
Tkinterが入ってないんじゃないか
vine tkinter でぐぐってみて
752 デフォルトの名無しさん [sage] Date:2009/10/02(金) 14:49:59 ID: Be:
>>751 できました!
ありがとうございました!
Windowsの方はPythonが2.6になった時 見た目がネイティブ寄りに変更になった覚えがあるのだが。
991 :
デフォルトの名無しさん :2009/10/04(日) 06:11:10
これってネイティブのコントトールを使ってるんだよね? まさか似せたウィジェットを頑張って全OSについて 用意しているわけじゃないよね?
992 :
デフォルトの名無しさん :2009/10/04(日) 06:19:35
994 :
デフォルトの名無しさん :
2009/10/04(日) 14:37:52