[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 08/21 08:58 / Filesize : 249 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

くだすれPython(超初心者用) その5



1 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 11:20:45 ]
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますが、
お礼は Python の布教と初心者の救済をお願いします。

エラーを解決したいときはエラー表示や環境を略さずに書き込んで下さい。
騙りが頻発しています。質問する方は一時的なトリップをつけることを検討して下さい。
次スレは >>950 辺りで

前スレ
くだすれPython(超初心者用) その4
pc12.2ch.net/test/read.cgi/tech/1243160751/

関連スレ
Pythonのお勉強 Part35
pc12.2ch.net/test/read.cgi/tech/1253535109/

237 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 07:36:54 ]
>>236
日本で使う言語として
print "こんにちは"
が動かないのはどうかと思うのよ

238 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 07:49:24 ]
一行目にshebangがあるとして
ソースはUTF-8で保存した上で
二行目に
# -*- coding: utf-8 -*-
すると幸せになる


239 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 09:37:53 ]
>>238
幸せになれるというかこれしないと
タイプ数アホみたいに増えるから必須だと思う

240 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 11:07:15 ]
>>235
たしかにPythonの文字コードまわりの面倒くささは尋常じゃないね

俺は一旦すべてユニコードにしてから必要なときにエンコードする
ようにしてるけど、ここまで徹底する必要あるのか?と度々思う

241 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 11:18:40 ]
そんなんじゃPython3000についてけねーぞ
標準ライブラリですら内部でstrに変換しやがるのがあるくらいだし別に徹底してない

242 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 11:36:05 ]
>>240
そこまで徹底するのが、文字化け対策として一番楽なんだよ。

>>237
動かないわけ無いだろ。
Python3では問題ないし、Python2でもソースエンコーディングとターミナルのエンコーディングが一致
していれば動く。

Python2 でターミナルのエンコーディングと違うソースエンコーディング使いたいなら、最初に
from __future__ import unicode_literals
とするか、 u"こんにちは" と書けば良い。

243 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 11:37:02 ]
>>240
正解

244 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 14:38:49 ]
>>234
ありがとうございます。。
うまくいきましたが、こんどはMS932というので引っかかってしまいました。
.decode('cp932','ignore')ってやるとあとあと困ったりしますか?

245 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 15:00:02 ]
困るかもって思うなら
www.python.jp/doc/release/lib/codec-base-classes.html#codec-base-classes
ここ見て置換させるとか
2chのdatなんてcp932/shift_jis/shift_jis_2004/shift_jisx0213のどれ使ってもエラー吐くときあるし



246 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 15:14:09 ]
>>244
これ便利 => chardet.detect()

別途インストールしないと使えない(多分)のが玉に瑕

247 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 16:29:09 ]
chardetはある程度の長さがないと役に立たんのがなあ
まあ仕組上当たり前の事なんだが
ID3タグみたいなエンコーディングどころかロケール情報もないクソフォーマット触った時は頭抱えたわ

248 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 16:38:42 ]
def decorder(u):
  if isinstance(u, unicode): return u
  for cd in ['utf-8', 'euc-jp', 'cp932', 'iso-2022-jp', 'latin-1', 'ascii']:
    try:
      u = u.decode(cd)
      break
    except UnicodeDecodeError:
      continue
  else:
    u = u.decode('latin-1', 'replace')
  return u

249 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 18:54:33 ]
>>238
それを強要する仕様を初心者向けと謳うのはどうかと思うわけだが
今時のメインシステムはWindowsでSJISだし

250 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 18:56:40 ]
とりあえずUTF-8で書いとけってのにはまだ賛同できるが
Emacsスタイルのコメントがむかつく

251 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 19:12:10 ]
>>249
なんか今日の変な発言はみんなあんたなのかも知れんが
Pythonには初心者に優しい仕組みを提供するみたいな理念はないぞ
読みやすく、バランス良くって結果がたまたま初心者にもそこそこ使いやすいって状況になっただけ

252 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 19:49:58 ]
簡単なものを複雑であるかのように見せかけてはいけない。
複雑なものを簡単であるかのように見せかけてはいけない。


253 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 19:55:57 ]
thisってんじゃねーぞ

254 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 20:23:54 ]
>>249
いや、コードページがCP932だからといって、スクリプトのエンコーディングまで
勝手にCP932だと仮定されてしまうようだとまずいだろ
スクリプトを書くのは自分だけじゃないんだぞ

日本語Windowsで実行しているからと言ってブラウザがHTMLを
全部CP932だと考えるようではまずいのと同じだ
エンコーディングなんて書いた奴しか分からない(推定はできるが)ので
指定させるのが確実で手っ取り速い、HTMLと同じだろ?

>>250
> Emacsスタイルのコメントがむかつく
別にEmacsスタイルである必要は無いよ
#coding: utf-8
とかでいい
実際には
coding[=:]\s*([-\w.]+) という正規表現で
エンコーディング指定らしきものとパターンマッチしている

255 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 20:31:28 ]
そういうことじゃなくて幸せになれるのは誰かってこと
Windowsでそこらのエディタ使ってる初心者が幸せになれるわけじゃないよね

あとPEPから正規表現抜いてくるんなら
引用元書いたほうが勉強してる人が幸せになれるよ



256 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 20:35:15 ]
WindowsっていつまでSJIS使うんだろうなwww

257 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 20:40:43 ]
C の初心者は
#include <stdio.h>

#include <studio.h>
と平気で書いたりするからな
python でも
# code: shift_jis
とか書いて動かないとか言い出す香具師が出てきてもおかしくない
「初心者」と「アホ」は区別して良いと思う


258 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 20:54:56 ]
>>254
ブラウザは実用に支障のないレベルで文字コードを自動判別してくれるぞ
そこまでは行かなくてもWindows向けインタプリタのデフォルト文字コードは
mbcsでも良いはずだ

259 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 21:00:38 ]
どうですか?
boost.cppll.jp/HEAD/libs/date_time/doc/BuildInfo.html

260 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 21:02:39 ]
スレ的にはこっちが良かったかな
boost.cppll.jp/HEAD/libs/python/doc/index.html

261 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 21:10:44 ]
>>258
> そこまでは行かなくてもWindows向けインタプリタのデフォルト文字コードは
> mbcsでも良いはずだ

それじゃ全然ダメなんだよ
他人が書いたモジュールやスクリプトのことも考えろ

mbcsの意味がCP932なのは日本語ウィンドウズの話であって
外国ではWindows-1252だったりするわけだ
Windows-1252な環境の連中の書いたモジュールやスクリプトを
CP932でデコードして動くとでも思うのか?

262 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 21:36:33 ]
>>258
誤爆する可能性のある判別法を自動適用するとかアホすぎるぞ

263 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 21:44:40 ]
ブラウザにhtmlの文字コード自動判定する機能があるからといって、それに依存して
きちんとヘッダを書かないのは間違い。
ブラウザは自動判定ミスっても間違って表示するだけだけど、
プログラムが自動判定ミスって間違って動作するとマズイだろ。

264 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 21:45:38 ]
曲がりなりにもプログラミング言語なのに
まともにHTMLすら書けないレベルの奴はさすがに相手にしてないだろw

#coding: cp932のようにソースエンコーディングを指定するのも
#include <stdio.h>とか書くのも
何かを足すときに+と書くのも
全部言語仕様であり決まりごとに過ぎんと思うが

265 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 21:50:54 ]
>>261
配布されているコードは文字コードが書いてあるんだからデフォルトの文字コードが
何になっていようが問題ないのではないかい?



266 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 21:59:59 ]
> 配布されているコードは文字コードが書いてあるんだから
運用ルールで済ませるのではなく、「確実に」強制する方法を
Pythonが選んだというだけだろ
それ以外に「確実に」強制する方法は存在しないわけだし

1byte圏の人間がどんだけ文字エンコーディングに関心を持たないかなんて
知ってるだろ
こんだけやってくれてるのはむしろ有難いと思ったほうがいいぞ

267 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 22:27:30 ]
そうだな、これだけ厳密にやってくれてるから、Python製で日本語でも問題起きない
アプリが多いんだよな。

268 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 22:45:24 ]
>>260
そこヘッダにエンコードも書いてあるのに
なんで化けるんだろう?

269 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 22:50:10 ]
エラーは明示的に、という設計思想だから一見文字コードのエラー(UnicodeEncode/DecodeEroor)が多いように見えるが、
どこがまずいのかを明確に指摘してくれるから俺のような初心者には逆にありがたい。

270 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 22:56:46 ]
>>269の2行目は「それはどこがまずいのか明確に指摘してくれるってことだから〜」にしてくれ
>>268
レスポンスヘッダがUTF-8になってるから

271 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 22:59:30 ]
HTTPサーバのレスポンスヘッダの方が優先されるのね。不思議

272 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 23:03:30 ]
>>271
ttp://www.asahi-net.or.jp/~sd5a-ucd/rec-html401j/charset.html
HTML4.0仕様の5.2.2に優先順位が書いてある
サーバレスポンスが一番優先順位が高い

273 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 23:32:09 ]
>>270
なるほどd
Apacheのバージョン変えたときに
AddDefaultCharset UTF-8 のままにしちゃってるパターンか
中のひと分かってるのかなぁ

274 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 23:33:50 ]
馬鹿よけのためにわざとやってるサイトがあるという話を聞いたことがある

275 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 23:44:02 ]
「原則unicodeで必要なときだけstrに変換すべき」
理想ではあるけど現実的じゃないよね



276 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 23:46:10 ]
utf-8派がutf-8化の強制を目的としてわざとやることはある。

277 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 23:46:14 ]
そう、従わない奴が多いからPython3はああいう仕様になった
そういう意味では現実的ではない

278 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 01:17:28 ]
最近はUTF-8が増えてきたとは言え文字コードの扱いなんてそれぞれの言語圏で
育った文化の上に成り立っている物だし、それをガン無視して「仕様なんだから、こうしろ」とか
言っても不満が噴出して当然だよな

日本なんかいまだにJIS、SJIS、EUC-JP、UTF-8やらが入り乱れている状態だしなw

279 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 01:21:38 ]
意味が分からん
少なくともプログラマが吐くセリフじゃない

280 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 01:26:17 ]
Unicodeには言語学者とかも係わってくるから騒ぎが大きいけど、
Pythonには不満が噴出するほど人がいない。


281 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 01:42:07 ]
プログラマなら UTF-8 一択だろ JK

282 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 01:48:08 ]
>>281
バカか?w
扱う文字コードをすべてUTF-8に統一できるわけがないだろうjk

283 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 01:55:05 ]
それはお前がおかしい。

284 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 02:14:35 ]
>>281
みたいなのがプログラマだったら大変だな
「仕様書が悪い」とか言い出しそうだw

285 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 08:59:32 ]
>>282
扱う文字コードではなく、ソースコードのエンコーディングの話をしてるんだぞ?



286 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 09:00:43 ]
意味が分からん
少なくともプログラマが吐くセリフじゃない

287 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 18:28:36 ]
SQLインジェクションやXSSの対策ですが、

XSSはGET引数を

query = cgi.escape(f.getfirst("q", "0"))

で対応しているのですが完璧でしょうか?
また、SQLインジェクションもこれでいけますか?

SQLやXSSのほかに対策すべきことはあるのでしょうか?

288 名前:デフォルトの名無しさん [2009/11/18(水) 19:27:11 ]
初心者過ぎてお恥ずかしいですが、助けてくださいorz
OSはwindowsXPです。

code.google.com/intl/ja/appengine/docs/python/gettingstarted/helloworld.html
これをやろうとしていますが、「アプリケーションのテスト」のところで、
「次のコマンドで helloworld ディレクトリまでのパスを指定し、Web サーバーを起動します。
google_appengine/dev_appserver.py helloworld/」
からわからなくなりました。
コマンドプロンプトで実行するんでしょうか。
helloworldフォルダをどこにおくべきでしょうか。どう指定するのでしょうか。

code.google.com/intl/ja/appengine/docs/python/tools/devserver.html#Running_the_Development_Web_Server
「Python 開発用サーバー」ページにある「dev_appserver.py myapp
」をcmdで打ったら「dev_appserver_main.py:410] Application configuration file not found in myapp.」のエラーになりました。
よろしくお願いいたしますorz

289 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 19:35:24 ]
>>288
>コマンドプロンプトで実行するんでしょうか。

そのとおりです。

> helloworldフォルダをどこにおくべきでしょうか。

ディレクトリ構成は
+ google_appengine/
  - dev_appserver.py
+ helloworld/
  - app.yaml
  - helloworld.py

> どう指定するのでしょうか。

まずコマンドプロンプトで「python -V」と入力したら
Python 2.5.4
みたいなのが出ることを確かめましょう。
そのあと「python google_appengine¥dev_appserver.py -p 8080 helloworld」を実行すればおけ。




290 名前:デフォルトの名無しさん [2009/11/18(水) 19:39:43 ]
>>289
ご回答どうもありがとうございます。
Python2.6.4ですが、バージョンが違うからエラーになるのでしょうかorz

291 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 19:57:29 ]
エラーメッセージをよくみようぜ。
Application configuration file not found in myapp
とあるんだから、app.yaml が myapp の下にないんじゃないの?

292 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 22:33:46 ]
>>288
さっきからマルチポストしているお馬鹿さんへ

あなたがポストするべき場所はこちらです
pc11.2ch.net/test/read.cgi/php/1243654802/
さようなら

293 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 23:25:18 ]
docs.python.org/

公式では無かったようなのですが、2.4とか2.5とかのライブラリのソースが
ハイライトされてるページが有ったと思います。
2,3年前に見た記憶がありますがどこか忘れてしまいました。
誰か知りませんか?


294 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 02:22:14 ]
コストの大きい関数、largefunctionがあったとして
if largefunction(arg): otherfunction(largefunction(arg))
と同じようなことを、関数呼び出しが重複しないように書くにはどうすればいいですか。
ローカルな一時変数を作成するのもおかしな話だと思うので。

295 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 02:36:00 ]
>>ローカルな一時変数を作成するのもおかしな話だと思うので。
おかしくないよ



296 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 02:46:06 ]
largefunctionを実行するコストよりローカル変数作るコストの方が小さいことが多い
っていうか副作用を起こす関数もあるのでlargefunctionじゃなくても普通ローカル変数作る

297 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 02:49:01 ]
おかしくないよな… 
ローカル変数に一旦取るのが普通だと思ってた。
そんな風に考える人も居るんだという勉強になりました。

298 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 02:50:23 ]
otherfunction(v) if (v = largefunction(arg)) or v else pass

299 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 02:52:56 ]
代入文は式じゃありません

300 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 02:59:43 ]
>>295-297
本人じゃないけど二行になるのが嫌って言ってるように感じる

301 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 02:59:44 ]
(lambda v: otherfunction(v) if v)(largefunction(arg))

302 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 03:01:24 ]
ダメじゃん
(lambda v: otherfunction(v) if v else None)(largefunction(arg))

303 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 03:02:05 ]
>>301
SyntaxError: invalid syntax

304 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 03:04:14 ]
lambda のコストってどんなもんなん?

305 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 04:00:20 ]
素直に3行で書きましょう



306 名前:293 mailto:sage [2009/11/19(木) 04:12:55 ]
誰か教えてくれよ!

307 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 05:06:09 ]
見たことあるよ
でも忘れたよw

308 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 05:13:24 ]
辞書でd3 = d1 + d2見たいな操作できないの? 今は以下のようにやってるんですが、不便です。
pyhotnを触り始めてまだ日が浅いので、足りない知識が多いかと思いますが、よろしくお願いします。
tmp = d1
tmp.update(d2)
d3 = tmp


309 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 05:17:35 ]
ttp://www.koders.com/python/fid90CE0CDD808CCE258E869074C8C9B17E002A531E.aspx?s=email.Message#L10

310 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 05:19:08 ]
>>308
過去スレにあったと思う

311 名前:308 mailto:sage [2009/11/19(木) 05:24:34 ]
ありがとうございます。探してみます。

312 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 05:27:00 ]
過去スレの結論は
d3 = d1
d3.update(d2)
だったような気がするw

313 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 09:43:53 ]
もしくは、
d3 = dict(d1, **d2) だっけかな。

314 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 20:29:32 ]
feedparserでパースしたtitle要素をwxpythonのListbox内に挿入したいのですが
どうすればいいのでしょうか?

315 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 08:46:18 ]
システムのパスデリミタを気にせずに、ディレクトリ名やファイル名を結合する方法はありますか?
分割する方は割りと簡単にできたのですが、結合がよくわかりません。



316 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 08:55:02 ]
os.path.append

317 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 09:01:37 ]
できました。ありがとうございます。

318 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 17:19:47 ]
os.path.join
?

319 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 22:39:04 ]
>>294
if largefunction(arg): otherfunction(0)

320 名前:320 [2009/11/20(金) 23:01:19 ]
wxPythonを使ってGUIツールを作っています。

自分の開発環境PCでは問題なく動作しているのですが、
wxPythonをインストールしていないPCで実行すると、
「ImportError: No module named wx」が出ます。

プログラムを実行させるには、
PCにwxPythonをインストールするしかないのでしょうか?

321 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 23:16:11 ]
そうだね。
ImportErrorをキャッチして
メッセージを出すのもありかも。

322 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 23:32:20 ]
py2exe

323 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 00:49:33 ]
def Plus(args):
  〜
def Hoge(cmd = 'Plus'):
  globals()[cmd](〜)
は出来るのですが、Plus関数をHogeの内部に記述するとキーが見つからないと起こられてしまいます。
globals()をlocals()に変えてもダメでした。
関数内関数を文字列で指定して実行するにはどうすればよいのでしょうか?

324 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 00:59:36 ]
駄目な方のソースも載っけてみ

325 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 01:04:15 ]
駄目な例
def Hoge(cmd = 'Plus'):
  globals()[cmd](〜)
  def Plus(args):
    〜

もしかしたらと思い、以下のようにしたらエラーになりませんでした。
def Hoge(cmd = 'Plus'):
  def Plus(args):
    〜
  globals()[cmd](〜)

先に定義しておかないとダメってことでしょうか?



326 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 01:24:31 ]
Yes
上から下に向かって実行されるから。

>  def Plus(args):
>    〜

の意味は、〜を解析してPlusという名前の関数で登録しろという意味の実行文。
実行されなければ、存在することが出来ない。

327 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 01:37:18 ]
なんか前も見た流れだな
C はコンパイラはとにかくコンパイルして
リンカが頑張って名前解決してるから
順序とかどうでも良くなってる

一方で Python の def/class は代入式だと思っていい

328 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 07:39:23 ]
>C はコンパイラはとにかくコンパイルして
>リンカが頑張って名前解決してるから
>順序とかどうでも良くなってる

いや
ヘッダがあるから大丈夫なだけで
Cも順序が逆だと
プロトタイプが無いエラーになるか
暗黙の型定義で代用される

329 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 11:29:03 ]
あるプログラム(A)の出力をpythonプログラム(B)で読み込みたいのですが
import sys
if __name__=='__main__':
  while True:
    l = sys.stdin.readline()
    if len(l) == 0: break
    print '>', l,
  print 'fin'
とした場合、(B)だけで実行すると望んだ結果が得られるのですが、
> (A) | (B)
とすると
fin
close failed in file object destructor:
Error in sys.excepthook:
Original exception was:
最後のfinだけが表示されてエラーが出てしまいます。
パイプで繋げた標準入力から1行ずつ読み込むにはどうすればいいでしょうか?

330 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 11:41:57 ]
Windowsだとパイプで変な挙動をすることがあったような
環境書いたほうがいいよ

で、もしWindowsなら > A | python B で試してみる

331 名前:329 mailto:sage [2009/11/21(土) 11:49:50 ]
環境はWindowsXP SP3です。
>>330の方法で試したら望んだ結果になりました。
ありがとうございました。

332 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 13:16:25 ]
float返すC++の関数があり、それをあるPythonのラッパーが呼び出します。
この返り値をunittestのassertEqualでテストしたいのですが、

assertEqual(3.141592, その関数())

とやると、第1引数は倍精度、第2引数は単精度になり、比較結果が一致しません。
assertAlmostEqualを使わないで、第1引数を単精度にする方法はあるでしょうか。

333 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 14:48:17 ]
それ精度の問題じゃないよ

334 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 14:52:51 ]
じゃあ何の問題なんだよ…はっきり言え

335 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 14:55:45 ]
numpyあたり単精度も扱ってくれたりしないのかな
使ったことはまったくないが



336 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 17:30:01 ]
浮動小数点数でassertEqualするのが間違いだろ

337 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 18:02:51 ]
間違いってことはあるまい。

浮動小数点数なんてCPUが違うと結果違うのは当たり前だし、
x86なんかFPUを使うかSSEを使うかで結果違ってくるし、
言語によっても浮動小数点数の扱いが広げ方や丸め方が違うし、
最適化のかけ方によっても結果が変わってくるし、
そういうのをテストで弾きたいって意味でしょ?

となると、弾かれたのはまさに期待通りなわけだが。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<249KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef