Pythonのお勉強 Part3 ..
513:デフォルトの名無しさん
09/08/22 22:17:56
いやぁ,単純に datetime.datetime.now() で得たオブジェクトなら
そのまま print しても見やすくフォーマットしてくれるなぁ,と.
で,datetime.datetime.now() でも十分な精度でした.
テストした環境がVMで,しかもその上で動かしてるLinuxカーネルの
タイマ割り込みの周期が1000回/秒だったせいで時計がずれまくってた
だけだった.
つーわけで俺のかんちguyでした
514:デフォルトの名無しさん
09/08/22 22:33:33
作ったスクリプトが遅いなぁと上の方法で計測してみたところ,
Pythonであれこれimportしているせいか
全ての import が終わるまで10秒くらいかかってます.
で,そのあとの処理はさくさくと.
bogomips が500を切るNASでやってるのが悪いのですが,
import を早く済ませるテクニックとかあるんでしょうか.
そりゃ絶対的に必要な時間はしかたないですが・・・
ちゃんと pyc もできてるし,打つ手はないかなぁ
515:デフォルトの名無しさん
09/08/22 23:07:16
importのコストのうち、pycで削減できるのはコンパイル時間のみ。
10秒もかかるってことは、どれかのモジュールのグローバルに重い処理があるんじゃない?
516:デフォルトの名無しさん
09/08/23 00:46:19
>>514
ある
517:デフォルトの名無しさん
09/08/23 02:47:03
>>514
テストした環境がVM?
518:デフォルトの名無しさん
09/08/23 11:09:27
(´・ω・`) God knows
519:デフォルトの名無しさん
09/08/24 02:12:48
質問です。
8時間悩んだバグが単なる変数の再初期化のし忘れでした。
このやりきれない気持ちをどうすればよいですか。
520:デフォルトの名無しさん
09/08/24 02:26:18
>>519
自動テストを書く。
521:デフォルトの名無しさん
09/08/24 02:52:14
再初期化をする必要がないスコープで書く方法を学ぶ
522:デフォルトの名無しさん
09/08/24 06:20:03
∧∧
(´・ω・) おやすみ・・・
_| ⊃/(___
/ └-(____/
 ̄ ̄ ̄ ̄ ̄ ̄ ̄
523:デフォルトの名無しさん
09/08/24 08:54:40
∧∧
(´・ω・) おはヨーグルト!
_| ⊃/(___
/ └-(____/
 ̄ ̄ ̄ ̄ ̄ ̄ ̄
524:デフォルトの名無しさん
09/08/24 09:28:29
>>519
変数名の使い回しなんて最悪だ
525:デフォルトの名無しさん
09/08/24 10:30:42
おまえら発火損逝った?
526:デフォルトの名無しさん
09/08/24 11:27:27
はっかそんいった?
527:デフォルトの名無しさん
09/08/24 14:20:39
同じモジュールでも、複数のファイルからimportするとその分だけメモリ消費しますか?
from hoge import *だとそのファイルの物になって、複数ファイルでfromするとメモリ消費しますか?
528:デフォルトの名無しさん
09/08/24 14:29:54
>>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'] で置き換えてみて。
529:デフォルトの名無しさん
09/08/24 16:32:27
白化村征かなかったのか。駄目だなあ。
530:デフォルトの名無しさん
09/08/24 18:11:11
予想してみたけど分りません(>_<)
薄荷無羊駝(シソ科ハッカ属)、咲かなかったのか。
白化村(色素が抜けて全身真っ白の人しかいない伝説の村)、まさか無かったのか。
531:デフォルトの名無しさん
09/08/24 18:25:14
ハッカービレッジとかそんなのか?知らんけど
532:デフォルトの名無しさん
09/08/24 22:23:57
GAEあほだろ
533:デフォルトの名無しさん
09/08/24 22:46:28
3.1.1で大分マシになったようだが、まだまだ遅いな。
URLリンク(www.gtsystem.eu)
534:デフォルトの名無しさん
09/08/25 08:52:01
>>526
URLリンク(image.blog.livedoor.jp)
こんな風だった
535:デフォルトの名無しさん
09/08/25 11:20:32
>>534
アンチ自民キモイな。
536:デフォルトの名無しさん
09/08/25 15:16:56
つまらない質問で悪いんだが、
タプル同士をベクトルみたいに足し算するのはどうやるの?
ab = (1, 2)
ac = (3, 4)
abc = (ab[0]+ac[0], ab[1]+ac[1])
537:デフォルトの名無しさん
09/08/25 15:25:34
map(sum,zip(ab,ac))
538:デフォルトの名無しさん
09/08/25 15:51:31
numpy
539:デフォルトの名無しさん
09/08/25 15:53:23
タプルはベクトルでも行列でもねーぞ
540:デフォルトの名無しさん
09/08/25 15:53:48
ab = 1 + 2j
ac = 3 + 4j
abc = ab + ac
541:デフォルトの名無しさん
09/08/25 15:57:38
>>540
542:デフォルトの名無しさん
09/08/25 15:59:04
つまらない質問で悪いんだが、
タプルを複素数にするのはどうやるの?
543:デフォルトの名無しさん
09/08/25 15:59:25
>>536
tuple(ai + bi for ai, bi in zip(a, b))
おまけ:2ノルム
math.sqrt(sum(ai * bi for ai, bi in zip(a, b)))
544:デフォルトの名無しさん
09/08/25 16:03:02
>>542
tup = (1, 2)
complex(*tup)
545:デフォルトの名無しさん
09/08/25 16:12:47
>>542
complex(*ab)+complex(*ac)
546:デフォルトの名無しさん
09/08/25 16:13:35
>>544
thx!
つまらない質問で悪いんだが、
複素数をタプルにするのはどうやるの?
547:デフォルトの名無しさん
09/08/25 16:16:44
>>546
((complex(*ab)+complex(*ac)).real, (complex(*ab)+complex(*ac)).imag)
548:デフォルトの名無しさん
09/08/25 16:56:39
とりあえず吉川と布袋に囲まれたら泣いて謝ると思う
549:デフォルトの名無しさん
09/08/25 17:32:01
なんのこっちゃわからんが、みんなすごいね
550:デフォルトの名無しさん
09/08/25 21:57:23
ぬのぶくろは弱いぞ
551:デフォルトの名無しさん
09/08/26 05:00:02
ヘタれ布袋
552:デフォルトの名無しさん
09/08/26 15:14:20
パイヤング
553:デフォルトの名無しさん
09/08/26 17:20:30
matplotlibのbounding box調節関数のサンプルが見つからない
554:デフォルトの名無しさん
09/08/26 18:08:06
文字列 % 辞書 はなんの為に使うんでしょうか?
def gettext_noop(string, **kwargs):
retval = string
if kwargs:
retval %= kwargs
return retval
555:デフォルトの名無しさん
09/08/26 18:54:29
URLリンク(www.python.jp)
556:デフォルトの名無しさん
09/08/26 18:55:56
sprintfみたいなもんや
557:デフォルトの名無しさん
09/08/26 20:02:25
マンモスありがとうございます
558:デフォルトの名無しさん
09/08/26 20:24:36
"abc%sdef" % "hoge"
みたいなフォーマット文字列の書き方とはもうサヨナラ?
悲しすぎる.
559:デフォルトの名無しさん
09/08/26 20:57:35
"abc{}def".format("hoge")のほうが読みやすい
%sdefとかだと文字とフォーマット表記が混じって読みにくい
560:デフォルトの名無しさん
09/08/26 21:06:58
長いこと%sやら%dな変換指定子に慣れてるから
他の書式にされると覚えにくくて困る
ええC#のことです
561:デフォルトの名無しさん
09/08/26 23:53:37
正規表現も読みにくいな
562:デフォルトの名無しさん
09/08/27 01:08:25
LINK = "<%(tag)s %(attr)s>%(name)s</%(tag)s>"
dict_ = {}
dict_["tag"] = "a"
dict_["attr"] = 'href="URLリンク(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)}
563:デフォルトの名無しさん
09/08/27 01:55:17
LINK = "<{tag} {attr}>{name}</{tag}>".format(tag = "a",
attr = 'href="URLリンク(localhost:8080)"',
name = "hack you")
ITEM = ("<li>{content}</li>\n"*10).format(content = LINK)
MENU = "<menu>\n{item}</menu>".format(item = ITEM)
print(MENU)
564:デフォルトの名無しさん
09/08/27 01:57:03
インデントずれた
LINK = "<{tag} {attr}>{name}</{tag}>".format(tag = "a",
attr = 'href="URLリンク(localhost:8080)"',
name = "hack you")
ITEM = ("<li>{content}</li>\n"*10).format(content = LINK)
MENU = "<menu>\n{item}</menu>".format(item = ITEM)
print(MENU)
565:デフォルトの名無しさん
09/08/27 05:37:11
LINK = "<{tag} {attr}>{name}</{tag}>".format(
{tag: "a", attr: 'href="URLリンク(localhost:8080)"', name: "hack you"})
566:デフォルトの名無しさん
09/08/27 06:19:49
ぶっちゃけ、変数展開型言語も色んなテンプレも別に見やすいわけじゃないんだよな。
なんか良い方法あればいいんだけど。
567:デフォルトの名無しさん
09/08/27 16:09:07
sqlite3でテーブルが作成されてなかったり、
データベースファイルがないのを検出する方法ってありますか?
568:デフォルトの名無しさん
09/08/27 18:25:50
>>567
> sqlite3でテーブルが作成されてなかったり、
SELECT * FROM sqlite_master;
> データベースファイルがないのを検出する方法ってありますか?
os.path.exists
569:デフォルトの名無しさん
09/08/29 01:00:08
10 Ways To Let People Know You're A Bad Python Programmer
URLリンク(artificialcode.blogspot.com)
570:デフォルトの名無しさん
09/08/29 02:06:58
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:デフォルトの名無しさん
09/08/29 05:31:37
PyDev 便利に使っているけど、やっぱり餅は餅屋というか、
Eclipse で Java している時のような至れり尽くせり感がないなぁ・・
もっと、こう、至れり尽くせりなPython用IDEって何があるんでしょうか。
572:デフォルトの名無しさん
09/08/29 05:35:24
eric4
573:デフォルトの名無しさん
09/08/29 07:47:42
emacs
574:デフォルトの名無しさん
09/08/29 08:41:35
emacs+rope
575:デフォルトの名無しさん
09/08/29 09:16:35
emacs+rope+auto-complete+anything
576:デフォルトの名無しさん
09/08/29 10:30:38
おまえらがEclipseをろくに使ったことがないということはよくわかった
577:デフォルトの名無しさん
09/08/29 10:39:21
ううむ・・ericも含めて、それだったら PyDev でいいや・・・
578:デフォルトの名無しさん
09/08/29 13:07:55
実際 Eclipse 使ったことないんだが、至れり尽くせりって具体的にどんなことが出来るのかね?
579:デフォルトの名無しさん
09/08/29 13:47:20
eclipseを使ったら彼女が出来ました
580:デフォルトの名無しさん
09/08/29 13:48:22
>>578
ファイルを保存する段階でコンパイルエラーを指摘してくれるのを最初に見たときは感動したな。
Visual Stdio 2008でも同じことが出来るけど。
環境がIronPythonになるが、Visual StudioでPythonのスクリプトを動かすことが出来るよ。
581:デフォルトの名無しさん
09/08/29 14:05:37
なんだ、ドザか。
582:デフォルトの名無しさん
09/08/29 14:07:15
w
583:デフォルトの名無しさん
09/08/29 15:03:03
>>582
584:デフォルトの名無しさん
09/08/29 16:06:16
>>578
イタレリのキットが抽選で当たります。
585:デフォルトの名無しさん
09/08/29 16:29:36
見事に外したな
586:デフォルトの名無しさん
09/08/29 21:24:22
並列実行用のモジュールにMultiProcessingというのがあるようなんですが、
メモリ共有型の場合でも対応できるんでしょうか?
例えば大きな行列があって、並列処理で別々の部分を処理したりしたいんですが。。。
threadingでは実際には並列効果がないというのを知ってショックを受けてます・・・
587:デフォルトの名無しさん
09/08/29 21:26:11
yes you can
588:デフォルトの名無しさん
09/08/29 22:16:41
【JAVA質問スレより】
940 :デフォルトの名無しさん:2009/08/29(土) 22:08:40
>>937
一番もてるのはperl。
もっとも嫌われるのはpython。
C,C++は、相性とテクニック次第。
なんで?
589:デフォルトの名無しさん
09/08/29 22:18:57
なんでそいつに聞かないの?
590:デフォルトの名無しさん
09/08/29 22:19:07
モテる相手がバグだからさ
591:デフォルトの名無しさん
09/08/29 22:29:02
うまいな
592:デフォルトの名無しさん
09/08/29 22:31:09
>>586
URLリンク(docs.python.org)
俺は使ったことない。共有メモリマシンでうまく並列効果が出たら是非教えて。
593:デフォルトの名無しさん
09/08/30 00:34:25
>>588
なんでか知らんが、俺の周りでもpyてょnは変態呼ばわり。
594:デフォルトの名無しさん
09/08/30 00:42:05
凡人には使えない言語だ
595:デフォルトの名無しさん
09/08/30 00:44:18
言語じゃなくて使ってる人が変態(ry
596:デフォルトの名無しさん
09/08/30 00:45:57
変態専用か
597:デフォルトの名無しさん
09/08/30 00:48:05
変態じゃないよ
仮に変態だったとしても変態という名の紳士だよ
598:名無しさん@そうだ選挙に行こう
09/08/30 09:38:36
俺もうんこ喰うけど別に変態ってわけじゃないな
599:名無しさん@そうだ選挙に行こう
09/08/30 10:57:11
凡人は使わない言語だ
600:名無しさん@そうだ選挙に行こう
09/08/30 13:28:05
またruby厨の荒らしっすか
601:名無しさん@そうだ選挙に行こう
09/08/30 13:31:27
ruby厨は使わない言語だ
602:名無しさん@そうだ選挙に行こう
09/08/30 13:50:15
そりゃそうだ
603:名無しさん@そうだ選挙に行こう
09/08/30 14:12:06
これは良いマイキースレ
604:デフォルトの名無しさん
09/08/30 23:27:50
>569,570
他はともかく
4. Call Perl from Python
これはあり得ないだろ…
605:デフォルトの名無しさん
09/08/30 23:44:40
大学の時の教授は os.system 呼びまくりだったから
あり得ない話ではない。
606:デフォルトの名無しさん
09/08/31 12:29:07
> 4. Call Perl from Python
いま仕事で使ってるスクリプトがまさにそれだ……
607:デフォルトの名無しさん
09/08/31 12:36:15
CentOSってPython2.4なんだけど、2.5とか2.6で動かすメリットって大きい?
用途としてはDjangoでWebアプリ
608:デフォルトの名無しさん
09/08/31 13:04:28
>>607
困ってないなら何もいじる必要ないのでは?
特にスピードが速くなるとかは感じない.
でも自分でコード書くなら 2.6 使っておくとよいのではとおもう.
3.x 系は自分としては使いたい拡張モジュールが
対応していないのでNG.標準モジュールだけならありかと.
609:デフォルトの名無しさん
09/08/31 13:22:37
>>608
サンクス
実行速度とかは特に差が出ないのね
Javaなんかだとバージョンあげると明らかにパフォーマンスあがるもので気になっていたので。
モジュールとかはおおむね2.4以降なら動くみたいだしそのままでいくわ
610:デフォルトの名無しさん
09/08/31 17:41:42
2.4はkuso
611:デフォルトの名無しさん
09/08/31 18:14:33
理由は?
612:デフォルトの名無しさん
09/08/31 18:30:47
URLリンク(www.shido.info)
URLリンク(ml.zope.jp)
613:デフォルトの名無しさん
09/09/01 00:35:36
システムのバージョンを上げるのはトラブルの元
ローカルに入れるのならおk
614:!omikuji!dama
09/09/01 05:35:25
test
615:デフォルトの名無しさん
09/09/01 11:02:02
無責任に逃げ出すゴミ虫はなにやっても駄目だけどな
616:デフォルトの名無しさん
09/09/01 11:05:07
自虐すか(笑)
617:デフォルトの名無しさん
09/09/01 11:20:44
誰か逃げたの?
618:デフォルトの名無しさん
09/09/01 11:27:09
>>617
俺知ってる(w
619:デフォルトの名無しさん
09/09/01 12:05:09
仕事しろ、あとTwitterでやれw
620:デフォルトの名無しさん
09/09/01 12:08:06
ゴミ虫はゾンビ化するとやっかいだから、煽らない方がいいよ...
621:デフォルトの名無しさん
09/09/01 12:09:11
よくみんな黙ってるよ
みんな大人だ
622:デフォルトの名無しさん
09/09/01 12:24:48
逃げちゃう人ってそいつが存在しなくたってまったく問題ナッシングなことを証明するチャレンジャーだよね
623:デフォルトの名無しさん
09/09/01 13:23:43
レッドソックス松坂のことか
624:デフォルトの名無しさん
09/09/01 14:30:36
FreeBSDで
checking for python libraries... not found
って言われたのですが
/usr/local/lib/python2.6
じゃないんですか?
625:デフォルトの名無しさん
09/09/01 14:36:54
Makefileもよめないの?
626:デフォルトの名無しさん
09/09/01 17:22:32
ぴーひゃらりんこだぷー
627:デフォルトの名無しさん
09/09/01 17:23:35
あんなの読むのは土方とマニアだけでいいと思うんだ
628:デフォルトの名無しさん
09/09/01 17:29:31
そうだね、フリーライダーは読まなくていいね
629:デフォルトの名無しさん
09/09/01 17:35:18
matplotlibの最新版でグラフにアノテーションつける機能が使いたかった
古いシステムではnumpyが古くて入らなかった
numpy関連全部バージョン上げるの大変だからOSのバージョンごと上げたらいろいろ大変になった
630:デフォルトの名無しさん
09/09/01 17:59:01
人間性から見て一生底辺だね
どんな仕事についても駄目っぽいね
631:デフォルトの名無しさん
09/09/01 18:05:29
おまいらPythonの話をしろよ
たとえばだな
ドジャンゴ・イン・アクション
URLリンク(www.manning.com)
632:デフォルトの名無しさん
09/09/01 18:12:42
>>624
よくわからんけど upgrade-site-packages やってないとかいうオチ?
633:デフォルトの名無しさん
09/09/02 00:11:04
Pythonってopensslライブラリが標準ではついてこないのか。
くそ。
634:デフォルトの名無しさん
09/09/02 00:36:26
pythonとは関係ないからな
635:デフォルトの名無しさん
09/09/02 01:02:40
ssl
636:デフォルトの名無しさん
09/09/02 01:24:29
OpenSSLがついてこないから、標準ではRSAとかの暗号関連ができないのか。ざんねん。
>>635
SSLができてもなあ・・・
637:デフォルトの名無しさん
09/09/02 03:31:18
twisted
638:デフォルトの名無しさん
09/09/02 09:49:43
twisted標準化してくれよ
639:デフォルトの名無しさん
09/09/02 09:57:04
>>633, >>636
paramikoがお勧め。
640:デフォルトの名無しさん
09/09/02 10:14:19
>>638
やだ
641:デフォルトの名無しさん
09/09/02 10:43:23
>>607
Cent OS は使用した事が無いですが?
OS version default の directory を残して python support Link の patch を当てるのが無難だと思います…
python support Link の patch を取っていれば問題ない様です… version up をするので在ればですが…
642:デフォルトの名無しさん
09/09/02 12:55:41
ドカタかフリーライダーか、とかそういう対立軸以前に
余裕があるのかないのか、という人間としての質の差が重要な気がしている
643:デフォルトの名無しさん
09/09/02 13:12:17
<⌒/ヽ-、___
/<_/____/
 ̄ ̄ ̄ ̄ ̄ ̄ ̄
644:デフォルトの名無しさん
09/09/02 14:39:21
| |/(-_-)\|
| | ∩∩ |
|  ̄ ̄ ̄ ̄ ̄
(-_-) …
(∩∩)────────
/
/
/
むかしはぱいそんができればぐーぐるにいけるとしんじていました
でもいまはかんがえをかえました
URLリンク(promotion.yahoo.co.jp)
645:デフォルトの名無しさん
09/09/02 15:09:10
口をきいてもつまらなく、得るモンもなきゃ、しゃべる意味ないやろ。
646:デフォルトの名無しさん
09/09/02 15:15:00
お前がひとりぼっちなのはよくわかったからPythonのことを書けよ。
647:デフォルトの名無しさん
09/09/02 15:15:50
社会のために、
そのまま引きこもっとけや。
648:デフォルトの名無しさん
09/09/02 15:16:30
もちろん靴下装備で
649:デフォルトの名無しさん
09/09/02 17:00:24
社会の為にいろいろ活動します
650:デフォルトの名無しさん
09/09/02 17:54:02
自宅を警備します
651:デフォルトの名無しさん
09/09/02 18:06:53
二次元世界との架け橋を作ります。
652:デフォルトの名無しさん
09/09/04 05:49:55
\
\
653:デフォルトの名無しさん
09/09/04 09:38:46
口
654:デフォルトの名無しさん
09/09/04 13:53:35
python2.5でプロセス操作が可能なライブラリってありますか?
655:デフォルトの名無しさん
09/09/04 18:34:36
subprocess
656:デフォルトの名無しさん
09/09/04 21:08:56
>>651
うpろだの事かー!
657:デフォルトの名無しさん
09/09/04 21:31:49
何番?
URLリンク(long.2chan.tv)
658:デフォルトの名無しさん
09/09/04 21:48:32
d = dict
としたあとで key in d が出来る様にするにはどうすればいいんだろう?
659:デフォルトの名無しさん
09/09/04 22:37:06
>>658
d = d()
660:デフォルトの名無しさん
09/09/04 23:08:03
d = d.keys()
661:デフォルトの名無しさん
09/09/05 12:07:43
いつもdictでfor文まわすのってどうやるんだったっけって調べてしまうぜ。
いちいち言語の文法をそらんじなくなって久しい。
662:デフォルトの名無しさん
09/09/05 12:21:13
>>660
なんでわざわざdictのkeyを取り出す必要があるんだ?
663:デフォルトの名無しさん
09/09/05 13:28:02
>>662
keyの文字列自体を何かに使いたいとき
664:デフォルトの名無しさん
09/09/05 13:50:23
入門書嫁。
665:デフォルトの名無しさん
09/09/05 15:33:28
リファレンス嫁。
666:デフォルトの名無しさん
09/09/05 23:55:21
Python + C# 最強説あらわる。これでR**yを殲滅できるぞ!
URLリンク(d.hatena.ne.jp)
667:デフォルトの名無しさん
09/09/06 00:01:46
またRuby厨があらしてるのか
668:デフォルトの名無しさん
09/09/06 00:33:49
C#イラネ
ヘジのクラスライブラリは勘弁
669:デフォルトの名無しさん
09/09/06 01:11:00
どうみてもPythonもC#も被害者じゃないか
670:デフォルトの名無しさん
09/09/06 02:35:09
いや、普通にPython+C#で商用プログラム書いてるところですが何か。
671:デフォルトの名無しさん
09/09/06 10:12:46
>>666
変な主観で語られてもなぁw
672:デフォルトの名無しさん
09/09/06 11:30:55
それと比べたらたとえ揚げ足取りであったとしても、ちゃんと文章を細かく読んでくれて、理由もつけられて、
その文章内容自体について説教・罵倒される方がはるかにましだということにあの人たちはなぜか気づかない
(多分、リアルがそれなりに充実した幸せな人たちだからだろう)。今の時代、話を聞いてくれて、まともな
ことを言ってくれる近所の頑固親父的な人なんて絶滅危惧種なのに。
まあ、普通の大人の現代(近代)社会を考えると仕方がないのかもしれないけど。よく言われることだが、社会人は
自分の利益になるケース以外では他人(特にいわゆる「バカ」)に対して注意なんてすることはないのだ。
そんなの時間がもったいない、「時は金なり」ということ(まったくいやなことだが)。
それにしても、「「バカ」であることを自己認識し自重する人たち」にとっては、現代とはなんと寂しい・辛い世界
であることか。その人たちは相手にされること、馴れ合うことすらできないのだから。
673:デフォルトの名無しさん
09/09/06 13:10:50
αブロガーっぽいコピペだな
674:デフォルトの名無しさん
09/09/06 13:13:06
最初の二行を読むだけで目が回ったが
675:デフォルトの名無しさん
09/09/06 13:29:13
括弧が多すぎる。統合失調症の臭いがする。
676:デフォルトの名無しさん
09/09/06 14:05:16
単にLISP使いなんだろ
677:デフォルトの名無しさん
09/09/06 18:18:57
>>657
まいんちゃん一択
678:デフォルトの名無しさん
09/09/06 21:40:01
真のLisperは括弧を省略しない
679:デフォルトの名無しさん
09/09/06 22:04:58
Python使いからすると
閉じ括弧を省略できると最高なんだが
680:デフォルトの名無しさん
09/09/06 22:08:22
かつて、対応する括弧までを一気に閉じるスーパー括弧というのがあってだな
681:デフォルトの名無しさん
09/09/06 22:09:27
haskellの$演算子はカッコを減らすのにいい
682:デフォルトの名無しさん
09/09/06 22:22:28
Python使いの口癖
オフサイド!
683:デフォルトの名無しさん
09/09/07 01:14:27
「M式というのもある」と発言してうそつき呼ばわりされた屈辱の日々
684:デフォルトの名無しさん
09/09/07 06:57:21
最近C++一辺倒でもなと思ってPythonを使い始めたやつですが,
Pythonってのは本質的に関数言語であって,クラスシステムは
後付けっつーことですか?
self とか cls があらわになっているをの見て,
そういうもんなのかなと.
なぜPythonに手を出したかというと
普段使わなくても多重継承がないと不安だからとか
そういう理由だとまた叩かれるのかな.
685:デフォルトの名無しさん
09/09/07 07:17:35
ドMの癖に
いやらしいねえこの男は
686:デフォルトの名無しさん
09/09/07 07:19:35
>>684
OOP機能は最初から装備されていたそうなので、あとづけではないらしい。
そこかしこに不自然さが残るのは確か(superとか)なんだけど、許容範囲だから我慢してる。
あとPythonの作者は関数型言語をあまりよく知らないらしいから、「本質的に関数型」ではなくて「偶発的に関数型」じゃないかな。
> self とか cls があらわになっているをの見て,
> そういうもんなのかなと.
そういうもんです。違和感あるだろうけど、我慢できる範囲だと思うので、我慢して使ってください。そのうち慣れます。
687:デフォルトの名無しさん
09/09/07 08:28:42
>>684
個人的にはselfとかどの名前空間なのか明示する方が分かりやすい
省略しまくる言語とか訳分からん記号使いまくる言語は氏ねとか思う
688:デフォルトの名無しさん
09/09/07 08:48:25
>>687
そうじゃない。self.method()は別に構わない。
def method(self): がちょっと嫌いなだけ。
689:デフォルトの名無しさん
09/09/07 08:55:11
> self とか cls があらわになっているをの見て,
> そういうもんなのかなと.
そういうもんです。
どの名前空間なのか明示する方が分かりやすいです。
慣れないうちは __init__() に self 入れ忘れて、
"引数の数があわない"
という一見変なエラーに悩まされますが、
そのうち気にならなくなります。
どちらかというとわたしは unicode/str の
encode/decode でよく悩まされました。
こちらももうすっかり慣れましたけど。
どちらも今となっては良い思い出です。
690:デフォルトの名無しさん
09/09/07 09:12:47
>>688
俺も前から第一引数のselfに疑問を持っているんだが、Guidoがimplicit selfを
絶対に導入しない理由は何なの?
ちょっとググってみたが良く分からんかった。
691:デフォルトの名無しさん
09/09/07 09:15:08
>>688
selfまで省略されるとお前どっから来たんだよッて俺がキレる
692:デフォルトの名無しさん
09/09/07 09:31:39
書くときは冗長に思えるけど読むときには便利、と思えるかな?>self
693:デフォルトの名無しさん
09/09/07 09:53:30
>>690
これは既出?
URLリンク(www.python.org)
694:デフォルトの名無しさん
09/09/07 10:01:34
>>693
和訳。
URLリンク(coreblog.org)
どのくらい正確なのかはわからんが。
695:デフォルトの名無しさん
09/09/07 10:39:14
>>693
それは読んで知ってたけど、論拠としては弱いと思ってた。
>>694
サンクス。これを読んで一応納得した。デコレータを使った時に困るのは分かるが、
半分以上はGuidoの思想上の問題のような気がする。本人が絶対にexplicit self
を無くさないと言っているのだから仕方ないが。
696:デフォルトの名無しさん
09/09/07 10:50:10
Pythonのメソッドって関数みたいなもんでしょ?
逆にいつでもselfを使える前提にするほうが変だと思う。
引数とって値を返す、関数らしい構造で良いと思う。
逆にRubyでは関数はメソッドの亜種だから、関数でもわざわざselfが設定されてる。
Javaではそもそも裸の関数が無いのだからselfがあるのは納得。
697:デフォルトの名無しさん
09/09/07 10:50:53
って、Javaはthisだった、ごめ
698:デフォルトの名無しさん
09/09/07 10:51:49
>>695
>デコレータを使った時に困るのは分かるが、
自分はここがよくわからないんだけど、だれか解説たのむ。
以下引用:
> メソッドがデコレートされたときに,self引数が渡されるかどうかを知ることはできない。
> というのは,デコレータはメソッドをスタティックメソッドに変えることもあるし(この場合selfはない),
> クラスメソッドに変えることもあるし(この場合は,selfの変わりにクラスオブジェクトが渡される),
> まったく違ったことをすることもできる
> (@staticmethodや@classmethodと同じ働きをするデコレータをPythonで書くことは希だと思うが)。
> つまり,デコレータが何をするかを知り得なければ,メソッドに明示的にselfが定義されているかどうかを知ることができないのである。
699:デフォルトの名無しさん
09/09/07 10:55:19
>>696
> 逆にいつでもselfを使える前提にするほうが変だと思う。
>>694のリンク先を読めば分かるが、そんなことは誰も主張してない。
700:デフォルトの名無しさん
09/09/07 11:08:55
>699
しってるよw 俺の感想を言っただけ。
701:デフォルトの名無しさん
09/09/07 11:13:11
見苦しい言い訳だな。妄想は自分の脳内で完結させろ
702:デフォルトの名無しさん
09/09/07 11:13:57
>>698
デコレータは関数を引数にとって「何か」を返す関数。
クラス宣言の中でデコレータを使うと、デコレータの返したモノがクラスのメンバになる。
そうするとコンパイル時に「何か」を決定できないので暗黙の引数を追加できない。
703:デフォルトの名無しさん
09/09/07 11:30:51
>>701
それ自体が>>699の誤読の見苦しい言い訳であり
脳内からはみ出たお前の妄想じゃんw
704:デフォルトの名無しさん
09/09/07 12:10:27
>>696
classと無関係なただの関数はself書かなくていいよ
705:デフォルトの名無しさん
09/09/07 12:13:24
お前は何が言いたいんだ
706:デフォルトの名無しさん
09/09/07 12:15:07
基地外が暴れだしたか
707:デフォルトの名無しさん
09/09/07 12:22:47
今更selfがなくなると違和感ありまくり。
708:デフォルトの名無しさん
09/09/07 12:44:13
解説ありがとうございます。でもやっぱりわからない。
>>702
>デコレータは関数を引数にとって「何か」を返す関数。
>クラス宣言の中でデコレータを使うと、デコレータの返したモノがクラスのメンバになる。
↑これはわかる。↓これがわかんない。
>そうするとコンパイル時に「何か」を決定できないので暗黙の引数を追加できない。
・コンパイル時に「何か」を決定することと、暗黙の引数を追加することに、どういう関係がありますか?
・コンパイル時ではなく実行時に決定するのではだめでしょうか。
・暗黙の引数を、追加するのではなく最初から追加しておけばいいように思うけど、それだとまずいでしょうか。
だれか時間のある人教えてください!
709:デフォルトの名無しさん
09/09/07 12:45:54
オナニー言語やね
710:デフォルトの名無しさん
09/09/07 14:42:38
低脳はPHPがRubyをやればいいよね
711:デフォルトの名無しさん
09/09/07 14:54:08
またRuby厨が荒らしてるのか
まったく・・・
712:デフォルトの名無しさん
09/09/07 18:04:02
>>698
デコレータは関数を関数に変換するもの(最近はクラスもできるが)。
self必須にすることで関数とメソッドはほぼ互換になる
>foo.meth(arg) == C.meth(foo, arg)
ここで、C.methは関数扱いできる。
メソッドが関数として扱えるので、
メソッドのデコレータは関数のデコレータを作るのと同じやり方でできる。
逆にself省略できるようにしたらメソッドのデコレータを作るのが難しくなると思う。
713:デフォルトの名無しさん
09/09/07 18:20:37
>>712
若干の冗長性が柔軟性を生むいい例だね。
Pythonは仕様の簡潔性が特徴のスクリプト言語なわけで。
(予約語や特殊な文法が少ない)
714:デフォルトの名無しさん
09/09/07 18:33:22
>>712
厳密に言うと、デコレータの出力は関数とは限らないよね。
@property
def foo(self):...
みたいにすると、 foo は foo.__get__() というメソッドが定義されたオブジェクトになる。
715:デフォルトの名無しさん
09/09/07 18:37:47
すげー今更だけどこれって紹介されてたっけ?
Python 3.0開発者ガイド:コア言語の変更点
Python 3.0の主要な言語機能
URLリンク(codezine.jp)
Python 3.0開発者ガイド:数値、文字列、データ
URLリンク(codezine.jp)
716:デフォルトの名無しさん
09/09/07 18:41:09
>>714
いや、まぁそこら辺は厳密性を犠牲にして説明しやすくしたということで(ry
717:デフォルトの名無しさん
09/09/07 19:08:14
codezineの翻訳はクソ
718:デフォルトの名無しさん
09/09/08 02:33:13
>>717
神降臨
書き換えてこい
719:デフォルトの名無しさん
09/09/08 09:37:04
reportlabでpdfを作ると
同じものを作っても作るたびに
出来るファイルのサイズが違うのですが
こんなもんなのでしょうか?
pdfデータに日時が入ってるのかな
720:デフォルトの名無しさん
09/09/08 10:24:59
帝国ピストンはMLで質問しろよ
721:デフォルトの名無しさん
09/09/08 11:47:07
動的に渡す関数(メソッド内で関数を定義して戻り値で返すような)って、
自由変数の束縛はいったいどうやるんだ?
そういうことをやりたいときはグローバル変数使うかクラス使うかしかないんだろうか……。
722:デフォルトの名無しさん
09/09/08 12:31:53
やってからいえ
関数の呼び出し->local名前空間の生成->関数オブジェクト生成->local名前空間の解放->関数オブジェクト返る
関数オブジェクトから参照してる変数は上位の名前空間が消えてもクロージャな参照が残ってるからGCに回収されずに使える
723:デフォルトの名無しさん
09/09/08 15:21:31
>>やってからいえ
その言葉をそのまま返そう。
外側のメソッド[A]で定義した関数内関数[B]で[A]のローカル変数aを[B]内で使用しようとしたとき、
[B]内でそのままaと書くと未定義参照エラーになる。
かといって[B]の引数で与えても値渡しなのでa自体を書き換えることはできないよね。
724:デフォルトの名無しさん
09/09/08 15:32:29
python3 nonlocal
725:デフォルトの名無しさん
09/09/08 15:38:48
>>> def fa():
... a=3
... def fb():
... a=5
... print a
... print a
... return fb
...
>>> b=fa()
3
>>> b()
5
726:デフォルトの名無しさん
09/09/08 15:42:35
nonlocalをpython2.xで模倣するときは
・L=[x]みたいにリストにして、L[0]に対する操作にする
・f.x = xのように関数の属性にして、f.xに対する操作にする
727:デフォルトの名無しさん
09/09/08 15:53:18
>>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
>>>
728:デフォルトの名無しさん
09/09/08 16:05:07
>>726
ですよねー。
ふと調べてみたらそれについて記述したページを見つけたよ。
URLリンク(www.shido.info)
実際にやってみたら
関数内関数[B]の中だけじゃなくて、
外側のメソッド[A]の側でも配列参照してあげないと
変更後の値にアクセスできないね。
実用にはなるんだけど不便だ……。
ともあれ、やり方がわかったよ。ありがとう。
729:デフォルトの名無しさん
09/09/08 18:11:51
>>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'
730:デフォルトの名無しさん
09/09/08 18:14:10
>>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
>>>
731:デフォルトの名無しさん
09/09/08 18:40:00
>>727 >>729-730
Pythonのニシキヘビ共が、タチコマみたいな会話してるみたいで萌えたw
732:デフォルトの名無しさん
09/09/09 03:07:25
pprintを使ってて、読めなくなった日本語をそのまま、読めるようにしたい。
>>> k=dict(hoge=u"欝")
>>> k
{'hoge': u'\u6b1d'}
>>> r=pprint.pformat(k)
>>> r
"{'hoge': u'\\u6b1d'}"
>>>
これを、pprintのフォーマットを保持したまま
"{'hoge': u'欝'}"
みたいに人が読める形に、出来ませんか?
733:732
09/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'欝'}
配列の中に入った日本語とかも効くようだ。
734:デフォルトの名無しさん
09/09/09 07:20:56
関係ないけど /usr/bin/env を使うのは環境依存でハマる事があるからあまり良くない気が。
735:デフォルトの名無しさん
09/09/09 12:17:23
環境依存ではまらないように設けた仕組みだろうに、
環境依存で動かないなんて本末転倒だな。
736:デフォルトの名無しさん
09/09/09 12:20:34
> /usr/bin/env を使うのは環境依存でハマる
具体的に詳しく。
/usr/bin/env が無くて /bin/env とか、
PATHの設定に問題が、とか?
737:デフォルトの名無しさん
09/09/09 12:30:11
/usr/local/bin/env
738:デフォルトの名無しさん
09/09/09 13:07:17
>>734
おれも詳しく知りたい。
#!/usr/bin/python
#!/usr/local/bin/python
はよくなくて
#!/usr/bin/env python
とするほうがいいとずっと思ってたんだけど、違うの?
739:デフォルトの名無しさん
09/09/09 13:17:43
734は相当劣悪な環境を使っているに違いない。激しく同情する。
740:デフォルトの名無しさん
09/09/09 13:20:49
レンタルサーバで使えない
741:デフォルトの名無しさん
09/09/09 13:21:17
HOME以下に自分でビルドしたPythonをインストールしてパスを通してるとき、
/usr/bin/meld とかディストリビューションのアプリが #!/usr/bin/env 使ってて
軒並み動かなくなったなぁ。
742:デフォルトの名無しさん
09/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()
743:デフォルトの名無しさん
09/09/09 15:54:45
>>741
どうでもいいところでハマってそれを自慢したがるド変態のM夫君っているものですね。
744:デフォルトの名無しさん
09/09/09 16:07:48
質問の本題とは関係ないのだが、
> #!/usr/bin/env python -u
shebang で複数の引数を渡そうとした場合の動作は移植性がない。
745:デフォルトの名無しさん
09/09/09 16:36:04
>>743
でもこの場合は、単に君が、どうでもいいところで「こいつは自慢してるんだろう」と誤読する
キチガイなだけでは?
746:デフォルトの名無しさん
09/09/09 16:45:37
#!/usr/bin/python
にすればいいじゃん?
747:デフォルトの名無しさん
09/09/09 17:06:46
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
09/09/09 17:07:36
訂正。
× py2 sys.stdin
○ py2 iter(sys.stdin.readline, None)
○ py3 sys.stdin
○ py3 iter(sys.stdin.readline, None)
749:デフォルトの名無しさん
09/09/09 17:08:49
出力がバッファリングされてるんじゃなくて、
> for line in sys.stdin:
これのために、入力が終わるまで実行が止まってる。
for line in iter(sys.stdin.readline, ""):
こうする。
750:デフォルトの名無しさん
09/09/09 17:21:07
ああpy3kのf.__next__は単純にf.readlineを呼び出すだけみたいだ。
ドキュメントには先読みすると書いてあるけど、たぶんこれはドキュメントのバグ。
751:742
09/09/09 17:36:41
>>744 ありがとうございます、勉強になります!
>>747-750
ありがとうございます、出来ました!
バッファリングの問題じゃなかったんですね、お恥ずかしい。
752:デフォルトの名無しさん
09/09/09 17:49:21
>>745
変態のくせにプライドだけ高いなんてどんだけひとりぼっち君。
753:デフォルトの名無しさん
09/09/09 18:00:03
>>752
今度の設定はプライドか。ってか俺は>>741ではないし。
なんか君のキャラ設定って、鏡に映った君自身っぽい。
754:デフォルトの名無しさん
09/09/09 19:31:14
>>753
>なんか君のキャラ設定って、鏡に映った君自身っぽい。
755:デフォルトの名無しさん
09/09/09 19:52:00
自分のキャラ設定は鏡に映った自分自身という、再帰的新感覚キャラ「なんか君」
756:デフォルトの名無しさん
09/09/09 20:06:07
てっきりスルーされると思ったらそうでもなかった。
env の話はこのへん分かりやすかったです。
URLリンク(ya.maya.st)
757:デフォルトの名無しさん
09/09/09 22:23:02
情けないようで逞しくもある
758:デフォルトの名無しさん
09/09/09 22:45:56
俺はUnix系の環境持ってないから分からんけど
#!python
だとダメなの?
759:デフォルトの名無しさん
09/09/09 23:48:18
堂々巡り開始
760:デフォルトの名無しさん
09/09/10 12:56:13
>>758
#!./python
761:デフォルトの名無しさん
09/09/10 13:48:03
emacsでpython編集してたら、なんか嫌になった
netbeansにしようかなあ
762:デフォルトの名無しさん
09/09/10 14:44:37
>>760
えーと、どゆこと?
パスが必須ってこと?
それとも、そういう意味に解釈されてしまうってこと?
763:デフォルトの名無しさん
09/09/10 15:35:12
>>761
バイナリをテキストエディタで編集しちゃダメですよ。
764:デフォルトの名無しさん
09/09/10 15:40:31
slimeだったらタグファイル作らなくてもタグジャンプしてくれたり、
何も設定しないデフォルトでほとんど何でもできちゃうのに
python.elが貧弱すぎる
765:デフォルトの名無しさん
09/09/10 15:44:17
うちの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
で作ってるよ
766:デフォルトの名無しさん
09/09/10 17:51:22
stow使ってる
767:デフォルトの名無しさん
09/09/11 03:05:13
>>761
kondoはどうよ?emacsキーバインディングもある
URLリンク(www.activestate.com)
768:デフォルトの名無しさん
09/09/11 03:35:09
>>767
もちつけw
769:デフォルトの名無しさん
09/09/11 11:01:20
こども? 近藤さん?
770:デフォルトの名無しさん
09/09/11 11:35:07
Python 3 シリーズを将来使うために
今 2.3 とかで動かしているスクリプトを
メンテのたびに 2.6 に移し始めてます.
以降のためのガイドライン(from future importとか)
のページってありませんか?
出来れば日本語だとうれしい・・
771:デフォルトの名無しさん
09/09/11 12:02:29
>>770
>出来れば日本語だとうれしい・・
Rubyなら日本語の情報が盛りだくさん!
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4179日前に更新/189 KB
担当:undef