以上
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。
アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。
京都大学霊長類研究所
┌─┐
│●│
└─┤
_ ∩
( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘
x sinπr^2
o 4πr^2
未だに近所の割と大きな本屋さんにPythonの本が少ないことがなげかわしい
import aaa
import bbb
って書いたときと
import bbb
import aaa
って書いたとき、別のエラーが出ます。なんでですか?
前者
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named aaa
後者
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named bbb
どっちのモジュールもない
上からimport文を実行してくから
import __future__ with_statement
を後置きで書くとエラーが出ます
>>11 こんなん出ましたけど
>>> import fortune
Has anyone realized that the purpose of the fortune cookie program is to
defuse project tensions? When did you ever see a cheerful cookie, a
non-cynical, or even an informative cookie?
Perhaps inadvertently, we have a channel for our aggressions. This
still begs the question of whether the cookie releases the pressure or only
serves to blunt the warning signs.
Long live the revolution!
Have a nice day.
>>14 fortune と futureは違うだろ。
def index(iterable, cond):
for i, x in enumerate(iterable):
if cond(x):
return i
return None
みたいなのって、標準でないでしょうか。
itertools.ifilter(cond, enumerate(iterable))
が近いかなぁ。
今pythonのドキュメント見たら組み込み関数のページの先頭に関数一覧が追加されてて地味に改善してるんだなと感心した。
前スレの話題ですけど、importの順番で挙動が変わるようなパッケージがあれば教えてください。
>>979 > それは同じだけど、例えば
> from math import *
> from cmath import *
> と
> from cmath import *
> from math import *
> は意味が違うよ。
のようなしょうもない話じゃなくて、
import aaa; import bbb
と
import bbb; import aaa
で挙動が変わるような例があれば教えてください。
bbb.pyがsys.modules["aaa"] = someobjしてる場合とか
それぞれが共通のモジュールを読み込んでいて、モジュールの変数を書き換えている場合
例えば、
import sys
sys.path.append('/home/aaa')
>>22 なるほど。ありがとうございます。
ほかにはありませんか。こういうときに挙動が変わる、というのをもっと知りたいです。
>>23 何でも人から教わるんじゃなくて、
importの原理は前のスレで説明したから
自分で考えるといいよ。
FTPサーバのファイルのリストをGUIで表示したいんだけど何か良い関数ないですか?
tkFileDialogじゃサーバのフォルダは指定出来ないみたいなので
Pythonで、
x ||= foo()
みたいなのってできないの?
いちいち if not x: x = foo() とかだるいんだけど。
x!=foo()
>>23 基本的に、副作用伴うものだったら、変わる可能性があると思った方がいい。
あと
>>8は、例としてはちょっとアレだが、import文自体が副作用を伴うからモジュールに副作用がなくても動作が変わる例
hoge = fuga() if hage else hige
というコードの場合
hage が False のときは fuga() は実行されないんですよね?
import hoge if hage else hige
とかも無理っぽいですね
スレ立ててテンプレ連投する奴って暇だよね、偽善者だし
>>1乙
>>34 シーッ
おだてておけば何度でも次スレ立ててくれるから
そう思ってても誰も言及しないんだよ
>>26 Rubyist?Pythonでコード書いたことある?
そんなのが必要なことはまずないはずなんだけど。
そもそもPythonは英語を書くようにプログラミングできるのが楽しいのにばかだなー
Pythonのライブラリリファレンスのショボさはどうにかならんのか。
使い方もよく分からんじゃないか。
>>38 Pythonのリファレンスでしょぼかったら、Rubyなどどうなる。
分からないことがあったら、ここで何でも質問するといいよ。
>>38 本家の英語版の構成が洗練されていないからどうしようもないよ
問題を感じなくなるまで慣れればいいさ
>>39 お〜どうもありがとう。
Rubyのリファレンスはもっと酷いのかw
てっきり日本発の言語だから情報豊富かと思ったんだが
マニュアル読んで意味不明の場合は
/usr/lib/python2.x/*.py の import するソースを見るのがお勧めっす
Pythonのソースは読みやすいし、実際にどういう設計になっているのかも分かって勉強になるよぉ
>>40 頑張るw
>>42 ちょっとめんどくさいけどそれが良いかもね〜どうもありがとう
黒魔術の多いC++やPerlだとソース嫁って言われると嫌だけど、
Python ならむしろ詳細な部分は日本語より判りやすい。
日本語は概要だけで、詳説はコードを嫁でおk
少しでも長いソースコードだと Offside Rule を追い掛けるのが辛くて
目がショボショボしてくる
python.jpのは見ない方が良いよね
>>46 なぜ?
Python 2.6 だから若干古いが、十分使い物になるし、
最近は原文へのリンクもあって、日本語が理解出来ない場合はすぐに
英語に飛べるようになってるよ。
またPython信者か。
>>36 >そんなのが必要なことはまずないはずなんだけど。
そう言い切る根拠はなに?君にとって必要なかったから?
ドキュメントは充実してるけどな。
あれだけで入門書はいらない
>>49 それだと
var[1].name = val[1].name or 'default'
がめんどうだよね。面倒というか、同じものが2回繰り返されるのがちょっと。
左辺が短い変数ならいいけど。
せっかく 0 < val[1].value and val[1].value < 1 は 0 < val[1].value < 1 と書けるのに、残念。
val[1].nameに0や[]が入っていて涙目、まで読んだ
なんか「他の言語ではこんなに短くかけるのに!」ってレスが目立つな
pythonってそんな言語じゃなくね
スキルの低い奴はそういう議論しかできないものさ
>>47 日本語が間違ってる訳じゃないのに誤訳が多いからかえって混乱する
>>51 当然
var[1].name = val[1].name if val[1].name else 'default'
と書きます
>>55 見つけたら報告してあげなよ。
翻訳してる側だって日本人のボランティアなんだぜ。
58 :
デフォルトの名無しさん:2011/02/18(金) 02:44:47
O/Rマッパ == IT土方支援ツール
>>58 悪かったな!
むかしIronPythonで使えるO/Rマッパがろくに無かったから
自作してまで利用したよ!
box battery
ORマッパーってSQLテンプレートみたいなの?
DBテーブルをクラスに置き換えるようなもの
そのクラス変数になにか書き込むと該当するレコードにその値がインサートされるみたいな
SQLに慣れている人にはおおむね不評だけど
SQLに慣れていない人には重宝される傾向があるよ
>>62 >SQLに慣れている人にはおおむね不評だけど
>SQLに慣れていない人には重宝される傾向があるよ
わろす
RDBでよく使われるSQLは手続き型や
オブジェクト指向のプログラミング言語とは文法が違うから、
そのままシステムに組み込むと相性がわるいんだよ。
なので、手元ではDB上のレコードをインスタンス化することでアクセスしやすくしている。
レコードのカーソル移動はforループで表現する。
それはORMの一部を表現してはいるけど
本質的な話じゃないね
RDBMS嫌いだ。
NoSQL万歳。
>>66 それでかっこいいことを言ったつもりかね。
SQLとプログラミング言語(Python)が相性がわるいということを説明して、
DB上のデータをPython上のオブジェクトとして扱えるようにしてることを説明している。
これで足りないってなら、難癖付けてないで
自分の言葉で補足してくれればいいじゃん。
ACID性が必須なことというのはあるでしょ
関係データベースである必要があるかどうかはまた別だけど
>>65 LINQとかから見ると古い発想に見えるな
関係代数。関係論理。ボイスコッド。閉包。うんぬんかんぬん。
全部わすれた。
>>69 >ACID性
トランザクション処理は明示的に行うべきで、そこは隠蔽してないよ。
>LINQ
C#で実際そうだったように、言語に対して相当なチューニングが必要。
ま、PythonでもLINQを目指した実装はあるみたいだから、
興味があれば使ってみればいいよ。
LINQは、メリットよりも、
言語仕様を複雑にしてることが気掛かり。
>>71 あーまぎらわしかったかごめん
ACID性云々は、RDB嫌いNoSQLマンセーつってた人へのレスね
ORMで実用レベルに達している物は皆無
LINQはヘジスバーグが悪に魂を売った結果。
正規化しなくてもいいじゃない。みつお。
列指向データベースってなんですか
BigTable
>>74 >ORMで実用レベルに達している物は皆無
データベースに詳しそうですね。
実は自分でORMを作っているので、参考までに他のORMのどのへんが実用レベルに達してないか、語ってくれませんか。
死にたい
81 :
デフォルトの名無しさん:2011/02/19(土) 15:17:52
Pythonの公式サイトに中国語のメニューがあるんだか
いつからあるんだ?
svn log -r 13591
https://svn.python.org/www/trunk/beta.python.org ------------------------------------------------------------------------
r13591 | georg.brandl | 2011-01-25 06:36:13 +0900 (Tue, 25 Jan 2011) | 1 line
Add Chinese-language download link leading to the alias /getit that is not blocked by the Great Firewall of China.
------------------------------------------------------------------------
Great Firewallが関係してるの?
すごいな
もっとザルかと思ってたけどそんな細かいとこまでフィルターかかってるのか
そのへん区別できないのは逆にザルじゃね
これってSSLで通信しても検閲されちゃうの?
国外とはHTTPSできない
90 :
36:2011/02/19(土) 23:28:34.76
>>48 俺にとって必要ないってものあるけど、PythonはRubyがnilを返すようなところでは
大体例外を投げるからってのが理由。
どっちがいいかは好みの問題。
Pythonでマルチスレッドの勉強をしております。
threading.Threadを使って別スレッドで処理を行っているのですが、
メインスレッドとは別で回しているスレッドはどのように処理されるのでしょうか?
別スレッドではループで処理を行っているのですが、そのループの回転が遅く
全力で処理していないように感じます。
GIL
94 :
91:2011/02/20(日) 00:27:16.44
>>92, 93
ありがとうございます。
http://d.hatena.ne.jp/yatt/20110206/1296967613 こちらのページなどいくつかのページを読んでみました。
具体的にどのようなプログラムか書かせていただきまと、PyGTKを利用したダウンローダを製作しております。
メインスレッドはPyGTKのgtk.main()が走るかとおもうのですが、そこからスレッドを分けてダウンロード処理を
行わせております。
ダウンロードスレッドはバッファサイズごとにループで回しております。
ダウンロードスレッドにはダウンロードサイズをprintするようにしているのですが、全くプリントが行われず、
ファイルサイズも変わらないようなのでダウンロードは行われていないと判断しております。
ですが、当該のプログラムを起動中にC-cでプログラムを中止させようとすると
ダウンロードスレッドが動き出しprintもされ、ファイルサイズも変化します。
これはPyGTKのスレッドが殺されたことで後のスレッドに処理が移るようになったということでしょうか?
また、これはプログラムの処理では解決できないでしょうか?
>>94 ダウンローダか。
しかもダウンロードのバッファを細かく制御するというのなら、
・そこだけC言語で拡張ライブラリ書く、もしくは同等のライブラリを用意する(libcurlとか)
・threadingでなしにmultiprosessを使う
形でGIL負荷過多を回避するといいんじゃないかな。
GUIのスレッドとダウンロードのスレッドは同一である必要性が全く無いので、
まずその段階でスレッドを分けるだろうけどね。
>>94 GTK+でマルチスレッドプログラムを書くときは
gtk.main() の前に gtk.gdk.threads_init() を呼ばないといけないらしいよ。
俺も以前これで悩んだ。
97 :
91:2011/02/20(日) 00:40:53.27
>>95 ありがとうございます。
現在multiprosessを調べています。
最後の2行はどう言った意味でしょうか?
引数でダウンロード設定を行えるPythonスクリプトを別に用意して、
os.popenなどで完全に別のプロセスとするということでしょうか?
ダウンローダごときの並列性でGILは関係ないだろ。
GILが何なのかも分かってない奴が適当なことを言って初心者を混乱させるの図。
101 :
91:2011/02/20(日) 00:52:12.29
>>96 まさにそれで解決できました。ありがとうございます。
解決はできたのですが、勉強中のため他のアプローチがあれば知りたいと思います。
他にもダウンローダのようなアプリケーションで処理を分割する方法があれば
よろしくお願いいたします。
マルチスレッドでやるのがセオリー通りだと思う。
わざわざサブプロセス起動したりしないでしょ。
よし、じゃあ全然分かってない俺に
>>101の現象の説明と解決した理由をしてくれよ。
あとGILの説明もよろしく!
理由: GTKは糞
apache
なるほど糞は褒め言葉ってことか。
>>104よ、お前糞だな。
GILはこのスレのNGワード。
そんなことより俺の部屋にゲジゲジが出現した怖い。
ゲジは部屋を綺麗にしてればあまり出ない。
Gの天敵らしいので、(どっちもどっちかもしれんが)それなりに役に立つ虫でもある。
そんなことより
>>103よろしく!
すいません僕もGILってよくわかんないんです。
どんなジャンルであっても、客層を広げる可能性を持っているのは玄人(くろうと)好みの商品ではない。
素人がカジュアルに楽しめる商品だ。カジュアルな商品こそそのジャンルの間口であって、それを軽んじる
業界は廃(すた)れる。新規の客を弾くからだ。
プロパーに評価される商品が悪いというわけではない。それは業界で確かに必要なものだろう。しかし、
それとは別に新しい客を連れてくる商品を冷遇するような業界は、決して社会のメインストリームにはなれない。
分かりやすいものを軽視する風潮には、商業的に成立するために不可欠な一般客への侮蔑(ぶべつ)がある。
自分の気に入った商品がバカにされるような業界に一体誰が金を落としたいものか。
素人とか玄人とか変な拘りは要らないから
>>103知ってる人は教えてね
>>94 「ダウンロードスレッド」オブジェクトの「現在のダウンロードサイズ」を取得できるようにしておいて、
GUI絡みのコードは全部メインスレッドに集約しとけば起こらない問題じゃないか?
>>109 Wikipedia/アシダカグモ
> 昆虫学者安富和男の著書『ゴキブリ3億年のひみつ』によると、
> アシダカグモが2・3匹いる家では、そこに住むゴキブリは半年で全滅するという。
SUGEE
>>114 でも動きが半端なく速いしデカイよ。初見ならGより怖いと思う。
Python関係ないし
>>103を教えてほしいんだが…。
Qtは糞
もう俺もお前もみんな糞でいいよ…褒め言葉だから
Apacheはクソ。複雑すぎ。
MySQLはクソ。複雑すぎ。
世の中はもっとシンプルになるべき。
「缶詰めの中に缶切りが入っている状態だ」
というフレーズを思いついたのだが、
それを使う場面が思いつかない。
>>119 You've known already where you are standing.
訳: こんなになってるって自分でもわかってるんだろ?楽になっちまえよ
>>119 >「缶詰めの中に缶切りが入っている状態だ」
zip のパスワードがその zip ファイルに入ってるとか?
この缶詰を作ったのはだれだあっ!?
Gとゲジが戦ってるところを見たことがないのですがどうすれば見れますか?
>>121 Translate: Take it easy, you've known already what your standing.
It wouldn't have been better.
You must insert a box battery.
Danger! Danger! High Voltage!
Why you should insert a box battery at least once in your life.
Python is battery included, while my anus is a box battery inserted!!!
what a dirty thread
明日まとめて荒らし通報していい?
明日から働く(キリッ
Врасая гранат!
最初は10行程度のコードで、そこからいろいろ機能追加でコードが膨らんでいくとき
どんな感じで関数化やクラス化、モジュール化をやっていくのがよい?
またはそんなことする必要ないのかな。
>>135 ある程度まで作って全体像が見えてきたら、最初から書き直すとよい。
なぜなら、プロトタイプと本番は違うあり方のものだから。
( ゚д゚)ポカーン
>>136 超同意
>>135 コードが増えてきたら、関数にする。
関数が増えてきたら、クラスやモジュールにする。
ただ、使い捨てじゃなくて、あとから機能が増えていくのが十分予想できる場合は
あらかじめクラス化・関数化しておく。
あとは、自分でテストしやすい単位に分割することかな。
>>139 さあ、なんだろうな。
普通にスクラップ&ビルドでいいと思うが。
コード書くのにストレスがかからない
スクリプト言語だからできる芸当とも言える。
単に個人的な感想じゃねーか
Python 3.2 released
3.2リリース記念かきこ
開発の努力は、標準モジュールおよびPython 3への移植のサポートに注力されました。
ハイライトは:
* unittestモジュールのさらなる改良
* PEP 3147, .pycリポジトリディレクトリ のサポート
* PEP 3149, バージョンタグ付きの動的ライブラリのサポート
* PEP 3148, 並行プログラミングのための 新しい futures ライブラリ
* PEP 384, 拡張モジュールのための安定したABI
* PEP 391, 辞書ベースの logging 設定
* オーバーホールされたGIL実装 -- contentionを減らす
* 拡張されたemailパッケージ -- bytesメッセージを扱う
* 大幅に改善されたsslモジュール -- SSL contexts と certificate hostname matching をサポート
* 設定情報にアクセスするためのsysconfigモジュール
* shutilモジュールへの追加 -- アーカイブファイルのサポートなど
* configparserの多くの改善 -- mapping protocolのサポートなど
* pdb (Pythonデバッガ)の改良
* bytes/string問題に関するたくさんの修正 -- bytes環境 (ファイル名、環境変数)の完全なサポートなど
* 数値演算の整合性/振舞いの多くの修正
>> * PEP 3147, .pycリポジトリディレクトリ のサポート
これはちょっとうれしい。
>>135 同じ処理を何度も書いてる(コピペし始めた)なーと思ったらモジュール化のチャンスだ
同じモジュールを別の用途にも使いまわしたいなーと思ったらクラス化のチャンスだ
>>147 おれも思った
Pythonの流儀ワカンネ
関数とモジュールを間違えた説
関数を共用しようとしたらモジュール化するんだから、良いんじゃね?
>>145 え! pycファイルって何処に持って行っても動くもんだと思ってた
知らなかったぜ・・・
>>151 これは、システムに Python 2.5 と 2.6 があるときなんかに、
同じ py のあるディレクトリをモジュール検索パスに登録しちゃうと、
Python 2.5 が 2.5 用の pyc を作って、 Python 2.6 が 2.6 用の
pyc を上書きして、って繰り返しになるのを避けるために pyc を
バージョンごとに分けるのが当初の目的。
pyc が大量発生してウザくならないように __pycache__ というディレクトリに
移動した。
が、それでわりとクリティカルなエンバグしてる > Python 3.2
一部のコードが間違って .py と同じディレクトリに .pyc を作ってしまう。
LLVMフロントエンドはまだかね。
*.pycって、2.5と2.6で違うの?
2と3とで違うのは分かるんだけど。
>>154 $ hd /usr/lib/python2.6/re.pyc | head -1
00000000 d1 f2 0d 0a d8 e0 17 4d 63 00 00 00 00 00 00 00 |.......Mc.......|
$ hd /usr/lib/python2.5/re.pyc | head -1
00000000 b3 f2 0d 0a 5d b6 f2 4c 63 00 00 00 00 00 00 00 |....]..Lc.......|
先頭2バイトがマジックナンバーになっていて
これが違えばバイトコードの互換性がないということです
>__pycache__ というディレクトリ
これの場所は当然バージョン毎に違う場所だよね?
157 :
デフォルトの名無しさん:2011/02/21(月) 23:59:55.93
Python 3.3が出たら移行するわ。
Mac使ってる方どんな環境でPythonプログラミングしてますか?
昔はXcodeでもPython出来たって聞いたのですが
今はObjective-C専用環境になってしまったらしく無理っぽいです。
ちなみに自分はgVimで書いてますがプロジェクト管理をもうちょっと簡単にしたいです。
>>159 プロジェクト管理とやらをもうちょっと詳しく。なにをどう簡単にしたいのか。
GNU/ScreenとVimだけでやってる。VimはOmni補完もできるし。
vimはPythonとの親和性高いよな。
dd, yy, o, Shift+v, >>, <<
vim使ってる人ってクリップボードからのペーストってどうやってるの?
インデントが無茶苦茶になるけど
ありがとう。ひと手間いるんですね。
167 :
159:2011/02/22(火) 21:24:54.71
>>160 プロジェクト管理はXcodeで使われてる「プロジェクト」って用語のままです。
つまりはアプリケーション管理ですね。
最近iPhoneアプリ作ってるのもあってXcodeを覚えだしたので
Pythonもこれで書けたら便利だなーって思ったのです。Xcodeは無理だったけど
もしかしてMacでPython向けのIDEがあったりするのでかなって思ったのです。
Vim 慣れてくると、無意識でコマンドが打てるようになってて、
人間すごいって思う。
タッチタイピングも、意識するとどのキーがどこにあるのか
自信を持って答えられないけど、無意識だと全キーをすらすら打てる。
英語の勉強もこれと同じで、あまり考えすぎずに、とにかく神経回路に焼きつけて
反射的にできるようになることを目指すべきなのだろう。
ポエム終り。
IDEを批判すると老害扱いされて収監される。
171 :
135:2011/02/22(火) 23:23:32.42
>>136,138,146
遅くなったけどレスありがと。
たまにはちゃんとクラス化したりして
モジュールとして再利用できるようキレイに書き直さないといけいなぁと思った。
EmacsとかPyDevで今まで仕事してたんだけど
この前KomodoとPyCharm試してみたよ。
思った以上に使えるね。
フォーリングが合ってる感じでPyCharmを買ってみた。
フォーリングが合ってるVimからは浮気できない
falling down
>>152 >>154 なるほどー
と言うことはpython2.7で作成したpyoをpython2.6環境にもっていっても動かないかもしれないのか・・・
ちょっと試してみるっす
176 :
175:2011/02/23(水) 09:20:42.77
RuntimeError: Bad magic number in .pyc file とメッセージが出て動かなかったよ
バージョンは2.6とか2.7のメジャー番号だけ合わせればよいのだろうか?
>>175 動かないっつーか、特定のバージョンのPythonでコンパイルした
Pythonプログラムは、それだけで配布するなら
Pythonインタプリタも一緒に配布せんといかんでしょ。
ライセンス上ということでなしに、純粋にポータビリティーの確保として。
>>176 バージョン番号の x.y.z は、 x = major, y = minor, z = micro
で、 minor まで一緒なら互換性がある。
179 :
デフォルトの名無しさん:2011/02/23(水) 13:30:41.67
180 :
Perl忍者lvl2(悪) ◆M5ZWRnXOj6 :2011/02/23(水) 21:40:44.07
Python使いの技ってなに?
教えてくれないかな?
ぼくに
かっこいい名前のやつない?
マジカルインクリメントみたいな
182 :
Perl忍者lvl2(悪) ◆M5ZWRnXOj6 :2011/02/23(水) 22:04:42.85
なんで氏ねっていわれなくちゃいけないんだろう
運なんだよねこれも
来未の運理論で検索してね ぼくのブログだから
糞コテの上にマルチ
184 :
Perl忍者lvl2(悪) ◆M5ZWRnXOj6 :2011/02/23(水) 22:08:33.50
あなたは、運についてしっていますか?
何言ってんだ。技の名前に決まってるだろ。
理解したなら出てけ。
186 :
Perl忍者lvl2(悪) ◆M5ZWRnXOj6 :2011/02/23(水) 22:12:52.06
ひゅひゅだよ
当然お前らが活躍してるんだろ?
120年後の未来では
韓国うまれのチョンソンに馬鹿にされたよPythonは
>>189 稲田さんは精力的だなあ。
エキスパートPythonプログラミングを
さっき買ってきて、読み始めてるところ。
今のところ目新しい情報は特にはないけど、復習にはなるな。
LLスレからゴキブリが出てきた
もう意思表示は済んでるのであとはスルーで
Wiki的なシステムで翻訳できるようにしてほしい...
>>197 Wiki的なシステムを使っていて、原文のアップデートとの対応を
ちゃんと管理できてる翻訳プロジェクトってあるんかな?
>>197 だから187のシステムでできてるって。
しかも汎用のWikiじゃなくて翻訳プロジェクト専用のものが。
>>187 これでいいんだけど、例えばライブラリリファレンスが全部library.poに
まとめらえてたりするのはいただけない。デカすぎてわけがわからん。
各.rstファイルごとに.poファイルを作ってほしい。
>>199 これは、Sphinxのi18n機能(開発中)のもののサンプルとして
pootle という翻訳インタフェースをつけたものなんだけど、
実際やってみようと思ったらテキストエディタでゴリゴリ書く方が速いんだよなぁ。
Python 3 からは、Sphinxのi18n機能で翻訳したいと思ってるんだけど、
それまでに使いやすいインタフェースが用意できるかどうかわかんない。
ライブラリリファレンスの本が出たら売れそうだな
詳しい使い方付きでお願い
でるよ(えいごで
日本語でおk!日本語でおk!日本語でおk!
"Python Modules of the Week"とか
やっぱりRubyこそ最高だな。
情報も日本語だし本の出版数だって蛇なんか相手にならん
はいはい、スレ違いスレ違い。
日本は未来が暗いし、
英語の勉強くらいやっておこうぜ。
おとこわりだ。
英語だけで事足りる時代がいつまで続くか分からんしな…
>>210 よし、俺と一緒にエスペラント始めようぜ。
本なんてrubyもpythonもいらないんじゃないの?
国産ゲームでPythonをスクリプトエンジンとして使ってるものってある?
Luaならたくさんあるだろうけど。
組み込みはLuaのほうが圧倒的に楽だからな〜。
218 :
デフォルトの名無しさん:2011/02/25(金) 10:56:40.25
ttp://python3wos.appspot.com/ ここってどの程度正確なんだろう
greenletが赤色になってるけど、ふつーに3.1のインストーラ配布されてるぞ
もっとも、setup.pyでなぜかsetuptoolsを使っているので
ソースからビルドする場合はsetup.pyを修正してdistutils使うように
直さないといけないし
PyCObject_FromVoidPtr()のせいで3.2ではコンパイルエラーになるようだったから、
その辺を考慮してのことなのかな
しかしいつになったら3.xのがメジャーになるのか全然わからんなこりゃ
Perl6みたいになると思うよ
If a module is red though it supports python 3 it's because
they don't have the "Programming Language :: Python :: 3" tag.
Consider contacting the maintainer to fix this.
だって。
Python 3 に 2.x 互換モードとかあればよかったのにね
>>221 なるほど、そういうことだったのか
サンクス
NetBeans IDEってPython向きですか?
Eclipse+PyDevでいいと思うよ
pythonでもそうでなくても、eclipseよりnetbeansを使ったほうが良いって場合とか無いんじゃね
eclipseですら過剰装備
俺はアホなので、
printfデバッグしかできない。
Python だと焼き畑デバッグがやり辛そうね
vim で十分だし vim のキーバインドが苦手な人は 普通のエディターで十分
統合環境は生産性を著しく阻害する
そう云う奴が多いし、その意図も分かるけど、はっきり言ってどっちでもいい
お前のやり方を押し付けるなとしか思わない
スクリーンエディタは変態すぐる
GUIのvimでたら使う
節子〜、それもうvimやない、gvimや。
初心者としては統合環境を使いたいです。vimとかemacsとかはごめん
__,,..、、- - - .、、...,,___
,,、‐''"~ ̄  ̄``''‐、、
/ \
/ ヽ
/ ヽ
/ / ~~` '' ‐- 、、 ,,__ __ ,,..、、 -‐ '' "~~\ ヽ
| / __  ̄ __ ヽ |
.| { ´ ‐- ....__ __... -‐ ` } .|
.| 〉,,・^'' - .,, ~ i ~ __,,.- ^`・、.〈 |
./ ̄| /,/~ヽ、 `'' ‐--‐ ,.| 、‐-‐'' "~ _ノ~\,ヽ | ̄ヽ
| (` | / ヽ,,_____`‐-、_、..,,___ノ八ヽ___,,.._-‐_'"´___,, ノ ヽ .|'´) |
| }.| ./' \二二・二../ ヽ / ヽ、二・二二/ 'ヽ | { |
.| //| .| / | |. \ | |ヽヽ|
.| .| | .| / | |. \ | | | .|
|ヽ.| | / .| |. ヽ .| .|./ .|
| .| | / | | ヽ | | / / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ヽ .| | / .| | ヽ | | / | 用件を
.ヽ.| | / '二〈___〉二` ヽ | |./ <
| | `-;-′ | | | 聞こうか…
iヽ|. ,,... -‐"`‐"`'‐- 、、 |/i \_________
| ヽ /...---‐‐‐‐‐----.ヽ / .|
| ヽ. ,, -‐ ''"~ ~"'' ‐- 、 / |
.| ヽ ! ./ .|
,,| ヽ. | ./ |、
|\. ヽ / /.|
.|. \. ヽ、____ ___/ / .|
' `  ̄ ̄ ´ '
vimとかemacsってリファクタリングはどうしてるんだろうっていつも思う
ちまちま手作業でやるんだったら使う気にならないな
vim程度を満足に使えないスキルのない奴は何やっても駄目だって
>>237 vimで統合環境とかipythonみたいに補完するのはどうやんの
vim信者うざいけど、便利に使うにはどうせコマンドプロンプトやターミナルを複数起動することになるから
vimしか使えないという環境でもなければ、無理に使う必要はない
リファクタリング → 元々ちゃんとコーディングできてない奴がやること、必要ない。
補完 → 無知・無能がコーディングする為の機能、必要ない。
頭が静的(笑)
vimはいつから優越感に浸るためのツールになったんだよクソワロタ
俺はこんな不便な環境でも仕事やってきたんだぜ
っていうロートルが騒いでるだけだろ。
>>239 そこはscreenだろう
それとvimの複数起動とか何処の低脳だよTab使えTab
>>245 vimが不便と思っているうちはまだまだド素人
Pythonのスレだと思ってたらいつの間にかvim vs IDEの宗教戦争が始まってた
エディタ論争は他でやってね
で結局IDEの何が悪いんだ?
>>251 なんも悪くないよ
Python付属のidleだってIDEでしょ
え?
馬鹿には無理
補完はneocomplcacheで我慢できるけどデバッガがなぁ
>>256 そもそもPythonのデバッガってどれも安定性悪くない?
>>246 Vimでtab使うくらいならgvimの方がどんだけ便利か
IDEはコンパイルしてくれるし構文の間違いも指摘してくれるしコードの補完もしたくれて 便利じゃん。
vi厨はCUI操作をひけらかしたいだけ
デバッガの安定性云々言う香具師はデバッガを使いこなせない低脳
Pythonでデバッガとか情弱の極みだな
Python厨にVimカッコイイの風潮が強いことは良くわかった。
pdbでいいだろ
フロントエンドが欲しいよ
キーボードから指離したくないというのはある
>>263 多分もともと言語自体IDEとの相性がJavaや.NETほど良くはないのが
分かりきっているので、不快に思うのだろう
キーボードから指を離すぐらいなら死を選ぶ・・・らしいよ
vimでキーボードから手を離さずにタイピングしようが、
マウス使いながら人差し指一本でタイピングしようが、
プログラマの生産性の違いは微々たるものだ。
プログラマの生産性は、もっと知的で深い部分にあるからだ。
でもGuidoはパックスパワーグローブ使い
って、いま気づいたけど書き込み時刻の桁が増えてる?
衝突防止かなんかかしら
TkinterでMenuのOpenがクリックされたらファイルの選択ダイアログを表示させたいのですが、
以下のコードだと起動したと同時にファイル選択ダイアログが出てしまいます。
どうすれば、Openを押したときにこのダイアログを表示するように変更できますか?
import Tkinter
import tkFileDialog
from Tkinter import *
root = Tk()
# create a toplevel menu
menubar = Menu(root)
menubar.add_command(label="Open", command=tkFileDialog.askopenfilenames())
# display the menu
root.config(menu=menubar)
root.mainloop()
tkFileDialog.askopenfilenamesの関数呼び出しの括弧をとればたぶん動く
askopenfilenamesに引数を渡したものをコールバックとして渡したいなら
defやlambdaでくくったりする
import Tkinter as Tk
import tkFileDialog
def getfilename():
tkFileDialog.askopenfilenames()
root = Tk.Tk()
menubar = Tk.Menu(root)
mfile = Tk.Menu(menubar, tearoff=False)
mfile.add_command(label='Open', command=getfilename, underline=0)
menubar.add_cascade(label='File', menu=mfile, underline=0)
root.configure(menu=menubar)
root.mainloop()
>>274-275 ありがとうございます。
()を付けるとその場で関数が実行されてしまうんですね。
っていうかどうせ戻り値取得して処理続けるんだからdefでいいだろ
>>277 もちろんdefで書いてたんですが、その時も()をつけてしまってまして…。
ここに貼るために現象が再現する最小限のものに書き換えさせてもらいました。
まあ command=sys.exit みたいに一発で決めたい場合もあるしな
command=sys.exit() って書いたら立ち上がった直後に終了とか
PSFライセンスのコードを改変したものはまたPSFライセンスになるのかな
Pythonの標準ライブラリ /usr/lib/python2.5/hoge.py をちょとだけ変更して
自作アプリと同じディレクトリに改変した hoge.py を置くイメージで
配布したいけどその場合ライセンスがどうなるかよくわからないっす
>ちょとだけ変更して
普通に継承するだけじゃだめなんか?
>>281 クラスではなく関数や定数を「継承」する方法があるなら継承でも良いだろう。
大抵元のモジュールを普通にロード→モンキーパッチでいいんじゃないの
元のソースをあえて弄りたいっていうと、100行ぐらいある関数の1行だけ変えたい
とかそんなんだろうか
284 :
280:2011/02/28(月) 04:58:22.86
285 :
デフォルトの名無しさん:2011/02/28(月) 05:54:58.92
>>284 Copyrightと変更内容を書けとしか書いていようにみえるんだけど
>>286 俺が知ってるのはMITのコンピュータサイエンスの入門にPython使うって聞いた。
5分程度のエロ動画が入った30個ぐらいのzipを
1個1個順番に解凍していって1つのフォルダにまとめるPythonスクリプト作ろうと思ってます。
自分で作ってもいいんですが、どなたか既に作った方いたら公開してもらえないでしょうか?
自分の環境は2.5.5のMacOSXです。
>>287 Pythonで作るのが目的じゃないなら
シェルスクリプトで外部コマンド使って書いた方が楽じゃない?
OSXだしそれをAutomator化すればスマートかな。
>>286 らしいよ。
まあ、Linuxなんかほとんどシステム言語的な扱いで
最初からインストールされてるし、OOoとかBlenderとか
フリーウェアでもPythonありきで開発されてるから
当たり前と言えば当たり前なんだけど、日本が特殊なんだろ。
WebプログラマとUnix系プログラマ以外は、
スクリプト言語(?)に見向きもしない人が大勢いるよね。
ちょっとした自動化をC#とかJavaでがんばって書いてる人を見るとうずうずする。
一度触ってもらえば便利さに驚くと思うのだが。
Windowsじゃちょっとした自動化が手軽に書きにくいから、UNIX以外の人が興味ないのは自然じゃないの
>>287 作ったのはあるけどテストしてないのでテスト動画を提供しなさい
Windowsだと、
拡張子が気になる、パス通すのよりショートカット作るのが主流、コマンドプロンプト使いにくすぎ
で自動化とかのスクリプトはあんまり書こうと思わないな。
自動化って考え方自体Windowsにはなじまない
ルート書き換えたりファイルコピーするくらいならバッチファイル使うだろうな
欧米企業: 情報部門がUnixとPythonでサクっと片付ける
日本企業: MOUS保持者(笑)がExcelでクソみたいなVBAを書いて喜んでる
>>296 このまえNHKニュースで、東証が不正取引監視システムを試作したとか言ってたんだけど、
それが何とExcelのマクロだった。この国は大丈夫なのか...
まあもう使われることのない技術とはいえ、
PythonとVBA/VBScriptの生産性の差を考えたらぞっとしてくるよな……。
ほんとOfficeって生産性低いよな
Officeの使用を禁止したら日本のホワイトカラーはかなり生産性あがるよ
高慢だな
欧米の研究者: 統計処理からグラフ生成までをPythonとかRで自動化する
日本の研究者: Excelで一生懸命マウスかちかちして喜んでる
これはマジ
PythonとかRuby使ってたら
先輩「お前、それウルトラCだから」
とかいわれんのかな
上司「他の人のパソコンで動かない物を作るな」
自分「え、インストールすれば動きますよ・・・」
上司「口答えするな!」
っpy2exe
>>302 R言語が使えると言ったらRubyの仕事を振られたでござる
試しにあとでVBA触ってみようかな。どんな感じなんだろ。
VBAでPythonを実装すればいい
309 :
デフォルトの名無しさん:2011/03/01(火) 03:04:26.59
いつの間にかRubyスレ抜いてた
行くぜCIA!
Debian squeeze で、v3.1 の IDEL で日本語を扱えるのは分かるんだけども、
(Win7で確認) Linux上のIDELで日本語を入力するにはどうしたらいいのだろうか。
scim(?)をいれないダメ?
>>284 PSFLはBSDスタイルライセンスだから、二次的著作物の利用についてのライセンスを、原著作物のライセンスと同一にする必要がないはず
Rはcranがいいよね
pythonにも似たようなのあればいいのに
perlはcpanがあるのに
>>313 PyPIがあるし、そこのリポジトリに対して
easy_installやpypmをかけられるよ。
くだすれで質問したんですがレスがもらえなかったのでこちらに移します。
PythonでGUIアプリを作るときに、
ツールキットではなくそれをラッピングした
フレームワークって何かありますか?
Webフレームワークのように、アプリケーションを作りやすくする基盤に当たるものです。
python < R
numpyにできることでRにできないことはない
Rは汎用性ないから
numpy < Rゆえにpython < Rとかプログラミングをやる前に論理の勉強からやり直したほうがいい
winの中で、python使って自動化ってどんなことしてる?
仕事でも、家のことでもいいけど
自宅のFTP鯖のアップロードとかに使ってる
324 :
デフォルトの名無しさん:2011/03/02(水) 19:47:48.33
>>319 numpy < Rゆえにpython < Rとかプログラミングをやる前に論理の勉強からやり直したほうがいい
なぜか R の話が出てくると、このように他人を見下して喜んでいる阿呆が何時も出てくる
R で下のように多項式の加減乗除算ができるか?
from numpy import poly1d as p; print p([1,2,3,4]) + p([4,5,6,7,8])
4 3 2
4 x + 6 x + 8 x + 10 x + 12
R で下のように Jacobi の楕円関数が計算できるか?
import scipy.special as ss; print ss.ellipj(0.5,0.6);ss.ellipkinc(0.5,0.6)
(0.46902039497249631, 0.88318733522387172, 0.93167157381767651, 0.48818128077863659)
おまえに、楕円関数が分かるとは思えんが
327 :
デフォルトの名無しさん:2011/03/02(水) 20:20:23.38
>おまえに、楕円関数が分かるとは思えんが
バロス
フーリエ解析できるの?
ドキュメント嫁
numpy.fftとか
Rをffi経由でpythonから呼べばいいじゃん
誰かそういうの作ってる人いないの?
sageにmaximaはあったけど
numpy使ってる人って何やってる人なの?
俺にはあまりにも縁遠くて想像できない
このスレでの以前の所業が
Matzやバトロワスレでネタにされててワロタ。
我ながら今さら見ると恥ずかしいレスをしていたものだ。
質問者の意図を正確に把握できないというのは
よくあることだから仕方ないにしても、
後から見て人から笑われないような回答をするよう
心がけないといけないな。
>>332 内積とか外積とか出来るから、物理の宿題の計算で使った
>>332 理系学生が研究で使ってるってのが一番多いんじゃね。
あと本業の研究者。
NumPy は Cython とかで簡単に高速なC言語で実装した計算を追加できるけど、
R もできるんかな?
メジャーな言語でCインターフェイスのない言語なんてあるのか
Eclipseでエンコードutf-8で実行したら上手くいくのにシェルコマンド上でpython ***.py で実行するとascii codecs can't encodeになってしまう。。
原因が分かりますでしょうか?
>>339の質問は取り消します。
スレ汚しすみません
考えてたのに。。。
一生懸命考えていたのに。。。
ctypes-opencvの開発の再開はまだか
ズコー
win環境でリッチなエディタはありませんか?
補完だとかIDE紛いな機能はあってもなくてもいいです
pythonに特化したものならpyscripterで十分かと。
俺はnotepad++にプラグイン突っ込みまくって使ってるけど。
python製のCコードの静的解析ツールってある?
>>348 vim, eclise(pydevプラグイン), pyscripter, xyzzy
俺はvimとeclipseを使ってる。
pが抜けてたorz
静的単一代入(せいてきたんいつだいにゅう、英: Static Single Assignment form, SSA)形式は、
コンパイラ設計における 中間表現 (IR) のひとつで、各変数が一度のみ代入されるよう定義されたもので
ある。もともとの中間表現における変数は「バージョン」に分割され、全ての変数の定義がバージョンを表現でき
るよう、通例新たな変数は元の名前に添え字を付けて表現される。SSA ではuse-def 連鎖が明示的であり、
連鎖は要素を一つだけ持つ。
この旅館、高かったでしょ?
(実は半額だったなんて言えない)
本屋で初ぱい(オライリー)立ち読みしてきた
筋力的に腕が磨かれた気がする
>>356 みんぱいにはじぱい持ってるけど
みんぱいで簡単な事は組めるレベルになるし
はじぱいでは奥深い部分もわかっていいお
総じて屑ぱい
>>356 最新の原著(第4版)は1216ページだよ^^
個人的におすすめなのは、Dive Into Python 3かな。
Webで読めるし
Pythonなんて本一冊も持ってないけど
入門書を買って独習したCやJavaより使えてるわ
今じゃ速度以外に欠点がなくてPythonしか使わない
psyco楽しー
>>360 GUI欲しい時もPythonで十分って感じ?やり方しだいなのかなぁ。
PythonでのGUIがいまいちわからん;
guiはqt使うの?
tkかwxで書いてるけど
どれでもCと比べりゃかなり簡単に作れるんじゃない
Linax の世界では、C,C++,C#に並んで、主要なGUI開発言語だしね。
とりあえずどこから(略
今からGUI勉強するなら、wxpythonとqtとtkとどれがいいだろ?
>>368 Qt か wx だな。どちらかと言えば Qt
>>370 勉強するには参考図書などあればいいんだけど
何がいいのかな…
373 :
デフォルトの名無しさん:2011/03/07(月) 08:24:10.37
IDLEとEclipse+PyDevしかないわ
Winのテキストエディタは使えないものばかり
375 :
デフォルトの名無しさん:2011/03/07(月) 08:29:52.38
wxで全部事足りるのでドキュメントが少ないPyQtはスルーした
wxWidgets (C++) の方のドキュメントは Qt4 (C++) に比べると糞だけど
PyQt4 と比べた場合は wxPython の方が充実してるんだよなぁ
PyScripterとか、シンプルでなかなかいいと思うよ。
大規模なライブラリに対するラッパーは、
ラッパー自体のドキュメントに頼るんじゃなく、
元のライブラリのドキュメントを読んでから、どうラップされてるかを考えるべき。
Qt、PyQt/PySideのことね。
C++ で Qt4 使えるようになった後だと
PyQt4 もスラスラ使えるようになったな
それまではさっぱりだった
だけど wx の場合は逆だった
pythonのスレなのでwxが王道ということですね
>>381 別にそれでいいと思うよん。
軽量でかつひと通りの機能があるし。
wxの方がお手軽なのは確か。
オレはQtでサポートされてる高度なWidgetや
きれいな描画を求めるからQt系を使うけど。
高度なWidgetときれいな描画という語彙のなさ…これがQt信者の実態だ。
真人間ならTkinterを使おう、wxなどゴミ以下だ。
py2exe でまとめて配布しようと思ったときに
wxPython だとほぼ一つの exe で済むんだけど
Tkinter だと標準装備のくせに一つの exe に収まらずに
でっかいディレクトリいっぱい作ってくれるから嫌いになった
Qt は知らん
pythonに標準装備のくせにわざわざexe化する意味が分からん
wxは別途インストールするのが面倒だからexeにするけど
Python入れてない相手に「使いたいならPythonインスコしろ」ってか?
そりゃ入れて損するもんじゃないけど、言うこと聞いてくれないやつは多いでしょ
Windowsでtkとか頭湧いてるな
Joel Spolsky 「Pythonはアスペルガー症候群ギーク向けの言語」
Anti-Pythonはレッテル貼りのきな臭い自称言語学者
まともなGUIライブラリは存在しない。
WindowsでRubyはアホだが
WindowsでPythonは褒めてやりたい
いつも「なんで日本は ipv6 にそんなに 熱心なんだ?」とか「なぜ日本じゃ Ruby があんなに流行ってるんだ?」 とか尋かれるたびに、
オレは「歪んだナショナリズムじゃないかなあ…」と 答えてきた。
正直いって、何もしなくてもすでに日本のソフトウェア技術はだいぶ下だと思うけど (実際には「技術はあってもビジョンがない」という印象)、
世界での「ソフトウェア知名度」を上げることだけを目標とするなら、 外人の前に出ると急に弱気になって押しがヨワくなっちまう日本人には
どだいムリな話である (ruby はアメリカ人に広めてもらえるようになってよかったよね)。
結局、日本で Ruby が異常に流行っているのは 「自分自身の感覚をアテにできない人が多い」というだけのことにすぎない。 彼らは他人から
プッシュされたものでないと使う気になれないのである。 これはとても気の毒なことだ。 ま、ファッションも音楽もすべてマスコミに流行らされる国だからよ
しょせん 「きれいな Ruby プログラム」などというのは「おいしいウンコ」のようなものである、
Perl は基本的に書く側のことしか考えていなくて、読者のことを考えた言語ではない (Rubyもそう)。
「通」の気分をあじわう、あるいは仲間が欲しいなら Ruby をおすすめします。 どんなつまらんプログラムでも「Ruby で実装しました」というだけでホメてもらえます。 楽しいですよー。
うんこうめぇ
cpenオーサーに日本人すげー沢山いるじゃん
CGI関係では日本が進んでるという話もあるな
cpen->cpan
プログラミング = プログラミング言語 だと思っている
アホは総じてラベルが低い。
>>392 どうしてPython信者はこうキモいんだろう。
ruby信者のマッチポンプ乙
ということにしたいのですね
コンパイラの実装たのしいよ
RubyとかC++のtemplateとか使うと、
言語の機能をエレガントに使うことに注意が行ってしまって、
本質的なことが全然進まなくなる。
俺がアホなだけかもしれないけど。
ror hacks basements but not elegant
Win環境でのオススメRADはありますか?
>>404 PythonにおけるRADとは何ぞや?
メモ帳.exe
>>404 > PythonにおけるRADとは何ぞや?
そのままだけど
C/C++ + MFC におけるRADとは何ぞや? VC++
C/C++ + VCL におけるRADとは何ぞや? BCB
C/C++ + QtSDK におけるRADとは何ぞや? QtCreator
では、Python + xxx におけるRADとは何ぞや?
ということです
xxxの部分はwx,qt,fox,tk,gtk...など
Win環境で快適なRAD環境を構築できるならば気にしません
PyDevやらPyScripterやらEclipse+Python(なんだっけ?)やら、
色々あるとおもうんだが。
なにか特定の環境の感想を聞くならともかく、
最初の一つを探すならググッたほうが早いんじゃね?
>Eclipse+Python
それがPyDevじゃなくて?
ScreenEditor: Any editor without emacs
TextEditor: Any liked: Notepad++, Editra
IDE: IDLE, PyScripter, Eclipse+PyDev
Why Emacs without?
python-mode works for me!
wht wrong with it? you suck.
>>409 ここ2,3日で自分なりに探し試してはいるけど
どれもイマイチなので尋ねてみた次第です。
RADと呼ばれる条件の中で自分が求めるものは
ポトペタ出来るのか
プロトタピング向きか(修正に強いか)
の二つ。
Tkinterのrapyd-tkは扱いづらいのでイマイチ、基本的に遅いので他を探す気になれない
glade,ui,xrcなどのxmlを吐くタイプのものは修正しづらくバインドも面倒
fltk,foxは終わってるようなので選択肢はwxPythonになり
wxGladeは修正はできてもデザイナが扱いづらく不安定
wxFormBuilderは修正がダメ
消去法でVisualWX+エディタとなったけど
VisualWX側が外部エディタでの編集を想定していないので
これもイマイチなんですよね
ソースも公開して無いから弄れないし。
「RAD」って最近は使わない用語だよね。90年代みたい。
ポトペタ出来るのかとかさあ…LLでやることじゃなくね
>>414 それならまず、「GUIアプリの開発」と区切らないとだめだよ。
PythonはCUIもウェブもGUIもできる汎用言語なんだから。
HTMLのフォームでポトペタだってあるわけで。
>>414 wxGlade は糞
wxPython 使うなら付属の XRCed 使うのが一番良い
>>415 確かにDelphiやVBなイメージですねぇ
でも他に当てはまる言葉を知らないもので申し訳ない
>>417 GUIの存在しないRAD環境というのは想像できないので
意味が分かんないです、すいません
>>418 修正不要ならxmlからコード生成すればいいんですが
途中で修正したくなった場合にも対応できます?
所謂プロトタイピングにも向きますか?
マージが大変そうなので全部Dockにして場を濁しちゃいそうです
qtcreator+pysideがいいよ
>>419 >途中で修正したくなった場合にも対応できます?
当たり前です
だから wxGlade は糞なんです
>>420 QtCreatorで使えるのかぁ
参考になるサイトなどあれば紹介お願いします
>>421 試してみます
qtcreatorじゃないやqtdesignerだった
>>422 ちょろっと試してみました
時間を15分程無駄にしました。
勘弁してください
>>423 試す前に気づいてよかったです
wxはコーディングするのに意味がある
だからC++では糞とされるのだ
何でおまえらpysideのwin版リリースされてるの教えてくれなかったの・・・
え?PySideのWindowsバイナリ、3用のが無いじゃん
まさか3系に対応してないの?
ソースからコンパイルしたらいけるんかな
>>427 pysideのWin版なんてずっと前からあるよ。
むしろPythonライブラリでWindowsに対応してないものなんて未だ見たことない。
>>428 Windowsでビルド通ったようなら記事にしてくれー。
Gentoo Linuxだとビルドが自動化されてるからできたけど、
Windowsだと難易度高すぎて詰んだ。
前見たのは半年くらい前なんだ
もしかしてその頃からunofficialならあったのか
それならそうと
駄目だコンパイルできない
誰かPython3.2用のバイナリ作ってくれ
2to3.py
ctypesでwindowsで使えないものがあるとか?
Python Tools for Visual Studio
An integrated environment for developing Python in VS2010
Supports CPython and IronPython
http://pytools.codeplex.com/
何そのゴミ
TextMateみたいなのwindowsにないのかな
notepad++がまともなインターフェイスだと最高なんだけどね
PySide、サイトを見てみるとやっぱりPyhton3対応は
今の所無理みたいだな
しかし、今更2系には戻れんし困ったな
>>437 vimに、プラグイン入れればできるよ。
RedCarかIntypeみたいだけど
前者はRubyでPCを汚染しないといけないみたい
どっちかというと442の読解力の方に問題を感じざるを得ないな
emacsでpython modeが微妙なのは
みんな違う環境使ってるからなんだろうかなあ
446 :
デフォルトの名無しさん:2011/03/11(金) 11:42:55.12
>>437 vim
notepad++
intype
emeditor
>>445 聞いてたとおりruby信者は行間や含みすら読めないバカなんだな
自分の意見が正当と思えないときによく使われる「え?」というレスだが
不愉快極まりないのでやめてほしい、馬鹿は書きこまないでくれ。
えっていう
ネタじゃなくてガチで今までPythonをフィトンと呼んでた俺に何か質問ありますか
どこをどう読めばそうなるの
気持ちはわかる
phyton
phycon
サイコンとガーファンクル
>>446 vimはスクリーンエディタなので使えなかった
notepad++は全く違う上に最新版では古いプラグインが使えない
intypeは開発が止まっててエディタとしての機能すら提供されていない
emeditorはtextmateのかすりもしなかった、どういう使い方してるの?
うーむ。
オレは主にEmEditorで開発してる。
純粋に強調表示、入力支援してくれるエディタとして使ってるだけ。
デバッグ機能とかは無い。
プラグインとかで追加できるのかなあ。
gvimでなんか問題あんの
461 :
デフォルトの名無しさん:2011/03/11(金) 23:56:59.68
たけえよ
そもそも有料ならそれで済むわ
Eclipseではだめなの?
阪神大震災の頃から秀丸一筋ですが何か?
補完とかIDEのような機能はいらんのだよ
Pythonはあまり大規模な構文がないから、
コードスニペットとかの機能は
あまり欲しいという気はしない。
まあクラスやメソッドのテンプレはあってもいいかも。
>>469 あ、なるほど。ディレクトリ名じゃなかったんですね。
原因が分からなくてurllib2で実装しなおして既に動くようになってるんですが、
原因が分かってすっきりしました。
ありがとうございます。
urllib.urlretrieve(url,"./%s" % (url.split("/")[-1]))
Pythonでアクセスカウンタをつくりたいのですが、gifcat.plのようなものはPythonでありませんか?
次に
>>472は「鯖にインストールできません」と書き込む
475 :
デフォルトの名無しさん:2011/03/17(木) 19:28:43.68
なんでpython ってfor文がこんな糞なの?
cライクにしろよぼけ
/* C */
for (i=0; i<10; i++) printf(i);
# Python
for i in range(10): print i
for文で0から9まで表示します
どちらが分かりやすいでしょう?
答え: Python
>>475 どう糞なのかを具体的に書けよ。
Pythonのforループが、今みたいになっているのはいくつか利点があるから。
・アクセスの効率よさ(インデクシングが必要ないから)
・ミスの減少(上と同様の理由から)
・一貫性(必要なインターフェイスがあれば、様々なオブジェクトに適用できる)
それに、Cライクで書きたいときは、range関数使えばいいだろ。
478 :
472:2011/03/17(木) 19:59:23.23
>>473 すみません。手元の環境では使えたのですが、
>>474のいうとおりレンタルサーバで使えませんでした
現在のC系言語の多くはforeachのたぐいを持ってるし
C++ユーザなら
for (std::vector<T>::const_iterator it = foo.begin(); it = foo.end(); ++it)
とか毎回書くのが嫌すぎてBOOSTやQtに頼ったり自家製マクロを使ったり
あるいは関数的オナニーが好きすぎてfor書いたら負けとか思ってるに違いないので
>>475は今時珍しいCしか知らないひとなのかな
日本人なら、 enumerate の綴りが覚えにくいのは仕方ない。
最近GAEのためにPythonばっかり書いてたら、
Perlを書くのが面倒になってしまった。
Flaskたんかわいいお
きも
>>476 cは0から始まって10より小さい間って明示されてるけど
pythonは0-9なのか1-10なのか分からんぞなもし
じゃあ、
for i in range(0,10,1): print i
って書けばいいでしょ
485 :
COBOL最強:2011/03/18(金) 08:03:38.39
IDENTIFICATION DIVISION.
PROGRAM-ID. CNT001.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 CNT PIC 9(3) VALUE 0.
PROCEDURE DIVISION.
PERFORM 10 TIMES
ADD 1 TO CNT
DISPLAY "COUNT = " CNT
END-PERFORM
STOP RUN.
>>486 for i in (0,10):
for(i=0; i<10; i++){
どっちも同じ
ありがたいことにrange(初期, 継続, 加算)でCの基本for文を使える他にも
listを取ることによって他の形のfor文にも使えてこれひとつで事足りる
つまり一貫性のあるコードが書けるということ
次のバージョンは 3.11
下載の次は"ダウンロード"が追加されるのか
メルトダウン
不謹慎上等
Download >>
下載 >>
おとす >>
日本人は中国人と違って英語が堪能だからな
what have you here, korean?
>>476 0 から 9 まで表示します
というのが一番解りやすいけど、
Pythonでこういう表記できるの?
Pythonを知ってる人にとってfor i in range(10)はイディオムだから
これで十分わかりやすいんだけど
どうしても似たように書きたければfor i in range(0, 10)
ただでさえ少ない日本のpython利用者が
今回の地震で何割か減ったかと思うと心が痛みます
みなさまのご多幸をお祈りします
算数もできないのかよ
GPLなモジュールがあるのですが、これをimportしたプログラムはGPLにしないといけないんえですか?
>>501 スレ違い。まあGPLの原理上はそうなる。
bsdでもapacheでもそのへんならなんでもよいかと
現実的には一緒に配布しなけりゃなんでもいい
あ、間違えた、プログラムか。なら全体的にはGPLになるか。
プログラムだからといって、一緒に配布するとは限らない。
py2exe で import してるライブラリもまとめて配布するなら、
GPLにしないといけない。
まとめないのであれば、何でも好きなライセンスを使ってOK。
python付属のライブラリでGPLのがあるって言うこと?
>>506 標準ライブラリ込みで全体がPythonライセンスで配布されてるのに、
GPLのライブラリなんて含んでる訳ないだろ。
いや、sslモジュールはOpenSSLを使っていて、OpenSSLは一部GPLだから、
それを除外しないとGPLになるはず。
なので、Python Licenseで Python を再配布したかったら、OpenSSLから
GPLを除外したものを作るか、sslモジュール自体を除外する必要がある。
それはさ置き、
>>505は、PyQt4みたいな非標準ライブラリについて想定して
書いていた。
ごめん、OpenSSLがGPLを含んでると言うのは勘違いだったみたい。
ninja-ide試そうと思ってBrewでqtインスコしてるんですが
makeを1時間ぐらいやってます。こういうものなんでしょうか?
VimのデフォルトのPythonハイライトでappendってハイライトされますか?
されない
Perlで
while ( $hoge = $geho)
というのは、Pythonではどう書けばいいのでしょうか?
式中の代入は出来ないので
while True:
というwhile(1)相当のものや
for ... in ...:
foreach相当のものなんかで対処してください
>>513 Pythonのプログラムの構成は、こういう風になってる。
式 < ステートメント < モジュール < プログラム
代入とwhileループはステートメント。
ステートメントは式で構成されてる。
while 〜:
の〜の部分には、whileステートメントの構成要素の式でなければダメ。
ステートメントを式として使うことはできない。
だから、代わりの方法は少し冗長だが、
hoge = geho
while hoge:
# ...
# whileの終端
hoge = geho
hoge = True
while hoge:
# whileの先頭
hoge = geho
# ...
while True:
hoge = geho
if not hoge:
break
516 :
628:2011/03/21(月) 05:59:22.62
何でされないことに疑問を感じるのか疑問
appendはリストのメソッドなのでハイライトしてもいいと思うのですが
>>518 では、Vimの設定ファイルを変更してappendをハイライトするようにしてください
やり方はスレ違いなのでググれ
520 :
デフォルトの名無しさん:2011/03/21(月) 12:54:48.35
pythonはじめようと思ったらいきなりpython2とpython3の選択に迫られた
とりあえずどっち選んでも死ぬようなことはないけどPython2でいいかと
3のビューオブジェクトとかバイト列と文字列きっちり分けるあたり
プログラミング初心者には少しとっつきにくいし
みずほやばいね。
日本のシステム開発ってつくづくレベルが低いんだな。
アメリカ様に作ってもらえよ。
誤爆
python2もstrとunicodestrの区別が慣れるまで判りにくいので
初心者向けにはpython3のがいいな
日本語人間に勧められた言語じゃない
そもそも日本語が簡単に扱える言語なんて少ない
日本語だってシンプルに記述することはできる。
自由度が高いので、バカが使うとメチャクチャになる。
Perlみたいなもん。
Python3なら、日本語の識別子でだって
Pythonプログラムは書けるわけだが。
ただしそれが読みやすいかどうかは話は別。
だからと言って、ひまわりはプログラマーが発狂する言語だと思うがなw
プログラマーが日本語人間であることがそもそも間違いだ
英語が母国語の人間にとって普通のプログラム言語はどう見えているのだろう、といった疑問
FORTORUNなんかは、英語話者からすると可読性が高すぎて、
英語を入力したら勝手にコンピューターが答えを出してくれるものと
勘違いした学生が表れた、ナンテエピソードはあるな。
フォートゥランなんて聞いたことのない言語だ
FORTRANだた
パンチカードの時代にFortranコンパイラを作った人間には畏怖しかない。
会社の倉庫にパンチカードの収納箱あるわ
落書きだらけだったけど
Pythonとjavascriptでwebサイト作るのって変?
はい
google app engine をそのまま自分のサーバーで動かせるフレームワークないのか?
web.pyに拡張したらいけないかなあ
国粋主義指向言語RubyがJIS規格になったようです。
JISのJはジャンクのJ
JIS規格になって何か良いことあるの?
自慢できる
>>537 100%互換じゃないけど
GAEの開発環境をそのままWSGIで動かせば動く
>>537 GAE が使い物にならないと悟ったときに
脱出するために自鯖でエミュレートした
俺俺FWならある
546 :
デフォルトの名無しさん:2011/03/23(水) 13:24:05.78
perlってperl/tkでGUIが扱えるじゃん。
pythonもGUIが扱えるの?
Perl/Tk相当のTkinterが標準添付
標準添付以外だとwxPython, PyQt, PySideなんかもある
548 :
デフォルトの名無しさん:2011/03/23(水) 13:35:06.26
え、標準でGUIが使えるんだ、じゃpythonのがいいな。
perl/tkってプログラムサイズに制限があるらしくて、ある程度大きくなると
ファイルを分割しないといけないので不便。
PyQt ってQtなのこれも良さそうだね。
perl使用者の知能指数が計り知れるな
いま PySide1.0.0 ビルドしてみたら、
バグがだいたい消えてまともになってた。
betaの頃は酷かったのだが。
おっ、Windowsで普通にビルドできるようになったの?
>>551 Windows用はバイナリで配布されてるよ。
>>552 Python製のアプリを単体でバイナリ配布するとき、
周辺ライブラリも含めてVisual Studioによるビルドで統一したいのよ。
>>548 Tkなんてあってないようなもんだぜ。wxPythonつかっときなさい。
GTKより100倍マシ
wxpythonとかねえよ
Qtは糞
wxは良いね
Qtは糞
素のtkはアレだがtkinter(tix)はなかなか良いと思うが。
Pyscripter 使いたいんだが、キーバインドをemacsにできないのがなぁ。
誰か Pyscripter の emcas 化をした人いない?
565 :
デフォルトの名無しさん:2011/03/30(水) 19:16:14.76
Pythonを勉強したくて3落としたんだ。
問題集ができたら初心者の仲間入りできるかな?
>>563 Emacsのpython-modeでググッてから言ってくれないか?
>>565 問題を解くより、自分で何か適当な小物ツールでも作ってみた方が
習得するには近道だと思うよ。Pythonに限った話じゃないけど。
ほんとウザいなカス
572 :
デフォルトの名無しさん:2011/04/02(土) 01:18:26.41
>>570 そいつは出鱈目学者だからこれ以上リンク貼るな
忍法帖まとめ
忍法帖は名前欄に
!ninja
とすれば出てくる。
って最近知った。どれどれ
●だか買うと最終書き込みから5分経過すればレベルが一つ上がるらしい。
そうじゃない人は24時間経過すればレベルが一つ上がるらしい。
あと、cookieの設定がうまくいってないとレベルが上がらないらしいから、
何日たってもレベル0,1の場合はHap cookieの設定をチェックだ。
レベル10以上になると
Lv=NN,xxxP『T』
ってなってスレ立てできるようになるらしい。
いまさら?
おそすぎワロタ
test
あは
自作のPythonアプリで
プラグイン機構を用意したいんだけど、
yapsyを使うのが普通なのかな?
俺はzcmlやらなんやらをメチャクチャにカスタマイズした結果普通にimportすればいいという結論を得た
>>579 プラグインは他の方に開発してもらって
それを受け入れるという趣旨なのでファイル名も分からないし、
インターフェイスも申告してもらったのを動的に取得する形が必要なんですよ。
zcmlかあ。Zope系はPythonの中でも独立した勢力、という感じなんだけど、
依存ライブラリ一杯、なんてことにならないんでしょうかね。
zc.buildoutだけは使うつもりだけど。
>ファイル名も分からないし、
これは普通だろうな
単に__import__()つかえばいいだけじゃね
>インターフェイスも申告してもらったのを動的に取得する形が必要なんですよ。
これはよくわからんっていうか無駄に面倒くさそうなアーキテクチャだな
普通は特定の名前の関数(register()とか)を作ってもらってホスト側でそれを呼ぶか
逆にホスト側で公開してる関数をプラグイン側でimport時に走るコードで
読んでもらうかじゃね
pylonsを勉強し始めたんだけどいろんなサンプル見ても各コントローラでコミット文を書いてるだけどそういうもん何でしょうか トランザクションマネージャーみたいのものってないのしょうか
>>580 普通のモジュールとしてimportできればいいだけで
後のこと考えると妙な実装にしない方がいいよ
そもそもPythonのコードが書ける前提なら変な縛りはいらない
>>581,584
まだ調査してる段階なので。
最終的にはどのpluginフレームワークを
使うかを決めないといけないけども。
・アプリ本体側で、プラグインのインターフェイスを決める
・プラグイン作者はインターフェイスに沿ってプラグインを作成
・アプリは起動時に決まったフォルダを調べてインストール済みのプラグインを列挙
・ユーザーに列挙したプラグインを選択して使えるようにする
・プラグインはアプリの配布サイトにsetup.pyでアップロードできるようにする
・エンドユーザーはプラグインをアプリ自体かeasy_installでインストールできるようにする
・プラグインはpluginディレクトリに裸かzipファイルで設置される
こんな感じを想定中
>>585 plugins = {}
sys.path.append(プラグインのディレクトリ)
for plugin in os.listdir(プラグインのディレクトリ):
pluginpath = プラグインのディレクトリ + '/' + plugin
if plugin.endswith('.py'):
try:
module_name = plugin.replace('.py','')
module = __import__(module_name)
dic = module.get_plugin_info()
plugins[module_name] = dic
except:
pass
自分はこんな感じで実装してみた。get_plugin_ingo()はプラグインのクラスとかバージョンとかの入った辞書を返す
プラグインは特定のディレクトリに.pyファイルをつっこむだけ。
なんか誤字とか要らない行があったりしてすまん
ソースからコピペしたら改行が無視されたから手打ちしてこの結果だよ...
plugpyが参考にならかも
>>586-588 どうもありがと。
そのコードだけだと単独の*.pyしか対応できないのでちょっと困るね。
GUIがxmlで分かれてたりするし、
共有ライブラリを含んでたりする場合も考えられるので。
考慮すべきことはまだ色々とあるようなので、もう少し煮詰めてみることにする。
!ninja
ここが書き込み専用スレの後継になったの?
eric って開発環境どうなの
仕事でウェブサイトを作るんだが、web.pyとflaskってどっちがいいの?
flaskがメジャーな存在になりそうなら、flaskにしたいんだけど。
ちなみにPython自体、ほとんど経験ない。
flaskの方がいい
>>593 Flask使ってるけど使いやすいよ。
覚えることもそうはないし。
vimには劣るかな
>>593 GAEだったらwebapp使えるけどね
vim使うときはタブ型ターミナルが便利だな
なんでもっと早く教えてくれなかったんだ
webappってwebobの薄いラッパーだろ
>>593 flaskってのはよく知らないが、少なくともweb.pyは
プロダクションコードを書くためのものではないと思う。
タブ型ターミナルって…gnome-terminalもkonsoleも
xfceのTerminalもLXTerminalも
OSXのTerminalもタブ機能あるような
>>601 気づかなかったわ。基本的にWindowsしか使わないから
>>593 仕事のわりにアバウトだなw
どういう特性のサイトだかも分からんし
無経験に近いPythonを選んだ理由も見えないし
メジャーどころも他にDjangoとかweb2pyとか色々あるよ
まあ仕事ならもっと真面目にリサーチしたほうがいいんでないの
>>602 Windowsならgvimの--remote-tab-silent使ってタブ開いてもいいんじゃないの
ああリモートにsshする時の話か
gvimならフルスクリーンでウィンドウ分割したほうがいい
606 :
デフォルトの名無しさん:2011/04/05(火) 02:20:05.66
>>604 windowsにもタブ型コマンドプロンプトあったわ。Consoleってやつ入れてみた
これシェルも設定出来るみたいだからpowershellに変更した。良かった良かった
つipython
忍者ー、にんにん
>>> datetime.datetime.now().isoformat()
'2011-04-04T22:15:45.820146'
こうやって作った文字列をdatetime objectに戻すにはどうしたらよいのでしょうか?
datetime クラスを見ても 'parse' とおぼしき文字は見つかりませんでした。
皆様の優しさに泣いた。
ありがとうございます。
Webサイトにアクセスして例えば自動的に株取引とかさせようとするならどうするんでしょうか?
サイトのHTMLソース見て方法を考えてるんですがどうやってpostするのか検討もつかない
urllib2
>>616 なるほど大体の検討がつきましたありがとうございます。
オライリーでpython本の和訳が出そうな気配ってありますか?
・初めてのpython(4th)
・Cookbook(3rd)
あたりの和訳が進行中情報あったら教えてください
普段Linuxを利用しており、GUIアプリケーションはPyGTKで作成しております。
知り合いに頼まれてWindows向けにアプリケーションを作ることになったのですが、この板のPython関連のスレッドを見ているとPyGTKは他OS(Windows, Mac)では色々と難があるとよく見ます。
具体的にはどのような問題があるのでしょうか?
アプリケーションは、Pythonでソケットから送られてくるデータをTreeViewに表示するログビューアのようなものです。
そのログに名前をつけたりするので少量の文字入力も行ないます。
Qtは糞
>>619 GTK+は伝統的にWindows版の対応がいい加減だった。
GIMPも落ちまくりだった。
2.20あたりからだいぶ安定化してきたんじゃないかな。
GIMPが落ちるという話もあまり聞かなくなったし。
一般的にはwxPythonやPyQtの方がよく使われてると思うよ。
大昔はTinkerだったらしいけど。
>>619 PyGTKをWindowsで動かしたことないから間違ってるかもしれないけど、
GTKのライブラリを別途入れないと動かない
昔は不安定だった
見た目がWindowsアプリケーションと結構違う(Qtもだけど)
WxPythonだとpy2exeしたときに別途ライブラリを入れなくて済むからお勧め
ただ、LinuxとWindowsで若干挙動が異なったりするから注意
3系に対応してくれればwxも使うんだがのう。
元のwxWidgetsのメジャーアップ待ちなんかね。あれだいぶAPI変わるらしいが。
PyGTKは3K対応?
IRCのライブラリ調べてたらPythonの対応バージョンが1.6以降ってのがあるんだけど、2.7でも問題なくうごく?
1.6は何かの間違いだろう
READMEや実際のコード見たほうがいいよ
virtualenvのpython3対応きてた
pypanがあった
最近python触りだしたんだが、lambdaが残念仕様だな…
javascriptのfunctionみたく何でもできればいいのに
後、代入と評価が同時にできないのも残念…
今更そのネタかよ…
韓国人が漢字に書き換えると発想する男の人って
633 :
デフォルトの名無しさん:2011/04/10(日) 00:29:34.49
グレート・ギャツビー対応だよ
自分で調べるとかしないんだな、クズって
>amachang 今粛々と民事刑事の方面で進めています。一応、すべて証拠として保存しなければいけないので、冗談でも今はこのスレに変なこと書き込まないでください。
>2011/01/28
http://hibari.2ch.net/test/read.cgi/prog/1291518728/ >1 :amachang撲滅振興協議会:2010/12/05(日) 12:12:08
> amachangが憎い・・・・amachangが許せない・・・・
> ククク・・・・クククククク・・・・・
> クックックックックックックッ・・・・・
> クー、クー、クー、クー、クー、クー・・・・・
>
> もう許せない。
> もはや沸き上がる滅意を抑えることが出来ない!!!
>>629 lambdaは関数の中身が本当にコンパクトなときに使う。
eachっぽいのはforもしくは内包で、ファイル自動クローズ等はwithで、
そして、なんといってもPythonにはデコレータがある。
代入と評価については確かにそうだが、その代わりキーワード引数が使える。
>>629 一応関数のネストは出来るので、lambdaに関しては関数内def使えやというのが
Pythonの流儀だな。
JavaScriptのfunctionみたいな、入れ子でstatementを含むようなexpressionが
Pythonにないのは多分構文上の理由。
つまり、非フリーフォーマットで、ブロックをインデントで示し、
ブロック終端をしめすはっきりした字句構造があるわけでもないので、
そうした構文を許容しにくいのだろう。
640 :
639:2011/04/10(日) 18:13:40.99
代入が式かどうかなんだけど
多分
>>629も
(funcall (setf f #'+) (setf x 5) 6)
みたいなコードを書きたいわけではないと思うので、
Cユーザがつまづきそうな例として
while ((c = getchar()) != EOF)
みたいな例を考える
これをPythonにwhileで直訳しようとすると、代入が式でないお陰で
確かに冗長になるんだけど、これはPythonでは
for c in iter(getchar, EOF)
のように書けるのを知ってれば多少は不満は減るはずよ
具体的にwhatをhow入力したの?
明日は晴れるかな
プログラミングコンテストサイトのテストケースが何かなんて分からないよ
>>642 p1 = list(b1) # b1って文字列だよね?
ans += ''.join(p1)
p1.reverse()
ans += ''.join(p1)
この処理は、
ans += b1 + b1[::-1]
って書ける。そもそも ans += じゃなくて ans = でいいはず。
''.join(rev(list(b1))) > b2:
の部分も、 b1[::-1] > b2: って書ける。
raw_input() は、最後に改行が入力されるかどうか判らんから、
import sys ってやっておいて、 sys.stdin.readline().strip()
のほうがいいと思う。
コードが滅茶苦茶醜いのは分かってて、
なんで通らないのかの質問なんだけど
下のはraw_input()で通るんだけど、入出力でどこに違いがある?
>>646 raw_input() じゃなくて、単に入力が大きいだけじゃない?
行列を逆にするのは知らなかったけど
場合分けを行き当たりばったりでコピペしながら書いたから
p1とかはlist(str(int(b1) + 1))とかもあってそれと同じ形になってるだけ
あと+= を = に書き換えたら
>>> a = ""
>>> a += "".join(["abc"])
>>> a += "".join(["def"])
>>> a
'abcdef'
>>> a = ""
>>> a = "".join(["abc"])
>>> a = "".join(["def"])
>>> a
'def'
で答えが変わるんだけど
あ、行列じゃなくて配列
あ、確かにそのようだ
途中を数値にキャストしたり出来ないのか、全部文字列で扱わないと
知らないから。まあそれを馬鹿にしてるんだろうけど
>>648 >>645 は b1 + b1[::-1] への書き換えをしてるんだから、ans = で良いだろ。
その例で言えば
>>> a = "abc" + "def"
>>> a
'def'
だ。
>>653 間違えた。 最後は 'abcdef' で。
>>649 配列じゃなくて文字列のまま処理してる。
それは見たら分かる
問題番号が最初のほうだったからやってたけど、他の問題見たら難しい方だった
今は簡単なのからやってる。もういいよ
>>648 念の為にいっておくけど、
>>> ''.join(list('abc'))
'abc'
>>> ''.join('abc')
'abc'
だよ。リストにする意味が全くない。
多分、時間オーバーしてるのは無意味にリストと文字列の間の変換を繰り返してるから。
もういいって言ってんのに。
根本的な原因はそこじゃないから、それを訂正しても通らないんだって
>>657 根本的な問題って、 time limit exceeded なんだろ?
効率的なコードを書くテクニックが本質だと思うが?
馬鹿には無理
たまにはいいことを言うのな
>>658 だから、根本的に間違っててt元のコードを改善してもしかたないから
後からもう一回ゼロから書きなおすってことだよ
今のやつはそもそも桁数的に無理だったから最初から突込みどころがずれてた
これはひどい
O(N)のコードなのに変換で時間オーバーとかアホか
時間オーバーの原因は str <> list の変換じゃなくて、 str<>intの変換だな。
文字列型から数値型への変換はO(N)じゃないから。
%timeit int('1'*1000000)
1 loops, best of 3: 9.29 s per loop
その前にintの範囲に入ってないから
>>665 Python の int() はintの範囲外だと自動でlongに拡張してくれるから、
それは問題にならないよ。
Python3 だとそもそも int が long に統合されてるし。
ロングには範囲がないのか
>>667 多倍長整数。JavaでいうBigInteger。
Javaで言われても知らんし
こっちは玄人専用みたいだから初心者スレの方に誘導してくれれば良かったのに
素人を弄りからネタを探すのも玄人の遊びの一つ
センス無いヤツには
お前には無理って言ってやれよ
ゴミコードの生産とか放射性物質の流出並みに犯罪だから
>>671 「並みに」とはお優しいことで。
正確には「より悪質な」だろ。
放射性物質には半減期と崩壊系列ってのがあって、何にもしないままでも時間が経つだけで放射能は弱くなっていく。
一方、ゴミコードには半減期は無いんだぜ?
それでもフリーマン教授なら…フリーマン教授ならなんとかしてくれる
うまいことを言ったつもりだろうが実に寒い
ゴミコード見なきゃいけないような劣悪な環境で作業しなきゃいけない自分を改善すべきだな。
pass
そんなスレどうでもいい
",".join([1,2,3])に慣れない…
"".join([s1, s2, s3])を山ほど書くからそのうち慣れるよ
"".join([s1, s2, s3])を山ほど書いてたら
可笑しいと思って設計を見直すべき時期
>>> join = ''.join
>>> join(['a', 'b', 'c'])
'abc'
言われてみればそんな山ほどは書かないな
684 :
デフォルトの名無しさん:2011/04/14(木) 21:14:05.23
個人的には文字列のメソッドでもリストのメソッドでも違和感だなあ
関数が一番しっくりくる気がする
>>684 joinがメッセージだと考えると、「おい文字列、このリストをお前で区切ってつなげてくれ」ってことだよね
いきなり「おい文字列」って呼びかけてるのがヘンな気がする、いつから居たんだよって感じで
処理の対象として何かをしてほしいのは、リストの側で、区切り文字は付随的なものだから
リストに「おい、おまえらちょっとひとつになれ」っていうほうが自然な気がする
>いつから居たんだよ
今自分で創ったインスタンスに呼びかけてる
全然変じゃない
>>687 言われてみるとインスタンスがある以上メソッドを呼ぶ点は問題ないと思った
じゃあ文字列くんを呼びだしてるとこが唐突すぎてコードのストーリーがおかしなことになってる感じがするのかなあ
(おっぱいバニーを召還してjoinしてもらうのにくらべたら)それほど不自然だと思ってるわけじゃないけどさ
>>686 言いたいことはよくわかるがまあ慣れろ
.NETだとString#Join()(静的メソッド)で
String.Join(",", data)
とか書くが、あんま変だと思わないだろ
これは第一引数(デリミタ)とクラスが同じなので、
Pythonではデリミタをレシーバにしてしまって
",".join(data)
と書かせることで、冗長性を減らしてる、一種の合理化ということで納得しろ
すぐ慣れる
ちなみに俺が「言いたいことはよくわかる」のは、join()を結局reduce()の特殊例と
見ているからだ、多分あんたもそうなんだろう
reduce()で上のjoin()と等価なものを書くと
reduce(lambda x, y: x + ',' + y, ['a', 'b', 'c'])
になるが、reduce()は明らかにシークエンスやiterableを対象とする手続きだからな
Pythonのreduce()は関数的だが、ScalaやRubyやGroovyのような言語では
reduce/fold/inject演算は勿論シークエンスだのリストだのに対する演算になる
str.join(",", ["1", "2", "3"])
なるほど
これなら飲み込みやすい
これは目からうろこが落ちたわ。何かしらのFAQに入れるべき
文字列のコンストラクタで self を省略してるだけだろ
FAQ も糞もないわ
694 :
デフォルトの名無しさん:2011/04/15(金) 00:35:14.17
ちょっと意味不明な人がいますが気にせず続けていきましょう^^
695 :
690:2011/04/15(金) 01:02:21.70
str.join(",", data)
から考えると納得がいってもらえたみたいだけど、なんでstr側に寄せて
iterable側に寄せないかというと、Pythonではiterableは具体的な型ではなくて
ただのダックタイピングプロトコルだから、そもそもiterableにリスト処理っぽい
操作を持たせる、といったことはできないからだ
だから、iterableに対する操作は全部関数になってる(reversed()やsorted()など)
iterableのような明白な概念を具体的なオブジェクト/型としては表現しないわけだから
非OOっぽくみえるだろうけど、これがPythonの流儀
利点としては、iterableな何かを作るときはiteratorを返す__iter__()という関数だけ
作ればよくて、特定の型を継承する必要が無い
要は単純にダックタイピングであり、縛りが少なく間口が広い
ジェネリック志向って奴だ
>>> ':'.join("123456")
'1:2:3:4:5:6'
むしろリストの名前空間に文字列として連結するメソッドがある方が気持ち悪いんだが。
[[1,2],(3,4)].join() => [1,2,3,4] ならまだ許せる。
697 :
デフォルトの名無しさん:2011/04/15(金) 01:34:25.24
>>696 plus
むしろ・・・
> >>> ':'.join("123456")
> '1:2:3:4:5:6'
["123456"].join(:) => [:].join("123456")
698 :
デフォルトの名無しさん:2011/04/15(金) 01:41:20.45
>>> [[].join("123456")
↑
ERROR
699 :
デフォルトの名無しさん:2011/04/15(金) 01:42:31.77
>>> []].join("123456")
↑
ERROR
>>696 Python はどちらかというと Java よりの汎用的なプログラミング言語を
目指しているから型と名前空間の分離を意識しないと気持ち悪いかも
しれないけど、Ruby はどちらかというと Perl よりの整理されていること
よりも便利さを重視する言語だからリストに文字列連結があっても気持ち悪くない。
>>700 Rubyは組み込みライブラリからしてテキスト処理を相当に重要視してるからな
配列も文字列を前提にしたメソッド持ってても何ら不思議じゃない
逆にPythonだと関数のが自然だと思う
いちおうPythonistaだが、joinの件はどっちもキモいと思うな。
というかArray#joinは文字列の連結ではなく、格納されてるオブジェクトを
+演算子でつなぐみたいのだったらいいのに。
>>701 確かにそう考えるとRubyはあんまりキモくないか。
RubyってPerlの完全な上位互換を目指してるようにも見えるし。
神が人間によく似ているように、完全にオブジェクトと線引きできるクラスなんて存在しないんじゃないの
そういう潔癖を求めるとinterfaceだらけになったりしない?
神が人間によく似ているように?
ネ申は人間です
>>705 ネ申を冒涜すると天罰が下って津波が来る…かも…
str(seq)の場合もじれつ化はseq自身がやるんだから、join(',', seq)でseq.__join__()になるのもありじゃんってことか?
ネ申は人間が作った存在です
俺もそういうことを言いたくて仕方ない時期があったよ
昔、頭の悪い奴が作っていた間違った解説サイトによく載っていた手法だろう。
まんまと騙されたんだね。
気に入らないならlist拡張しろよ、カス
そうだね
リストのアルゴリズムなんだからリストに混入したらいい
上の例で言うと list.join(['a', 'b', 'c'], ',') にして ['a', 'b', 'c'].join(',')かw
理屈にあうようにメソッド名を変えてもいいんだし
PHPなんか関数だから implode() <-> explode() であっさりしたもんだよ
その理屈はおかしい
pass
>>695 なるほどーダックタイプってそういう意味だったんだ
チュートリアル読んで、型制約無いからインターフェイスいりませんよってことかと思ってた
本のコードの写経作業にうんざりしてきた。
でも読むだけじゃ知識にならないよね
写経するにしても
丸暗記じゃだめだよ
写経なるものが流行りだしのはここ数年だよな。
あれって意味あるのか?
いや昔からあったよ
どっちにしても、写して終わりじゃなくて
写したのをコピーして自分なりに改造して遊ぶと少し身に付くかなと思う
写すだけだと本当に純粋な意味でコーダーにしかならない
コーダーって詳細設計書を見てコーディングできる人間だよ。
写経はどっちかというとキーパンチャーに近い。
なるほど、キーパンチャーかw
詳細設計書なんてなかった
>>716 自分は本は電子版で買って、コードはコピペ
そこから気になる部分を改変してみて挙動を確かめるって方法で勉強してる
>>716 意外に、タイプして書き写すということ自体がいい勉強になるんだよね。
コピペだと、効率はいいけど身には付きにくい感じがする。
>>723 気になる部分を自分で見出せないヤツが多いのでその勉強法は他人に勧めるものではないな
俺すげー、と自慢したいなら別だけど
気になる部分というか、コピペコードって
コピペした後に改造欲とか出てこない?
その時点での知識をフル動員して改造してみると
少しは頭に入るようになると思う
それが俺すげーに感じるというほうがおかしい。
>>726 出てこないヤツが多いって話をしてるんだろ?
そんな奴は写経のごとくポチポチ打ちこんでも
コードの意味なんか考えないよ。
写経を考えながらやってた坊さんも少ないだろうけどな
関数をコピペするときは入力と出力が分かれば内部構造はどうでもいいだろ
最初にやりたいことがあって、それを実現するコードを書く方が勉強になるよ
>731
勉強モードとそうじゃない場合で意味が違うけど
>730
むしろ文字通りの写経だったらアルゴリズムとかでなく言葉なので
必然的に言葉をかみしめながらやることになると思うが?
プログラミング「言語」をなめんなww
pass
>>730 素人ならともかく、坊さんなるなら
お経はその意味まで含めて勉強するもんだと思うぞ
__builtins__
insert this
結局言語の勉強ばっかりしてるんじゃなくて何か作ってみるのが一番勉強になるんだけどそれが見つからないし意欲も湧かない時点で俺オワタ。
じゃあ何のためにプログラミング勉強したんだって言われそうだけど
そんなキミにはProjectEulerをオススメだ!
>>741 お前こそ写経プログラミングでもしてろww
で、面接でプログラミングできます(キリッとでも言っときゃ中小企業なら就職できる
まぁよく言うオセロとか電卓とか作る気がしないのは分からんでもない
>>741 cvs -nq update
の結果からModifyのファイルだけ、ファイル名と絶対パス、実行ディレクトリからの相対パス、タイムスタンプを出力するの作って!
対象はcc,hh,Makefileだけとしてください。
なんてのは?単に自分が欲しいだけなんだけど。
>>746 欲しいものを自分で作らんと勉強にならんよ。
まったくならないとは言わないけど、吸収は悪そうだな
地震速報システムの情報を受信するにはどうすれば良いですか?
ラジオのスイッチを入れる
>>749 ついったーの@eew_jpをフォロー。python-twitter とかいうのを使うそうだ。
またはガラケーを買ってくる。
tweepyおすすめ
perlのflockに相当するものないですか
なまずの設定方法を変えたいんだけどソース落ちてないですか?
震源地との距離震度じゃなくて現在地の予想震度に
秋山瑞人のお兄さんだな。
あれ以降彼も新作ださなくなちゃったなあ。
EGFマダー
さあ俺と一緒にラ板に帰ろう
マラ板
Pythonで動画ファイルの読み書きって何かいいライブラリないですかね?
pyffmpeg
FFVideo
Pyglet+AVbin
は試しました。
Windows環境にてmp4動画のデコードが正常に行なえたことを確認できたのは
pyffmpegのみ。しかしnumpy/PILの画像データに変換する段階が遅すぎるので、
他の選択肢がないか調査しているところです。
pdfのページの回転とか左右開きのカスタマイズをこの言語で自動的にやりたいのですが、なにか手掛かりはないものでしょうか。スキャンした文書を一括処理したいのです。
pypdf
pythonでC拡張モジュール書いているんですが、
python script上で作成したattrの値をC拡張モジュール上で取得するためのメソッド、
マクロが分からず困っています。
python3のドキュメントのどこら辺に書いてあるのでしょうか?
768 :
766:2011/04/21(木) 14:17:26.26
>>767 ありがとうございます、そのものずばりでした。
# Python v3.2 documentation »
# Python/C API Reference Manual »
# Abstract Objects Layer »
Object Protocol
PyObject* PyObject_GetAttr(PyObject *o, PyObject *attr_name)¶
Return value: New reference.
Retrieve an attribute named attr_name from object o. Returns the attribute value on success, or NULL on failure. This is the equivalent of the Python expression o.attr_name.
PyObject* PyObject_GetAttrString(PyObject *o, const char *attr_name)¶
Return value: New reference.
Retrieve an attribute named attr_name from object o. Returns the attribute value on success, or NULL on failure. This is the equivalent of the Python expression o.attr_name.
>>769 以前どこかで見たような気がしますが、
ちょっと詳しく調べてみます。
Cython使うと多少は速度落ちるの?
>>771 直接コンパイルするんじゃなくて
Cソースをジェネレートするので、
そのソースコードを見れば何やってるのかすぐわかるよ。
ドキュメント読まずに書くとかすげーなww
>>765 これはいいプログラムですね!
avisysthのインターフェイスであることもさることながら、
Pythonインタプリタ込みのWindowsアプリを作る際の模範例となっている。
実はpyexeのsetup.pyのいい書き方が無くて困ってたところでした。
GetAttrぐらいドキュメント読めばすぐ見つかるでしょ
777 :
デフォルトの名無しさん:2011/04/22(金) 09:11:00.84
EC2まだ回復しねえのかよ!
もうEC2捨てるわ
Pythonを勉強し始めたのでHelloWorldを書いてみました
記号とか数字とかがよくわからないので.,()とアルファベットしか使えませんでした
Pythonって誰が書いても綺麗に書けると聞いたんですけどコード自体は長くなってしまうものなんですね
ちょっと残念です
print(str().join(list((chr(sum((ord(min(str(NotImplemented))),str(True).find(min(str(None)))))),
list(str(True)).pop(),
min(str(Ellipsis).replace(min(str(Ellipsis).swapcase()).lower(),list(str(Ellipsis)).pop()).swapcase()).lower(),
min(str(Ellipsis).replace(min(str(Ellipsis).swapcase()).lower(),list(str(Ellipsis)).pop()).swapcase()).lower(),
max(str(None)),
chr(pow(str(Ellipsis).count(list(str(Ellipsis)).pop()),len(str(False)))),
chr(sum((ord(max(str(True))),str(Ellipsis).count(list(str(Ellipsis)).pop())))).upper(),
max(str(None)),
max(str(True).replace(max(str(True)),list(str(True)).pop())),
min(str(Ellipsis).replace(min(str(Ellipsis).swapcase()).lower(),list(str(Ellipsis)).pop()).swapcase()).lower(),
list(str(NotImplemented)).pop(),
chr(sum((pow(str(Ellipsis).count(list(str(Ellipsis)).pop()),len(str(False))),len(max(str(None))))))))))
できるPythonプログラマはこう書く。
print('Hello World!')
>>778 =も覚えたら、一気に楽になるぞ
t=type(str(), (), dict())
t.HelloWorld=None
print(list(sorted(dir(t), reverse=True)).pop())
明晰さがうりなのに、結局Perlめいたぐちゃぐちゃコードを書いてだめな仕事するやつってほんとにいるよね。
>>778 ___l___ /、`二//-‐''"´::l|::l l! ';!u ';/:::l ', ';::::::l ';:::::i:::::
ノ l Jヽ レ/::/ /:イ:\/l:l l::l u !. l / ';:::l ', ';:::::l. ';::::l:::::
ノヌ レ /:l l:::::lヽ|l l:l し !/ ';:l,、-‐、::::l ';::::l::::
/ ヽ、_ /::l l:::::l l\l ヽ-' / ';!-ー 、';::ト、';::::l:::
ム ヒ /::::l/l::::lニ‐-、`` / /;;;;;;;;;;;;;ヽ! i::::l:::
月 ヒ /i::/ l::l;;;;;ヽ \ i;;;;;;;;;;;;;;;;;;;l l::l:::
ノ l ヽヽノ /:::l/:l /;;l:!;;;;;;;;;', ';;;;;;;;;;;;;;;;;ノ l:l::
 ̄ ̄ /::::;ィ::l. l;;;;!;;;;;;;;;;;l `‐--‐'´.....:::::::::!l
__|_ ヽヽ /イ//l::l ヽ、;;;;;;;ノ.... し :::::::::::::::::::::ヽ /!リ l
| ー /::::l';!:::::::::::::::::::: u ', i ノ l
| ヽー /イ';::l ’ し u. i l l
| /';:';:!,.イ し 入 l l U
| /,、-'´/ し / ヽ、 u し ,' ,' l
| /l し _,.ノ `フ" ,' ,' ,ィ::/:
| /::::::ヽ ヽ / し ,' ,' / l::
| /::::::::::::`‐、 し ', / u ,、-'´ l,、-
| ``‐-、._::::::::::` ‐ 、 ',/ , -'´`'´ ,-'´
| _,、-‐'"´';:::::::::イ:l';:::` ‐ 、._____,、-‐'"´ u /
| | | | \ l::/ l::::::/リ ';:::::lリ:::::l';:::l l:l:::::l\ u /
受けると思って必死に書いたのに失笑しかされない
>>778さん(´・ω・)カワイソス
Perlスレとかなら面白がられただろうけど
Pythonってあんまりそういう文化がないからなあ
>>778 この条件だとこういう力技も可能なのでちょっとイマイチ……
print str().join(map(chr,map(sum,zip(map(len,(((),(),(),()),((),),
((),(),(),(),(),(),(),()),((),(),(),(),(),(),(),()),
((),(),(),(),(),(),(),(),(),(),()),
((),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),()),
((),(),(),(),(),(),(),(),(),(),()),((),(),(),(),(),(),(),(),(),(),(),(),(),()),
((),(),(),(),(),(),(),()),())),
(len(((),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),
(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),
(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),
(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),
(),(),(),(),(),(),(),(),(),()))
for x in range(len(((),(),(),(),(),(),(),(),(),()))))))))
なんだLispか
PythonとLispとどっちを学ぶのがいいの?
pythonに決まってるだろ。
Lispの括弧を全てタブに置換すればスマートになる
python3.2をローカルに入れているのです、サーバがpython2.5にしか対応しておりません
pythonでCGIをおこなう場合、ただ単にHTMLを出力するだけなら以下のコードで問題ないでしょうか?
POSTやGETなどの動的なものなどは一切使いません
ただHTMLを出力するだけです
#!/usr/bin/python
# -*- coding: utf-8 -*-
print "Content-Type: text/plain"
print """
<html>
省略
</html>
"""
3.xからprintは関数になってる
>>793 print "Content-Type: text/plain"
print
print """
にして空行間にはさまないとダメ
796 :
デフォルトの名無しさん:2011/04/23(土) 21:59:59.52
改行いれないとだめでした
ありがとうございます
python2.7にしたらTkinter入ってなかったのでこれを気に違う奴に
しようと思うんですがどれが良いでしょうか?
どちらかといえば簡単なやつの方が良いんですが
pyQt vs wxPythonの闘いが始まった
PythonでデスクトップGUIだと…
WindowsバイナリのPython 2.7.1だけど普通にTkinter入ってたけどな
まあどれも似たようなもんだな
>>780 ためしに打ち込んでみたらほんとにハローワールド出てきた
なにこれすごい(*´ω`*)
pythonはコンソールだろjk
とりあえず日本語の解説が多いwxPythonにしようと思います。
ありがとうございました〜
てぃーきんた
>>799 Linux環境だと割と当たり前にGUIアプリ書くのに使われてるぞ
管理用ツールなんかもPython製だったりして
Python無しでは成り立たないディストリビューションもいくつかあるよ
うきゃー
pythonの拡張モジュールを作成しているのですが、
よく分からないことがありますので質問させて下さい。
以下のように、c fileとpy fileでモジュールの名前を
二重に設定するようになっているのは何故なのでしょうか?
そうしなければならない背景とはどんなものだったのでしょうか?
---------------------------------------------------------------
spam.c
static struct PyModuleDef spammodule = {
PyModuleDef_HEAD_INIT,
"spam", /* name of module */
spam_doc, /* module documentation, may be NULL */
-1, /* size of per-interpreter state of the module,
or -1 if the module keeps state in global variables. */
SpamMethods
};
---------------------------------------------------------------
setup.py
from distutils.core import setup, Extension
module1 = Extension('demo',
sources = ['demo.c'])
setup (name = 'PackageName',
version = '1.0',
description = 'This is a demo package',
ext_modules = [module1])
>>810 Cで書いたインターフェイスの詳細をPythonでラップして隠蔽するため。
普通はC側をdemoじゃなくて_demoにしたりする。
単純にCのパースができないからだと思うんだが
>>810 setup.pyに書く方は成果物の名前になる。import文はファイルパス、ファイル名を元に動作するので重要。
PyModuleDefの名前はimport後、コードから
使うので名前を変えるとモジュールにある関数とか引けなくなる。
試してみるといいよ
spam.c内のPyModuleDefの方は、
demo.__name__
とした時に、
"spam"
といった具合に表示されたので、
__name__の名前として使われているようでした。
import時のmodule名は、setup.pyの
extensionに書いた名前が使われるようでした。
setup.pyのextensionに書いた名前を元にspam.cの
Py_Init_XXX()
関数を呼び出しているようでした。
ここの名前はextensionとPy_Init_XXX()で一致させないといけないようでした。
egg infoの名前として、setup.pyの
setup()に書いた名前が使われていました。
wc -l /HOME/USER/local/lib/python3.2/site-packages/PackageName-0.0-py3.2.egg
-inf
10
だからそう言ってるじゃない...
ありー。。。
私がうまく理解できていなかったんですね。
今の私では、
>>813にそこまで書いてあるとは思いませんでした。
折角の親切なのに受けきれなくて申し訳ありませんでした。
817 :
デフォルトの名無しさん:2011/04/26(火) 10:55:45.16
>>> import numpy as np
>>> np.frompyfunc(lambda x: -x,1,1)(np.arange(10))
array([0, -1, -2, -3, -4, -5, -6, -7, -8, -9], dtype=object)
>>> np.vectorize(lambda x: -x)(np.arange(10))
array([ 0, -1, -2, -3, -4, -5, -6, -7, -8, -9])
818 :
デフォルトの名無しさん:2011/04/26(火) 10:58:54.94
【上の続き】
numpyの質問ですが、vectorizeはいいとして、frompyfuncの返す型がおかしいです。
計算の途中でもdtypeをintであることが保証される方法はありますか?
(数値計算に使うので、最後の結果を型変換するとかはなしで)
なにやりたいのかさっぱり分からん
820 :
デフォルトの名無しさん:2011/04/26(火) 11:25:40.38
frompyfuncではdtype=objectになってしまっていますが、
vectorizeはdtype=int32か何かです。
どこで勝手にobject型に変換されてしまったのか不明なのです。
np.frompyfuncで変換されたんだろ
>>> np.frompyfunc(lambda x: -x,1,1, dtype=aaaint)(np.arange(10))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'aaaint' is not defined
>>> np.frompyfunc(lambda x: -x,1,1, dtype=int)(np.arange(10))
array([0, -1, -2, -3, -4, -5, -6, -7, -8, -9], dtype=object)
dtypeをintと指定しても
dtype=object
だねー。予想と違った。
私にも分からん。有識者の回答を待ってくれ。
俺も参考にさせてもらう。
>>> np.vectorize(lambda x: -x, dtype=int)(np.arange(10))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: __init__() got an unexpected keyword argument 'dtype'
>>> np.vectorize(lambda x: -x, dtype=int32)(np.arange(10))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'int32' is not defined
>>> np.vectorize(lambda x: -x)(np.arange(10))
array([ 0, -1, -2, -3, -4, -5, -6, -7, -8, -9])
>>> np.vectorize(lambda x: -x)(np.arange(10)) [0]
0
>>> type(np.vectorize(lambda x: -x)(np.arange(10)) [0])
<class 'numpy.int32'>
>>> np.frompyfunc(lambda x: -x,1,1, dtype=int)(np.arange(10))
array([0, -1, -2, -3, -4, -5, -6, -7, -8, -9], dtype=object)
>>> type(np.frompyfunc(lambda x: -x,1,1, dtype=int)(np.arange(10))[0])
<class 'int'>
>>> type(np.frompyfunc(lambda x: -x,1,1)(np.arange(10))[0])
<class 'int'>
こんな事になったよ。
値の型はintみたいだよん
>>> np.array([0, -1, -2, -3, -4, -5, -6, -7, -8, -9], dtype=object)
array([0, -1, -2, -3, -4, -5, -6, -7, -8, -9], dtype=object)
>>> np.array([0, -1, -2, -3, -4, -5, -6, -7, -8, -9], dtype=int)
array([ 0, -1, -2, -3, -4, -5, -6, -7, -8, -9])
>>> type(np.array([0, -1, -2, -3, -4, -5, -6, -7, -8, -9], dtype=int)[0])
<class 'numpy.int32'>
>>> type(np.array([0, -1, -2, -3, -4, -5, -6, -7, -8, -9], dtype=object)[0])
<class 'int'>
>>> type(np.array([0, -1, -2, -3, -4, -5, -6, -7, -8, -9], dtype=int32)[0])
おまけ。成仏しろよ
>>> type(np.array([0, -1, -2, -3, -4, -5, -6, -7, -8, -9], dtype=numpy.int32)[0])
<class 'numpy.int32'>
matlabの参考書読みながらやってみたとき
from pylab import *でmatlabの組み込み関数とかも結構自然に使えたけど
本格的にやるならfreematの方が楽だった
pylabはpythonに慣れてる人の電卓代わりにはなるけど
質問者です。別件になりますが、
type(nary[0])
と
nary.dtype
の型が違うというのは、どういうことでしょうか・・・;
いずれにせよ、ありがとうございました。
大変参考になりました。
frompyfunc使った瞬間にnumpyの外に出ちゃって、
numpyの世界からみるとネイティブのintは(python) objectにしか見えない
って感じでしょうかね。
あと、本格的にやるなら他の言語使うので、大丈夫です。
型付けが静的なのは痛い。
>>827 dtypeがnumpy.int32のやつは、内部のレイアウトが
CやJavaの整数のネイティブ配列みたいなもんになってるはず
つまり実際32bit整数が生のままフラットに並んでいて効率がいい
dtypeがobjectのときは、要素をそのまま格納しフラットに並べるのではなく
Pythonのobjectの参照が格納されている
Javaで言うObjectの配列と同じでCで言えばポインタ配列にあたる
何でも入れられるし、Pythonは動的型だからそれぞれの要素がちゃんと型を持ってる
上の例ではそれがたまたまint型なわけだけど、
メモリレイアウトや効率性は天と地ほども違う
あとは勿論、Pythonのintだとオーバーフローはせず自動でlongに拡張されるだとか、
そういう違いは色々あるだろう
print numpy.frompyfunc.__doc__
Notes に frompyfunc は常に PyObject の配列を返すと書かれてます
numpy.frompyfuncのソースには /* Keyaords are ignored for now */
色々ありがとうございました。
実装のことを全く知らずに使うのが不安だったのですが、これで枕を高くして眠れます。
>>822-824 位は自分で試してみて欲しかったよ。
プログラム自体初心者なの?
今度は自分で色々試してみてね。
それが伸びるコツだから。
言語は関係ない
インタラクティブモードでだけ読み込まれる設定ファイルとかないですかね。
rubyだと ~/.irbrc っつーのがあるんですけど、同じようにインタラクティブモードの
ときだけ設定したいことがありまして。
なおいちいち「ruby使え」ってのはなしでお願いします。
839 :
838:2011/04/27(水) 16:23:36.68
解決したようだけど。。。
ipython使うとTAB補完もともと有効だし、自動インデントもあるし、いい感じだよ。
ipythonで何も無いとこでタブ押すとlsみたいな表示になるのどうにかならんの
あの機能いらいないんだが
843 :
838:2011/04/27(水) 22:51:31.71
>>842 IPythonの開発版使ってるけど、何もないところでTAB押してもカレントディレクトリの補完はなくなってる。
>>841 インタラクティブモードでの設定ファイルについての質問なのに
なぜipythonをすすめるのかまったく意味不明
>>844 irbに対するものは、pythonではなくipythonだから。
それに、環境変数で設定するよりは.ipythonrcとかで設定した方が便利だろ。
WScript.shellでpythonスクリプトを実行したときに
スクリプト内の変数の値を指定して実行したいのですが
外部からスクリプト内にある変数の値を指定して実行することはできるんでしょか
locals().get(name, globals().get(name, None))
eval(name)
perl だと eval ってセキュリティホールで嫌われてるけど
python の場合ってどうなの?
データの汚染具合による
言語関係なく信頼できないデータ実行しなきゃいいだけ
セキュリティの問題については↑で終了
スタイルの問題としては、evalは最後の手段、という感じは
言語を問わずある気はする
もっともPythonも標準ライブラリ見るとメタプログラミング目的で
平然とexec使ってたりするけどな
使ってもいい名前のホワイトリスト(辞書)を作った方がいい
shellで渡す引数は、sys.argvから。
標準ライブラリで使われてるexec/eval/compile等はテストやデバッグ向けのが多いよ
テンプレートからコードを生成して・・・みたいなのはnamed_tupleくらいじゃないかな。
ありがとう
どういたしまして
namedtupleの実装はどうにかならんのかアレ
別にどうしても使わないといけないようなライブラリというわけでもなし。
>A シェルコマンドの無制限な実行は、恒久的な結果を招く可能性がある。
恒久的な結果 → 不可逆的な結果
>eval()は悪
eval()は悪 → eval()はevil
>>856 どうしても使わないといけないなんていわないよぜったい
>855
execしてるのはともかく、実行フレームからの情報参照してるのはなんとかなんないかなとは思う
PyArg_ParseTupleAndKeywords(args, kwds, "y#|i", kwlist, &buf, &index));
とやって、Python scriptからの値を拡張ライブラリ内で受け取っているのですが、
script上で128, 192, 256等を渡しても、
拡張ライブラリ側では 16, 24, 32 のように、
index の値を8で割った値が格納されてしまいます。
さっぱり、訳が分からず困っています。
何故なんでしょうか?
>>861 y#で文字列と長さを受け取るんだろ?
オプションとあわせて一つ足り無くないか?
>>862 ご指摘の通り、引数が足りていませんでした。
PyArg_ParseTupleAndKeywords(args, kwds, "y#|i", kwlist, &buf, &buflen, &index));
としたところ、うまく動くようになりました。
ありがとうございました。
def count(n):
while True:
yield n
n=n+1
def prime(g):
p = g.next()
yield p
gg = prime(g)
while True:
n = gg.next()
if n%p != 0: yield n
else: pass
g = prime(count(2))
for i in range(200):
print g.next()
素数を出力するジェネレータを作ったのですが、
再帰の深さが深くなるとエラーが出るようなのです。
ソースをどのように変更すればこのようなエラーは出なくなりますか?
RuntimeError: maximum recursion depth exceeded
>>866 安価越しには見えるから。専ブラで工夫すれば大丈夫
>>867 みんながその機能持った専ブラ使ってると思うなよ。
少なくとも p2 だと安価ごしでも普通にインデント潰れて見える。
むしろアンカーごしだとインデントが見えるのって、プレビュー機能のバグだろ。
元はバグだろうけど、便利だからそのまま仕様にした感じじゃね
バグだろうがなんだろうが見えたもん勝ちだろうが
俺が見えないんだから意味ねえだろ
>>865 >>> import sys
>>> sys.getrecursionlimit()
1000
>>> sys.setrecursionlimit(10000)
>>> sys.getrecursionlimit()
10000
874 :
865:2011/05/02(月) 09:13:16.90
2chでは改行が表示されないようなので、ソースだけ外部サイトに置いて、
再度質問させていただきます。
■質問
素数を出力するジェネレータを作ったのですが、
再帰の深さが深くなるとエラーが出るようなのです。
末尾再帰最適化すればエラーは出ないのかもしれませんが、
どのように書きなおせば良いかわかりません。
どうかお知恵をお授けください。
■ソース
http://pastebin.com/uaM4bF9z ■エラー
RuntimeError: maximum recursion depth exceeded
875 :
865:2011/05/02(月) 09:48:23.84
>>872 再帰深度が深くならない様な実装が望ましいと考えます。
しかし、それは別として、参考になりました。
ありがとうございます。
CPythonのコンパイラは末尾再帰最適化はやってくれない
activestateのcookbookにデコレータで末尾再帰をループに展開する方法が幾つか載ってるけど、
多分、ジェネレータの場合にはそのまま使えません。
ちなみにメモ化に相当するのをifilterでやってるのが
>>872 p.__rmod__ は x % p 、フィルタ内で使ってるので剰余が0の値は読み飛ばされる
ユニコードで出力してもWriteConsoleW呼んでくれないのか
subprocess.PopenでサブプロセスとPIPE処理しているんだけど、
stdin,stdout,stderrを全部PIPEで受け取っておかないと、
本体側のコンソールにサブプロセスの出力がバイパスされてしまっているように見えます。
これって毎回3つともPIPEで有効にしておかないといけないんですかね?
>>879 UNIXなら/dev/nullにリダイレクトすれば子プロセスの出力を捨てられるが。
null = open("/dev/null, "w")
p = Popen(("/bin/ls", "/"), stderr = null, stdout = null)
WindowsでもNULで同じことが出来ると思うが、試したことはない。
881 :
デフォルトの名無しさん:2011/05/05(木) 01:43:33.00
list = []
list.append( {"hoge": "foo", "huga": "bar"})
なぜこれがダメなのでしょうか?
どうダメって言われた(書いてあった)か書かなきゃ
とりあえずは組み込み関数にlistって関数があるから
自分が把握してない組み込み関数なんてどうせ使わないんだから上書きして良いじゃん
組み込み関数が思わず上書きしてしまいそうな名前になってることが悪いと思うんだよね。
listとかlenとかsetとか。
listとsetはともかくとして、lenはPythonicじゃないかもね。
lengthとか。
できればグローバルな関数じゃなくて
組み込みメソッドのほうが良かった。
細かい事ばかりだけど、その他は・・・
( 後のスペースが不要、: と , の後ろにはスペースが必要(理由はPEP8を読もう)
何のリストか判るように変数名は具体的な判り易い名前をつけよう。
但し、一時変数の場合は、lst, dct や L, S, D って名前が使われる慣習(悪習?)がある。
でも、なるべく避けたほうが良い。
保守性を考慮するなら、辞書は各キー・値を一行毎に書くと追加・削除し易い。
定数なら直接リテラルとして記述した方がよい。
881の例の場合appendは不要で、初期化の際に [{"hoge": "foo", "huga": "bar"}] で済む。
>>885 度々言われるよね、それ。
import this とかで言及されてたはずの一貫性にのみ着目してみると
メソッドだと、ユーザが作るクラスにおいて統一が取れない。
あるクラスでは要素数を得る同様メソッドとして .size() や .count() を実装するかもしれない
組み込み関数 len(obj) で obj.__len__() を呼び出すという規約を設けることで
利用者は len(obj) だけ覚えればよく、 obj.length なのか obj.size なのかを調べる必要がない
クラス実装者は必要であれば __len__()をオーバーライドすれば良い。って枠組みを与えている。
メソッドの方が良かったってのは、恐らくメソッドチェインに慣れ親しんでるからじゃないかな。
前置と後置での思考が切り替わってないと、エディタでカーソルを戻さないって煩わしさはあるとは思う。
多言語行き来してると特に。でも、どちらが Pythonicかと言うと len() だと思う。
多くの組み込み関数や演算子の殆どが オブジェクトの同名の特殊メソッドを呼び出してるだけという事からも。
lengthだけメソッドにして特別扱いするより、一貫させた方がダックタイピングの利点をより広く活かせる。
FAQ曰く
The major reason is history.
lenは名前が問題だと思うの
>>890 たしかに、 obj.length() だと戻り値が整数型だって保証がないし、
人によってはpropertyにしちゃって obj.length にしちゃうかも
しれないからな。
数学的に慣れ親しんだ書き方だから分かりやすいという理由も、
X の代わりに使えるのは X.sum じゃなくて sum(X) だし、
|S| の代わりなら S.length じゃなくて len(S) のほうが良いだろうな。
length()がいいな〜
長げーよ
それが良いんじゃん
短い名前は変数名とか仮引数名とかで使いたいよ
Javaじゃあるまいし、糞長い名前とかLLでは論外
a, b = line[0], line[1] if line[0] >= line[1] else line[1], line[0]
これなんでダメなん?
あ、なるほど。自己解決しますた
>>897,898
自己解決したようで何よりだが、経緯を書いても罰は当たらんと思うぞ。
a, b = line[0], line[1] if line[0] >= line[1] else line[1], line[0]
↓
a, b = line[0], (line[1] if line[0] >= line[1] else line[1]), line[0]
左辺のタプルが二つの要素なのに右辺が三つで帳尻が合わないからエラーになっとるわけだ。
ちゃんと期待通りの動作をさすには、三項演算子が「タプル」を返すように書けばいい。
a, b = (line[0], line[1]) if line[0] >= line[1] else (line[1], line[0])
こういう奴がドヤ顔で現れるって確信してたわ。自己解決したって言ってんだろ。殺すぞ
その発言、通報できるぞ
通報しようか?
おねがいします
今回のその発言自体は実は通報できないよ
でも安易に「殺す」とか書いちゃう人は
いつか本当に通報可能な発言しちゃう可能性が高いな
おねがいします
>>900 ついでに東尋坊なり青木ヶ原なりでこの問題も「自己解決」しちまえよw
自決しました
やっと死んだか・・・
908 :
デフォルトの名無しさん:2011/05/06(金) 08:54:15.13
初心者なのですが今参考にしているスクリプトでb'\r\n'という記載があるのですが
実行してみるとこの部分でエラーになります。
bの文字を外すと動くのですがこの記載の意味がわかりません。bはバイナリかなにかですか?
2.4の環境で作成したいのでもし古い書き方もありましたら教えていただけますか
よろしくお願いします。
bは3.xでのbytesリテラルだから、2.xではいらないよ。
GAEの検索ロジックを考えなくてはいけません。お知恵をお貸しください。
実装はGAEですが、ロジックの問題なのでここで質問させてください。
条件をグループ可するとおおまかに4つのグループがあります。
A-B-C-D
ただし、それぞれ数が可変です。
A B C D
B1C1 D1
C2
さらにどれかがひとつもない場合もあります。
A B D
B1 D1
GAEではOR検索できないのですべての条件で検索を実行してマージしなければならないです。
4つのネストしたループでやろうとしましたが、Bグループがない場合やDグループがない場合を
考えていたら頭が混乱してしまいました。
解法のお手本などありましたら、教えてください。
よろしくお願いします。
>>911 4フィールドあるレコード型、という認識でいいのかい?
単純にA,B,C,Dの値を適当にキャプションつけた上で
1つ文字列として連結してEのフィールドに入れておいた上で、
条件式を与えて全文検索すればいいんじゃね?
GAEはよく知らんけどもともと検索エンジン用のDBなんだからそれくらいできるでしょ。
いまいち内容が理解できてないけど
GQL使わずにfilter複数回使ってそれぞれの条件をかければいいんじゃない?
>>911 意味わからん
質問の意味がちゃんと他人にわかるように整理しる
多分その整理の過程で自分で気づくのではと思う
>>912 単にルート探索みたいなものと考えていただいた方がいいです。
検索方法ではなく、いろいろな検索条件をもれなくANDで
つなげていく最終的には文字列が欲しいだけです。
>>913 GQLにするかfilterにするか以前に全部のパターンで組み合わせを網羅する方法がわからないのです。
>>914 おっしゃる通りですね。
A B C D
B1C1 D1
C2
の場合
A-B-C-D
A-B-C-D1
A-B-C1-D
A-B-C1-D1
A-B-C2-D
・
・
・
・
-がANDだとするとこのようにすべてを網羅する文字列を得たいのです。
ただし、B・C・Dはあったりなかったり複数だったりします。
BCDはリストだと考えて頂ければいいのかな。この説明が不足でした。
再度お願いいたします。
補足です。
A-B-C-D
A-B-C-D1
A-B-C1-D
A-B-C1-D1
A-B-C2-D
これを一行ずつ実行して最終的には行をORで連結したように集合の和をとります。
すべてを網羅といいましたが、縦列を結合する必要はありません。
どれかがなかったとき、どうなるの?
たとえば、ABDのみがあってCがなかったとき、
(i)
A-B-D
のみ
(ii)
なにもなし
(iii)
A-B-D
A-B
B-D
A-D
A
B
D
どれ?
A,B,C,Dそれぞれのリスト(?)にダミーを1つづつ追加して総当りするとか
ダミーはあとで除去
>>917 (i)です。
そこが一番めんどうなところです。
>>918 あ!そうか!ダミーをスキップしちゃえばいいんですね!
他にオブジェクト志向っぽいやり方とかpythonぽいやり方なければそれで行けそうですね
921 :
917:2011/05/06(金) 22:20:36.12
>>884 >組み込み関数が思わず上書きしてしまいそうな名前になってることが悪いと思うんだよね。
>listとかlenとかsetとか。
あるある〜
fileという組み込み関数があるのを知った時はほんと困った。やめてほしい。
openだけでいいじゃん。openがあるのになんでfileなんかあるんだよ。
あとはstrとかminとかmaxも変数名に使いたいからよく困る。
その点、PHPやPerlは関数名と変数名とがかぶることが決してないから、
よけいなことに煩わされないので便利。
fileって、組み込み関数なの?
intもstrもfileも、あくまで型名だと思ってた。
3.x では __builtins__ のfile はなくなるけどね。
2.x ではそれぞれ用途が違った
openは組み込みの関数、fileは型(継承したりできる)
>>923 型でもあるし、組み込み変数でもある。
>>>type("string") == str
True
で判定できるし、
>>>str(123)
''123'
と変換できる。
fileは1行ごとに返してくれるジェネレータ的な動きをする。
open().readline() と同じ。
突っ込み歓迎。
型名すら簡単に上書きできてしまうからなあ。
まあ上書きしたとしても、影響はそのモジュール内ですむけど。
組み込みの関数や型の名前を全部把握してないと、知らずに上書きして困ることになるのがちょっとなあ。
>>925 型を、関数の呼び出しのようにすると、その型のインスタンスを生成するってだけじゃないの?
>>> type(str)
<type 'type'>
>>> type(file)
<type 'type'>
>>> type(open)
<type 'builtin_function_or_method'>
>> str.__new__(str, 0)
'0'
>>> int.__new__(int, 'A', base=16)
10
>>928 ていうか、$a, $bが受け入れられるんだったら、
ローカル変数は_a, _bって自分ルール作ってしまえば組み込みのとはかぶらないよね。
Pythonicじゃない()からおすすめしないけど
>>925 openはfile型を呼んでるだけで、
open/file双方が返すオブジェクトは同じ、file型だよ。
型判定は
OK: isinstance(obj, file)
NG: isinstance(obj, open)
>>926 Pythonはモジュールも型もクラスも全部同じ名前空間。
でも、モジュールのグローバル変数で型名上書きってないと思うけど?
慣習的にグローバル変数は大文字にするし。
関数内でなら、スコープは限定的なので、知らずに上書きして困ることはまずないよ。
>>927 type()はちょっと特殊で
1引数の場合は obj.__class__ に当たるものを返すだけで、新たなインスタンスが作られてるわけではない
3引数の場合は クラスを生成して返す。
他の組み込み型については概ねその通りで。型キャストなんかにも使える。
>>921 なるほど!こんなモジュールあるんだ。
内部を参考にしてみます。
いろいろヒントを頂いたのでなんとかやってみます。
ありがとうございました!
ffmpegをpipe越しに使って1フレームごとの処理をPythonでやろうとしてるんだけど、
bitmapイメージの数珠つなぎになったものを
pipeから読み込んで1枚ずつ切り出さないといけない。
ctypesを駆使して1枚分のデータを1個のstring変数として
切り出すところまではいったんだけど、
そこからPIL.Imageのインスタンスにするところで詰まった。
Image.open()はファイル名もしくはファイルポインタしか受け取ることが出来なくて、
しかも勝手に16バイト読み進めてしまう。
PIL.BitmapImagePluginに読み込ませたいんだけど、
何とかならんものだろうか。
あるいは、もっと簡単な方法はないですかね。
StringIO(cStringIO)を使えよ
文字列に入ってるのがピクセルデータのみならImage.fromstring
>>922 lenやminやmaxは関数なので、length()やminimum()やmaximum()でよかった。
strやlistやdictは型なので、StrやListやDictでよかった。
こうすれば、lenやmaxやminやstrやlistやdictをローカル変数として使っても何の問題もなかった。
そういうちょっとした気遣いが、Pythonには欠けている。
気に入らないなら別にPython使わなくてもいいのよ? ん?
そんな糞長い名前とかアホやん?
lenはともかく、min/maxはそんなに頻繁に使う関数じゃないだろ。
PerlやPHPの$nameが許せるなら
Pythonでname_するのも許せそうなものだけど
>>937 自分が定義する関数をその糞長いやつにしろよw
minimumって打つと指が絡まるわ。
こんなん絶対打ちたくない。
True, False = False, True
>>930 open()がfileオブジェクトを返すだけなら、fileだけでよかった。
できればFileにしてくれればもっとよかった。
file = File(filename)
あるいは
file = File(filename).open()
と書けたらいいのに。
>>940 うん、そんなに頻繁に使うような関数でないから、長い名前でもいい。
というか、頻繁に使わないものは長い名前のほうがいい。
>>939 minimumやmaximumは7文字。
対して、それよりよく使うenumerate()は9文字、isinstance()は10文字、classmethodは11文字。
939のいう通りなら、minやmaxよりよく使う関数にこんな長い名前をつけたPythonはアホということだな。
つまりPythonがアホってことでこの議題は終了だな
>>945 バトロワスレが落ちて暇なんですね。わかります
しかしこのスレもひとごとでは
俺も、なんでfileで開けるのにopenを廃止しないのか不思議なのだが。
>>945 fileなんて変数名付けるくらいならfでいいだろ。
短けりゃいいってもんじゃないとは思うが、minimum, maximumはアホっぽい。
>>945,
>>948 open()はファクトリ。
fileのコンストラクタを直接呼び出すのは推奨されてないよ。
2.xでは同じfile型のオブジェクトが返ってくるけど、
ファイルには書き込み・読み込み・追加・テキスト・バイナリと色々なモードがある。
3.xではそれぞれ別の型のオブジェクトが返ってくる。
うざいから誰かバトロワスレ建ててくれないかなぁ
俺は駄目だった
pythonなんて過疎スレなんだからどんどん続けろ
てゆうか、くだスレと統合しろ
基準があいまいなレベル分けなんて意味が無い
分けるんなら、ノーベル賞受賞者かそうでないかで分けろ
>>949 なるほど。確かに全部が全部file型である必要はないね。
Pythonに慣れている人は一時変数にlistとかsetとかlenとか付けようとすら
思わないから、Pythonコミュニティでは問題になること無いけど、
Pythonをメインに使っているわけじゃないユーザーには問題だよな。
ローカル変数でグローバルの名前を覆ったところで、実際に問題になることは
少ないから、被るまでは気にしないことにしてる。
実際、Pythonの標準ライブラリでもよくfileとかってローカルで名前上書き
してるし、あんまり気にしないでも大丈夫。
かぶったまま放置してて、後になってから気づいて直すケースが多いな。
直さなくても__builtins__呼び出せばいいんだろうけど、さすがにそれはやりたくないし……
何らかのシーケンス的なものを渡されて
それを直接編集してNoneを返す関数を書くとして
編集前にその長さを一時保存しておきたい…って場合
どんな変数名つけます?
lenってのはナシで
size
length
foolen
N: Number of elements
L: Length
Z or z: なんとなく数学的に |A| を代入するときに選べそうな名前だから
Lだとリストのような気がする
>>948 > fileなんて変数名付けるくらいならfでいいだろ。
そんなわけない。
f = file('hogehoge')
ならfはファイルオブジェクトであることがわかるけど
def load(f)
ではfが何なのかまるでわからないから
def load(file)
のほうがいい。
あるいは
f = gethogehoge() # 何を返しているのか不明
file = gethogehoge() # たぶんファイルオブジェクトを返しているのだろう
とかね。
一文字変数は乱用すべきじゃない。
foo(file)
ファイルオブジェクトなのかファイル名なのか
ドキュメント見るまではっきりしないので(両方受け付ける場合が多いけど)
foo(f)
これでもいいなあと思う
>>957 grepしてみたところ、一時変数で組み込みと名前被ってるのかなりあった。
他の多少大きなライブラリでも同様で、fileへの代入とかは比較的よく見られた。ちょっと意外。
そういえば、PEP8にもGoogle Pythonスタイルガイドにも、組込と被る変数名への言及はないよね。
>>958 もし、意図的に被らせる場合は __builtin__ (スペル 's' なし) を import して使う。
例: codec.open
組み込みと被るのは wappar関数やその引数 とかで API を一致させたい場合かな。
一時変数で組み込みの名前を使いたい場合なんかは、基本的にリファクタリング対象としてる。
>>959 一時変数の場合は、そもそもそれ自体が不要な場合が多いけどね。post_len, ori(g)_len、
長めのライフサイクルを持つ場合は、例えば original_header_length と略さず名前を付けます。
>>964 自分の場合、一文字の変数名は、汎用的な操作をする関数や、抽象を扱う場合に使います。(アルゴリズム等)
具体的な名前を付けるよりは記号として扱う方が適切だと思うので。用途としても数学的。
>>967 >foo(file)
>
>ファイルオブジェクトなのかファイル名なのか
>ドキュメント見るまではっきりしない
えーっ、まじでいってんの?
ファイル名とるならfoo(filename)かfoo(path)でしょ。
file = "file.html"
のように自明な場合はまだしも、ファイル名をとるのにfoo(file)はないよ。
>>969 なあ、ちょっとこいつを見てくれ。どう思う?
os.execl(path, arg0, arg1, ...)
os.execle(path, arg0, arg1, ..., env)
os.execlp(file, arg0, arg1, ...)
os.execlpe(file, arg0, arg1, ..., env)
os.execv(path, args)
os.execve(path, args, env)
os.execvp(file, args)
os.execvpe(file, args, env)
>>970 それ、unix側のライブラリで使われている名前をそのままもってきただけでしょ。
man execl とかしたらでてくる。
もともとのunixで使われていた名前がよろしくないうえに、それをそのまま持ってきただけのPythonもよろしくない。
>>971 >もともとのunixで使われていた名前がよろしくないうえに
関数名が無駄に短い省略形なのは昔のリンカの制限とかがあるから仕方がない
それにここで問題にしているのは引数の"file"のほうじゃないの
Unixのシステムコールとしては、引数の"file"はとくに何の問題もないはずだ
Pythonと違ってそれは何かと衝突するわけでもないし
pathとfileを使い分けているのはexecp系はPATH環境変数をサーチしてくれるので
フルパスを提供する必要が無い、という意図が込められている
>>972 いやだからmanしてみればわかるけど、pathやfileっていう引数名がunixからそのまま持ってきてるだけ。
関数名のことをいってるんじゃない。
>>972 そこはfileじゃなくてcommandのほうがいい名前だよね。fileという名前にする必要がない。
>>973 引数名に力点を置いているなら
>もともとのunixで使われていた名前がよろしくないうえに
この理由を説明してもらおうか?
Pythonでよろしくない理由は明らかだが
976 :
970:2011/05/08(日) 17:48:07.54
馬鹿しかいないな
変数名 'file' は、他の組込の名前と被る場合より実際の影響範囲は狭いと思う
fileを直接呼び出すのは 2.x の時点で非推奨だし、
3.xで組み込みの 'file' はなくなる。
isinstance(obj, file) は、テスト以外では使われない。
実際のコードでは StringIO かもしれないので、厳密な型チェックはしない、
型チェックするとしても hasattr(obj, 'write') だけとか、 2.6 以降は isinstance(obj, io.BaseIO)
組み込み関数をハイライトしてくれるエディタで、あれ?と思う程度、
fileにファイル名(文字列)いれてると、コンテキスト無視の補完では誤った候補をだしてしまうかもしれない、くらいじゃないかな。
名前付けに関してはconventionも重要だと思う
"file"ではfilelike objectかpathか分からないという話が
>>967にあったけど
Unixのシステムコールならfd、stdioならfpみたいなのがほぼデフォで
fileならpathだと考えていい
980 :
979:2011/05/08(日) 18:23:42.20
まあでもCの世界ならそもそも型宣言見れば一発なんだが……
逆に言うと、動的型言語の名前は静的型より重要だしより気を配るべきじゃないのか
という話に
三位決定戦だな
982 :
948:2011/05/08(日) 20:10:57.32
>>966 fileなんて変数名も、多用すべきでないいい加減な変数名だから、fでいい。
fileなんてふざけた変数名を使って満足するくらいなら、もっとまともな変数名付けろ、という意味で書いたのだが。
ファイルオブジェクトであることを明示とか、ハンガリアン記法じゃあるまいし。
できるなら整数にintって変数名つけんのかよ。
ローカルで使う一時変数とラッパ関数の引数名で
シチュエーションを別けて考えたほうがいいんじゃない?
こういう場合は元のAPIに合わせた方が自然だと思うけどなぁ。>システムコール類
>ファイル関連の変数
自分の場合、Pythonでは
stream, file_name (basename部分のみ), file_path と使いわけてる。
>>982 >整数の変数名にint
さすがにないだろうと思ってたけど、さっき標準モジュールをgrepした時に発見した。>uuid