くだすれPython(超初心者用) その23
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2014/05/19(月) 15:00:17.89ID:C9xN4CIoもしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますが、お礼は Python の布教と初心者の救済をお願いします。
エラーを解決したいときはエラー表示や環境(バージョン/IDE or command line)を略さずに書き込んで下さい。
騙りが頻発しています。質問する方は一時的なトリップをつけることを検討して下さい。
次スレは >>985 辺りで
前スレ
くだすれPython(超初心者用) その22
http://toro.2ch.net/test/read.cgi/tech/1394240091/
関連スレ
Pythonのお勉強 Part49
http://toro.2ch.net/test/read.cgi/tech/1387528488/
◆関連リンク Python の Home Page
ttp://www.python.org/
◆長いコードはこういうところにはってください
ttp://ideone.com/
ttp://codepad.org/
ttp://pastebin.com/
ttp://dpaste.com/
◆まとめwiki
ttp://python.rdy.jp/
0306デフォルトの名無しさん
2014/06/21(土) 15:04:22.76ID:fZd6XHEq0307デフォルトの名無しさん
2014/06/21(土) 15:29:48.82ID:G2XLQIqYありがとう(´;ω;`)
0308デフォルトの名無しさん
2014/06/21(土) 15:32:30.16ID:YWr+lJ6W必要なdevelパッケージ入れておいたら、特にコンパイルオプション指定しなくてモジュール使えるようになってる
http://pastebin.com/W2YHpdEG
./configure --prefix=/opt/python3で使えるモジュール。gui環境じゃないからtkinterはいれてない
0309デフォルトの名無しさん
2014/06/21(土) 15:38:03.85ID:fZd6XHEqsu root *****
apt-get build-dep python3
apt-get install libsqlite3-dev libbz2-dev libncurses5-dev \
libgdbm-dev liblzma-dev libssl-dev tcl-dev tk-dev libreadline-dev
curl -O https://www.python.org/ftp/python/3.4.1/Python-3.4.1.tar.xz
jar Jxf Python-3.4.1.tar.xz
cd Python-3.4.1
./configure --prefix=/opt/python-3.4.1 --enable-shared
make install
0310デフォルトの名無しさん
2014/06/21(土) 15:39:47.60ID:fZd6XHEq0311デフォルトの名無しさん
2014/06/21(土) 15:50:42.19ID:m2QGMSt20312デフォルトの名無しさん
2014/06/21(土) 15:56:22.54ID:fZd6XHEq0313デフォルトの名無しさん
2014/06/21(土) 16:22:40.96ID:XHRk4dO4vim で:python3 import timeするとエラーになります
time.cpython-34m.soはちゃんとあるようなんですがなんでですか?
Traceback (most recent call last):
File "<string>", line 1, in <module>
ImportError: /usr/local/lib/python3.4/lib-dynload/time.cpython-34m.so: undefined
symbol: PyExc_OSError
0314デフォルトの名無しさん
2014/06/21(土) 16:46:57.47ID:fZd6XHEq本当に解決したいと思ってるのか?
0315デフォルトの名無しさん
2014/06/21(土) 17:41:51.05ID:D/6VsNNbvimがPython3.4に対応していないんだろ
0316デフォルトの名無しさん
2014/06/21(土) 17:59:05.54ID:fZd6XHEqhttp://pastebin.com/zDeC3FaJ
0317デフォルトの名無しさん
2014/06/21(土) 18:00:14.74ID:fZd6XHEq0318デフォルトの名無しさん
2014/06/21(土) 20:18:12.46ID:TAtmONZ1同じ子プロセスを何度も実行するには、毎回 Process() でインスタンスを作成するという方法しかないですか?
0319デフォルトの名無しさん
2014/06/21(土) 20:33:23.70ID:zNQ9d1mJconcurrent.future.ProcessPoolExecuterとかもあるよ
0320デフォルトの名無しさん
2014/06/21(土) 23:34:49.10ID:DpqAOvJGimport timeでエラーノ件は他にもいるようでした
https://github.com/vim-jp/issues/issues/301
0321デフォルトの名無しさん
2014/06/22(日) 00:14:28.35ID:B+KLhDnZSun Jun 22 00:11:17 2014
他にもいるようですねって、意味わかってないだろ絶対
UbuntuのVimが+python3になってるからって
python3にパス通ってれば動くと思ったら大間違いだ
0323デフォルトの名無しさん
2014/06/22(日) 05:31:02.38ID:CJpDwXQ8> UbuntuのVimが+python3になってるからって
> python3にパス通ってれば動くと思ったら大間違いだ
まさにそこを知りたいのだから教えてやんなよw
0324デフォルトの名無しさん
2014/06/22(日) 06:28:47.49ID:hPlN7Ch70325デフォルトの名無しさん
2014/06/22(日) 14:29:15.24ID:i31PAkzOvimを./configure --enable-fail-if-missing --enable-python3interp=dynamic --with-features=hugeしてmakeしたんですが
+python3/dynってところまではできました
でも:python3 print(1)をすると
>E370: ライブラリ libpython3.4m.a をロードできませんでした
>E263: このコマンドは無効です,ごめんなさい: Pythonライブラリをロードできませんで>
>した.
ってなります(>_<)
後少しで最強のpython開発環境を構築できそうなのに状況は厳しいです助けてください
0326デフォルトの名無しさん
2014/06/22(日) 16:02:07.23ID:R52aFFcy0327デフォルトの名無しさん
2014/06/22(日) 16:11:51.58ID:A2MmBMfJ試しに Python3 の共有 DLL 作ってあるんなら libpython3.4m.a からリンク張ってみるとか
0328デフォルトの名無しさん
2014/06/22(日) 17:02:55.98ID:iuL+D4vhたぶんpythonのコンパイルは大丈夫なのであとはvimのほうですね
あとはvimスレできいてきます
0329デフォルトの名無しさん
2014/06/22(日) 17:06:53.01ID:oHZVLzgWclass Meta:
hoge = True
class Bar(Foo):
class Meta:
fuga = True
Fooクラスにはクラス内のクラスとしてMetaがあり、Fooを継承したBarクラスがあります。
そのBarクラスで継承元のFooクラス内で定義したMetaクラスを継承しつつ、プロパティを追加したいのですが、この場合はどのように書けばよいのでしょうか。
0330デフォルトの名無しさん
2014/06/22(日) 17:33:24.81ID:mgZTcG6H... Foo.Meta.fuga = True
...
>>> Bar().Meta.fuga
True
>>> Bar().Meta.hoge
True
>>>
0331デフォルトの名無しさん
2014/06/22(日) 18:02:49.72ID:nR1nGnXpclass Meta(Foo.Meta):
fuga = True
3系ならFooのMetaにfugaは波及しない
>>> Foo.Meta.fuga
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: type object 'Meta' has no attribute 'fuga'
>>> Foo.Meta.hoge = 123
>>> Bar.Meta.hoge
123
0332デフォルトの名無しさん
2014/06/22(日) 18:12:43.70ID:hzYHrCGT0333デフォルトの名無しさん
2014/06/23(月) 00:31:28.87ID:oAZ9zi7Adebianは特殊なのでできないのです
ubuntuなら問題ないんですけどね
0334デフォルトの名無しさん
2014/06/23(月) 01:22:31.10ID:ME71nfWhバカのテンプレートいただきました
0335デフォルトの名無しさん
2014/06/23(月) 08:26:30.15ID:NJySSj93ま、時期尚早ってこった
0336デフォルトの名無しさん
2014/06/23(月) 08:31:35.70ID:nXtrLFsL馬鹿には無理
0337デフォルトの名無しさん
2014/06/23(月) 09:07:24.98ID:2Cm/+3gI生暖かく見守っておけばいいものを
0338デフォルトの名無しさん
2014/06/23(月) 10:47:50.36ID:LmsmhY4Tスルーしてやれよ
まあ、俺も人のことは言えないから、スルーしてくれ (w
0339デフォルトの名無しさん
2014/06/23(月) 16:06:26.37ID:scD9/3XK0340デフォルトの名無しさん
2014/06/23(月) 17:05:03.06ID:3qqIOXad答えを書き写すことは出来ても、自分自身で問題を解くことが出来ないのと同じ
その点に気付かないとすればバカ
手順踏んで学習すれば、いずれ解けるようになるさ
0341デフォルトの名無しさん
2014/06/23(月) 17:05:26.87ID:Te+HAwBv0342デフォルトの名無しさん
2014/06/23(月) 23:27:09.14ID:A6Ca/1xX0343デフォルトの名無しさん
2014/06/24(火) 01:09:36.01ID:u8PAY0lA>>334
0344デフォルトの名無しさん
2014/06/24(火) 08:14:24.24ID:xbI6CMxmバカが使うとなんでも相性悪くなるもんだよ
迷惑だから死ねばいいのにな
お前とか
0345デフォルトの名無しさん
2014/06/24(火) 08:56:21.42ID:LoSPM9um0346デフォルトの名無しさん
2014/06/24(火) 10:11:45.77ID:wbKSVw020347デフォルトの名無しさん
2014/06/24(火) 12:49:31.51ID:KPD/KS2Lこのまま勉強続けるか他の言語やろうか悩んでます
0348デフォルトの名無しさん
2014/06/24(火) 13:14:49.01ID:NxIbYWBb他人の回答待たなくても python php ruby 速度 比較 でググれば済むでしょ
速度重視のことしかやる予定がないならばスクリプト言語は選ぶべきじゃないよ
0349デフォルトの名無しさん
2014/06/24(火) 14:14:42.89ID:pyM7CQ5E0350デフォルトの名無しさん
2014/06/24(火) 17:27:44.49ID:xvJ2AonvPHPが入ってるからweb利用だと思うんだけど、そうなるとフレームワークのスピードまで考えないといけないからどのフレームワークを使うかまで示さないと答えが出ないと思う。
Rubyは1.8まで鈍足だったけど1.9や2.0から爆速になったらしい。
0351デフォルトの名無しさん
2014/06/24(火) 18:28:54.23ID:Gaa8YGIE極限が抜けてるし
近似がどのくらいになるか実用でも大切なんで
もうちょっと頑張って欲しい
0352デフォルトの名無しさん
2014/06/24(火) 18:34:11.93ID:6pATSNEw0353デフォルトの名無しさん
2014/06/24(火) 18:50:13.54ID:7apUXXXH工夫出来ない人には遅いからやめたほうがいいと思うよ
0354デフォルトの名無しさん
2014/06/24(火) 19:13:27.85ID:/C23Uhbr0355デフォルトの名無しさん
2014/06/24(火) 21:19:31.95ID:UpeRHjTeさくっと入れられる
0356デフォルトの名無しさん
2014/06/25(水) 10:19:45.34ID:51nve3hM次の足し算の値をそれぞれ求めてください(「^」は冪乗)
S0 = Σ[n=1->∞](1/n)
S1 = Σ[n=1->∞](1/(n^2))
S2 = Σ[n=1->∞](1/(2^n))
S3 = Σ[n=1->∞](1/(n!))
S4 = Σ[n=1->∞](((-1)^n)/(n!))
0357デフォルトの名無しさん
2014/06/26(木) 21:47:05.20ID:B3uDjtHwこれを
a, b, c, d, e = 0
こんな感じにやる方法ありますか?
0358デフォルトの名無しさん
2014/06/26(木) 22:00:42.57ID:5KH0JI86a, b, c, d, e = (0, ) * 5
0359デフォルトの名無しさん
2014/06/26(木) 22:45:45.16ID:TI09kgf8a = 2
print(b) # 1
Why?
0360デフォルトの名無しさん
2014/06/26(木) 22:52:06.64ID:Sh8OHuSQaもbも1を指し示してるだけ
0361デフォルトの名無しさん
2014/06/27(金) 07:50:01.41ID:MP6UuGKea = b = 1
b = 2
print(a) # 1
Why?
って感じはする
0362デフォルトの名無しさん
2014/06/27(金) 08:27:18.33ID:th4oYuYPa = b = c = d = e = 0
0363デフォルトの名無しさん
2014/06/27(金) 11:06:52.02ID:VMxElTMe0364デフォルトの名無しさん
2014/06/27(金) 11:40:29.79ID:EIRXo2Ck0365デフォルトの名無しさん
2014/06/27(金) 11:59:29.04ID:wewJM3tia, b, c, d, e = (0 for i in xrange(5))
0366デフォルトの名無しさん
2014/06/27(金) 12:32:17.69ID:cE8RShgLa = 2
print(b) # 2
というふうにaに代入した値をbにも反映されるようにするのどうしたらいいのか教えて
参照渡しってできないの?
0367デフォルトの名無しさん
2014/06/27(金) 12:49:29.40ID:cYIjyZKJa = b = [1]
a[0] = 2
print b[0] # 2
参照渡しはないよ
0368デフォルトの名無しさん
2014/06/27(金) 13:20:59.77ID:h62Evzx/def func(n):
while n:
yield 0
n -= 1
a, b, c, d, e = reduce(lambda x, y: x + (y, ), func(5), ())
0369デフォルトの名無しさん
2014/06/27(金) 13:27:42.48ID:h62Evzx/import ctypes
x = ctypes.c_int(6)
print x.value
y = ctypes.pointer(x)
print y[0]
x.value = 9
print y[0]
0370デフォルトの名無しさん
2014/06/27(金) 13:35:02.60ID:h62Evzx/a, b, c, d, e = func(5)
だけでよかった
0371デフォルトの名無しさん
2014/06/27(金) 13:36:23.32ID:zWZLa2qva,b,c,d,e=O
でおk
0372デフォルトの名無しさん
2014/06/27(金) 13:41:33.48ID:h62Evzx/0373デフォルトの名無しさん
2014/06/27(金) 14:00:09.20ID:xRd+Z5nf少なくとも俺の3.3.5ではエラーになるぞ
>>> a,b,c,d,e = 0
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable
0374デフォルトの名無しさん
2014/06/27(金) 14:37:01.03ID:anxy72bu>>> b = 257
>>> a is b
False
>>> a = b = 257
>>> a is b
True
>>> a, b = 257, 257
>>> a is b
True
>>> a = 257; b = 257
>>> a is b
True
>>> c = (257, 257)
>>> c[0] is c[1]
True
つまりはこういうことよ。後は>>375が説明してくれる
0375デフォルトの名無しさん
2014/06/27(金) 15:04:16.66ID:HV8S9cD10376デフォルトの名無しさん
2014/06/27(金) 15:20:07.76ID:x7mGf/cj>>> b = 257
>>> a is b
False
これだけFalseなのは何でだ?
二行に渡って書くと別のオブジェクトが生成されるのか?
0377デフォルトの名無しさん
2014/06/27(金) 15:31:15.87ID:anxy72bu>>> a = 256
>>> b = 256
>>> a is b
True
>-5 から 256 までの全ての整数に対する整数オブジェクトの配列を保持するようにしており、
>この範囲の数を生成すると、実際には既存のオブジェクトに対する参照が返るようになっています。
(http://docs.python.jp/3.3/c-api/long.html#PyLong_FromLong)
0378デフォルトの名無しさん
2014/06/27(金) 15:45:27.50ID:x7mGf/cjつまり既存の整数オブジェクトを指すときは二行に渡って書いてもどちらも勝手にそれを指してくれるが
それ以上の整数オブジェクトを指すときに二行以上に渡って書くと二つ目かそれ以上の同値のオブジェクトが生成されてしまうのか
0379デフォルトの名無しさん
2014/06/27(金) 15:45:58.06ID:xRd+Z5nf危険な香りのする仕様だなあ
動的言語は、ただでさえ変数とオブジェクトの結びつきが把握しづらいのに
0380デフォルトの名無しさん
2014/06/27(金) 15:52:28.40ID:IgBVKGCt0381デフォルトの名無しさん
2014/06/27(金) 17:40:39.37ID:h62Evzx/0382デフォルトの名無しさん
2014/06/27(金) 17:51:38.50ID:zWZLa2qvフォントを良く見るんだ
0383デフォルトの名無しさん
2014/06/27(金) 17:58:19.42ID:h62Evzx/0384デフォルトの名無しさん
2014/06/27(金) 18:13:19.31ID:h62Evzx/while True: yield 0
a,b,c,d,e=map(operator.itemgetter(0), zip(func(),'.....'))
0385デフォルトの名無しさん
2014/06/27(金) 19:15:58.43ID:uvqK3/Rnis は値が等しいかどうかを調べるための演算子じゃないんだよ。
0386デフォルトの名無しさん
2014/06/27(金) 22:53:28.40ID:/cFHuc2v「いまさらでもないような」とか陰湿なはてなコメントがつきますかね?
0387デフォルトの名無しさん
2014/06/27(金) 23:07:56.74ID:6sHTcygmos.walk('hogehoge').next()[2]
と書けばお目当てのリストが手に入るのですが
なんとも回りくどいというかダサいような気がしてて
「お前普通これはこう書くぜ」
ってのがありましたらご教授ください。
あと「こんなときはこう書く」といったセオリー集みたいなものがあれば
推薦いただけると助かります。
よろしくお願いします。
0388デフォルトの名無しさん
2014/06/27(金) 23:19:03.93ID:1upKDDHVpathlib.Path('hogehoge').glob('*')
0389デフォルトの名無しさん
2014/06/28(土) 00:04:46.24ID:7sxfa8vA[f for f in os.listdir("dir") if os.path.isfile(f)]
0390デフォルトの名無しさん
2014/06/28(土) 01:14:32.39ID:b1YNPAHo0391デフォルトの名無しさん
2014/06/28(土) 01:28:08.75ID:6GcPHMvtPython3.4が使えるならpathlibあるからいろんな環境で使いまわせる
>>> def get_files(target):
p = pathlib.Path(target)
for row in p.iterdir():
if row.is_file(): yield row
#windows
>>> list(get_files("../"))
[WindowsPath('../a.txt'), WindowsPath('../b.txt'), WindowsPath('../c.txt')]
#posix
>>> list(get_files("../"))
[PosixPath('../a.txt'), PosixPath('../b.txt'), PosixPath('../c.txt')]
0392デフォルトの名無しさん
2014/06/28(土) 02:40:28.64ID:WBXNiQjoclient = gdata.docs.service.DocsService()
client.ssh = True
client.ClientLogin('[email protected]', 'fuga')
for entry in client.Query(gdata.docs.service.DocumentQuery(categories=['folder|document|spreadsheet'], params={'showfolders': 'true'}).ToUri()).entry:
print entry.title.text.decode('utf-8')
0393デフォルトの名無しさん
2014/06/28(土) 02:46:32.92ID:N7FDbnGk>>> b = 257
>>> c = 257
>>> a is b
False
>>> b is c
False
>>> c is a
False
やっぱり複数行に渡って書くとそれだけ別のオブジェクト作ってるみたいね
0394デフォルトの名無しさん
2014/06/28(土) 08:36:33.28ID:IsiDlcAuかなり衝撃の仕様だな
これ知らない人多いんじゃね
0395387
2014/06/28(土) 08:45:53.61ID:pESjXYY5精進します。
0396デフォルトの名無しさん
2014/06/28(土) 08:54:24.83ID:2sHahEvaちがう
https://docs.python.org/3/reference/simple_stmts.html#assignment-statements
> assignment_stmt ::= (target_list "=")+ (expression_list | yield_expression)
>
> An assignment statement evaluates the expression list (remember that this can be
> a single expression or a comma-separated list, the latter yielding a tuple) and
> assigns the single resulting object to each of the target lists, from left to right.
a = b = 1 ってあったら a と b が target_list
でもってリテラル 1 を評価して得られたオブジェクトをまず a に代入し、続いて b に代入する
Python の代入が値を返さないことからくる仕様
0397デフォルトの名無しさん
2014/06/28(土) 09:18:30.76ID:IsiDlcAu結果が同じなのに違うという意味がわからない
a = 257;b = 257と書くと、内部的にa = b = 257と
同じ動作をする、と解釈するのが自然でしょ
0398デフォルトの名無しさん
2014/06/28(土) 09:30:34.64ID:2sHahEva結果は違うよ。副作用を持つ式を右辺に持ってくるとよくわかる
def foo(): print "foo"
a = b = foo()
c = foo(); d = foo()
0399デフォルトの名無しさん
2014/06/28(土) 09:40:08.15ID:9rt66hxz257が同じオブジェクトかどうかという話なのに何でそんな話が出てくるの
0400デフォルトの名無しさん
2014/06/28(土) 09:46:56.44ID:oeWdp7Lh> やっぱり複数行に渡って書くとそれだけ別のオブジェクト作ってるみたいね
ちょいとイヤーんな仕様だけど、同一行に書いてるのにいちいち別のオブジェクト作るのもどうかと思うし、まあ納得できなくもないな。
0401デフォルトの名無しさん
2014/06/28(土) 09:49:17.72ID:ANCf73I/>> a = 257
>> b = 257
>> a is b
がFalseを返すのは「複数行に渡って書いてるから」ではなく「REPLが一行ずつコンパイルしているから」だよ
通常のコーディングではモジュールや関数単位でリテラルを保存する領域が作られて、そこへの参照が代入されているためTrueを返す
REPL上でも
def function():
a = 257
b = 257
return a is b
はTrueを返すのが確認できるはず
0402デフォルトの名無しさん
2014/06/28(土) 09:58:00.73ID:IsiDlcAuなるほどね
会話モードで実行する場合とスクリプトファイルを書いて
実行する場合とでオブジェクト解釈動作が異なるとはな…
これは動的言語全般の弱点と言ってよいのだろうか
0403デフォルトの名無しさん
2014/06/28(土) 10:13:06.85ID:7CN7vrwxまぁ数値だろうが何だろうがコードに直接書いたもんでも計算の結果でも同じものなら同一単一のユニークなオブジェクトになっては欲しいが
実際にプログラム書くときはあんまり関係ないけど
0404デフォルトの名無しさん
2014/06/28(土) 10:37:48.78ID:ANCf73I/でもさすがに
a = "abcdef"
b = "abc"
c = "def"
a is b + c
はFalseが返ってくる模様
a is "abc" + "def"
ならTrueになるんだけどコンパイル時に文字列の連結だけは勝手にやってくれるんだっけか
0405デフォルトの名無しさん
2014/06/28(土) 10:52:23.41ID:IsiDlcAuオブジェクト同士の一致・不一致をよりどころにしたコーディングは
避けた方が無難という教訓は得られたな
0406デフォルトの名無しさん
2014/06/28(土) 11:06:36.46ID:nQi9MEXz数値型や文字列はキャッシュされるから例外的であって
その他の一般的なオブジェクトは個別にインスタンス持つから問題ない
■ このスレッドは過去ログ倉庫に格納されています