X



Pythonについて(アンチ専用)

レス数が900を超えています。1000を超えると表示できなくなるよ。
0815デフォルトの名無しさん
垢版 |
2014/01/18(土) 23:22:11.28
代入演算子が値ではなくてリファレンスの代入という仕様はハマるな。
みんな慣れてるの?
他の言語と基本的なことが違い過ぎる。
0817デフォルトの名無しさん
垢版 |
2014/01/19(日) 05:38:49.85
Pythonは他の言語からの人がはまる仕様が結構ある。
デフォルト引数が評価されるタイミングとか。

FAQに纏まってるので、早めに目を通すといいよ
0818デフォルトの名無しさん
垢版 |
2014/01/19(日) 21:58:13.83
オブジェクトを指す変数がリファレンスだなんて、ほとんどの言語であたりまえだわ。
むしろポインタを生で扱わないといけないので、明示的にデリファレンスをしないと
いけない、CとC++のほうが例外的。

PHPは、何も考えてない言語仕様だから変なことになってるけど、まぁPHPだからw
0819デフォルトの名無しさん
垢版 |
2014/01/19(日) 23:35:53.16
>代入演算子が値ではなくてリファレンスの代入という仕様はハマるな。

これは、割とどの言語でも繰り返されてきた話題なんだけど、
言語間での"リファレンス/参照"という語句の、食い違いによる説明の混乱というものがあって

C++で言う(alias的な機能の)"リファレンス/参照"は、Pythonにはなく、
C/C++の語句で言うなら、Pythonでのオブジェクトのリファレンスとは、
単に"オブジェクトの構造体を指すポインタの値"。
0820デフォルトの名無しさん
垢版 |
2014/01/20(月) 15:04:22.06
Aという言語を使ってきた人がBという言語を使い始めた時にハマるポイント、
なんてのは、どんな組み合わせでもまず間違いなく絶対あるよな。
0821デフォルトの名無しさん
垢版 |
2014/02/02(日) 00:08:23.72
インデントの使用で読みやすいとは言うが、糖衣構文やデコレータバンバンだから
実際の現場で使われているアプリのレベルのソースはちょっと分かりにくい

よくある話だが、教育用と実用性を両立させようとするとどうしてもこうなる
0824デフォルトの名無しさん
垢版 |
2014/02/03(月) 10:25:51.27
デコレータ使わず、糖衣構文を展開した形で書かれていれば理解できるんだい、
(と信じようとしている)。
0825デフォルトの名無しさん
垢版 |
2014/02/13(木) 21:58:12.55
時間周りがめんどくさい
0826デフォルトの名無しさん
垢版 |
2014/03/08(土) 01:00:37.80
日本ではPythonはもう終わりだ...
発展はない
始めるのはゆとりばかり
質問なんかも酷いもんだ
PHPより遥かに劣る
0827デフォルトの名無しさん
垢版 |
2014/03/29(土) 23:09:40.53ID:O49NFKnh
osとshutilに分かれてる意味がわからない。
日付が使いにくい。
lenがオブジェクトのメンバに無いのがおかしい。
absがmathじゃないのはおかしい。


はじめたばかりだけど、ざっと見てなんかライブラリがとっ散らかってる印象。
0828デフォルトの名無しさん
垢版 |
2014/03/30(日) 11:06:16.32ID:Ubp7wCfs
気になるのは最初だけだから
通過してしまえば一瞬で忘れられる
そんな小さいことにいつまでも構ってられるほど python の世界は狭くはない
安心して使い続けるがよい
0829デフォルトの名無しさん
垢版 |
2014/03/30(日) 13:08:26.22ID:uSRubpe1
ライブラリがとっ散らかってると、マニュアル引くとき困るんだが。
このくそライブラリのせいで学習曲線絶対急になってるよね。イラつくわ。
0830デフォルトの名無しさん
垢版 |
2014/03/30(日) 20:41:33.71ID:szVVotNM
sysとosとか、きちんと意味があって分けられているけどな。

なんでもグローバル名前空間にぶち込んであるのが好きならPHP使ってろよw
0832デフォルトの名無しさん
垢版 |
2014/05/01(木) 23:27:51.38ID:WbJRLfy+
> lenがオブジェクトのメンバに無いのがおかしい。
__len__メソッドが代わりにあるから使えよ。
ちなみにlen関数がやってくれてる型チェックも自前でやれよ。
0836デフォルトの名無しさん
垢版 |
2014/08/27(水) 21:38:43.96ID:+mS2YVhy
外部関数とメンバ関数を一々覚えんのがめんどいよな
0837デフォルトの名無しさん
垢版 |
2015/01/25(日) 09:57:22.57ID:wuFk28jJ
Pythonってリスト内包表記が中途半端で使いにくい。

array = [1, 2, 3, 4, 5]
[x*2 for x in array if x<3]
これはmap とfilterの組み合わせで、プログラミング言語として考えたらこんな複雑な構文は面倒くさいだけだし、
x*2 for x の部分をlambdaだと考えたら仮引数が後ろに来ていて非常に読みにくい。

matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
[[c*2 for c in r] for r in matrix]
数式に近い書き方なんだと考えたら考えたで、行列のような多次元データ構造を扱うには
内包表記をネストしないといけなくなって複雑になる。結局何をやるにしてもnumpy頼みになる。
0838デフォルトの名無しさん
垢版 |
2015/01/25(日) 10:16:36.81ID:Z3bPH+iB
Pythonの内包表記が中途半端ってどういうこと?
Haskellの内包表記も似たようなもんだよ
それに慣れると(Haskellにおいてすら)mapやfilterより読みやすい

[x * 2 | x <- array, x < 3]
map (* 2) $ filter (< 3) $ array
0839デフォルトの名無しさん
垢版 |
2015/01/25(日) 10:20:26.56ID:JhgO84F7
>x*2 for x の部分をlambdaだと考えたら仮引数が後ろに来ていて非常に読みにくい。

そんな香具師いるんかね
むしろ
[2*x for x in array if x<3]
とかのとき
[('%s'*x) for x in array if x<3]
と解釈されるはずだと思うところが
ひょっとすると
['%s'%(x for x in array if x<3)]
の可能性も捨てきれないと思ってしまう
0840デフォルトの名無しさん
垢版 |
2015/01/25(日) 10:21:40.81ID:JhgO84F7
なんか切り貼りしてたらおかしくなったので訂正

むしろ
['%s'%x for x in array if x<3]
とかのとき
[('%s'%x) for x in array if x<3]
と解釈されるはずだと思うところが
ひょっとすると
['%s'%(x for x in array if x<3)]
の可能性も捨てきれないと思ってしまう
0841デフォルトの名無しさん
垢版 |
2015/01/25(日) 11:10:24.86ID:wuFk28jJ
>>838
数式に親しくないプログラマにとっては「今のところ」後者のmapとfilterで平凡に書く方が分かりやすいと思うけどな。
Haskellでは後者の書き方でも色々と非凡になるけどw
(今のところってのは、昔はそもそも無名関数自体一般的じゃなくてループの方が分かりやすい時代だった。
今は無名関数くらい誰でも使う。何が分かりやすいかも時代で変わってくるから、時代に合わせたプログラミング大事)

本題。中途半端って言ったのは、そこじゃなくて。
今、内包表記を苦もなくスラスラ読めるプログラマってどんな奴だ?
→数式を読めるプログラマだろ
→数式を読めるプログラマはどんなプログラムを書く?
→数学の問題を解くプログラムだろ
→数学の問題をプログラミングするなら、行列の各要素を二倍するなんてこう書きたいだろ(Rのように)
matrix*2
0842デフォルトの名無しさん
垢版 |
2015/01/25(日) 11:28:13.18ID:JhgO84F7
>数式に親しくないプログラマ

そんな香具師いるんかね
0843デフォルトの名無しさん
垢版 |
2015/01/25(日) 11:30:30.53ID:JhgO84F7
>>841

>→数学の問題をプログラミングするなら、行列の各要素を二倍するなんてこう書きたいだろ(Rのように)
>matrix*2

それこそ numpy でいいやん
0845デフォルトの名無しさん
垢版 |
2015/01/25(日) 11:37:21.13ID:3PovQon7
日本で産まれた(ω) Ruby にも後置 if とかあるのに
0848デフォルトの名無しさん
垢版 |
2015/01/31(土) 08:37:29.46ID:YMt5PyZL
カバー付ければ良いだけじゃん
全編写真集なら嫌だけど
0855デフォルトの名無しさん
垢版 |
2015/06/28(日) 15:54:47.88ID:XDTH7fdP
Pythonって単純な後置ifが使えないみたいだけど
それだとそのためだけにif文でインデントがひとつ深くなって
インデントが重要な言語仕様にとっては欠陥なんじやないかな
import thisでもネストしてるよりフラットがいいって言ってるんだし
0856デフォルトの名無しさん
垢版 |
2015/06/28(日) 20:53:17.33ID:92vB0cyt
hoge = a if b else c
0857デフォルトの名無しさん
垢版 |
2015/06/28(日) 21:07:18.70ID:lxz6gjyn
Python使ってもクソコード書く奴はクソコードを書く。
言語変えたからって良いコードにはならない。
0859デフォルトの名無しさん
垢版 |
2015/06/28(日) 21:19:54.87ID:I6pGNCnf
elseが必要な場合ばかりじゃないじゃないですか
単純な後置ifって書いたのはそういう意味です
単純な条件判定だけすれば十分っていう場合
その「単純な〜だけすれば十分」っていうのと
仕様上不可欠なインデントを要求するのがバランスとれてない感じがするんですよね
まあ単純にインデント増えるとコードがわかりにくくなるなるっていうのが
文句言ってる理由なんですけど
0860デフォルトの名無しさん
垢版 |
2015/06/28(日) 21:24:02.23ID:lxz6gjyn
Pythonのインデントでブロックを表現するというのは
面白いが、メリットはない。
0861デフォルトの名無しさん
垢版 |
2015/06/28(日) 21:25:10.72ID:I6pGNCnf
いや逆だな
コードの分かりにくさなんていろんな理由で発生するからこの件だけ文句言う理由がない
「単純な〜だけすれば十分」っていうのと
仕様上不可欠なインデントを要求するのがバランスとれてない感じがする
っていうのが文句言いたくなった本当の理由です
なんとなくすっきりしないという
0862デフォルトの名無しさん
垢版 |
2015/06/28(日) 21:27:03.42ID:lxz6gjyn
インデントでブロックを表現するというのは
デメリットも有る。

例えばデバッグプリントするとき、他の言語なら、わざとインデントを外して
目立つようにできるが、Pythonだといちいち揃えないといけない。
消す時面倒くさい。

また試しに他の部分からコードを持ってきたり、
コードの順番を入れ替えてみたりする時、
ちゃんと揃えないと動かない。

仮のコードが書きにくい。
0863デフォルトの名無しさん
垢版 |
2015/06/28(日) 22:07:47.22ID:92vB0cyt
>elseが必要な場合ばかりじゃないじゃないですか

大抵のケースでは
hoge = c
hoge = a if b

hoge = a if b else c


あるいは
hoge = a if b else None
0864デフォルトの名無しさん
垢版 |
2015/11/07(土) 17:03:07.54ID:rKOE1Rwz
あほちゃう
0867デフォルトの名無しさん
垢版 |
2015/12/04(金) 13:08:41.19ID:cIAl+Zzr
re内でしか正規表現使えないの不便すぎ
0870デフォルトの名無しさん
垢版 |
2016/08/07(日) 16:59:44.06ID:nuDQx96v
そうでもな
0871デフォルトの名無しさん
垢版 |
2016/08/08(月) 00:00:14.29ID:xVTmsFhH
インデントするかしないかなんて書き手に任せればいいじゃん。
構造が分かっているなら自動整形のツールだって作れるわけだし。

なんかそんなところまで縛って、基本的なところでインデントが
プログラムの文法に縛りを与えるってなんか嫌な設計だよね。
0872デフォルトの名無しさん
垢版 |
2016/08/08(月) 17:57:42.17ID:1QM6yHGZ
前はそう思ってたけど
実際書いてみると
問題になるケースはほとんどないよ
君も外からgdgd言ってないで書いてみろ
0873デフォルトの名無しさん
垢版 |
2016/11/09(水) 19:52:52.94ID:em+Lyjx7
あー、でも切り貼りしずらいというのはあるね
ある部分だけ外に出したいとか、逆に括りたいときに、ちょっと手間
インデントが一意に定まらないから、オートインデントしずらいんだよね
0874デフォルトの名無しさん
垢版 |
2016/11/09(水) 23:10:35.98ID:gLDp2Y3W
>>873
ブロック単位でインデントの深さは切り離せるから違ってても良いんだわ

つまり
「ある部分だけ切り離す」
っていうのは全然問題にならない
0875デフォルトの名無しさん
垢版 |
2016/11/09(水) 23:11:57.92ID:gLDp2Y3W
>逆に括りたいとき

この場合は
if True:
って書いてしまえばほとんどのケースで解決する
0877デフォルトの名無しさん
垢版 |
2016/12/22(木) 00:35:33.27ID:J1Y5kwjp
うむ
0879デフォルトの名無しさん
垢版 |
2018/05/23(水) 21:51:31.70ID:Au5e7VGg
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

2UWPR
0880デフォルトの名無しさん
垢版 |
2018/07/05(木) 00:10:36.37ID:RfoszcD2
077
0881デフォルトの名無しさん
垢版 |
2018/08/31(金) 17:46:44.07ID:/xTCWZjj
今後 Python使える人増えるでー
学校教育用言語に選ばれたからね
ヨーロッパではPythonが大注目
米国も追従するかは不明
日本は応用が利かないフローチャート風
なんで、日本はいつも行き止まりな道しか選ばないのか
仮想アセンブラのCASLなんて何の役にもたたなかったし
外国の小学生と日本の小学生の格差は広がるばかり
0882デフォルトの名無しさん
垢版 |
2018/08/31(金) 18:02:23.50ID:958KuBfY
python使うのはありだけど
日本の学校で教えると
pythonしか使えない人とかも出てきそう
大事なのはそこじゃなくて
アルゴリズムとかなんだけど
どんな言語でも書ける能力を磨くとかそういう発想はなさそう
0883デフォルトの名無しさん
垢版 |
2018/08/31(金) 19:05:06.17ID:9BvJl+C0
>>882
そんなもんおまえが気づけた程度の極意なんやから
未来ある有望な子どもたちは当たり前のように気づくやろw
論理的ってこうゆう事やでアホンダラw
0884デフォルトの名無しさん
垢版 |
2018/08/31(金) 23:27:44.03ID:N52+Kto5
日本の学校は子供を潰す
延びる芽を摘む教育
0885デフォルトの名無しさん
垢版 |
2018/09/01(土) 00:19:19.24ID:MpWrJr2V
>>884
言っとくけどおまえの芽はもとから腐っとったからなw
0886デフォルトの名無しさん
垢版 |
2018/09/01(土) 16:47:17.22ID:h137Mfrw
インデントが崩れちゃうとそれだけで構造が読みにくくなる。
整形もプログラムを読解しながらやらなきゃならないので非常に効率が悪い。
0888デフォルトの名無しさん
垢版 |
2018/09/15(土) 15:16:31.17ID:heijdb7v
Pythonって、リストに値を追加する時、配列のような index 番号か、
または、'Hello' などの値を指定して、その値を探して一致した要素
の直前か直後辺りに追加する事は出来ても、C言語のように、
ポインタを指定して、そのポインタの指す要素の直後に追加する
ことは出来ないよね。

もし、そうだとすると、言語自体が高速動作に向いてない。

元々、データ構造的にリストとは配列とは異なる概念で、前者は
ポインタで互いに要素をリンクした構造。

だから、index 値から、要素を特定するには、先頭から順番に
「辿る」作業が必要で、要素数がNの時、O(N)の時間がかかって
しまう。値を探すのも、当然O(N)の時間がかかる。

Cの場合のポインタや参照などで場所を指し示す方法だけが、
O(1)の時間で済む。

ポインタの概念が理解しにくい人もいるらしいが、Pythonの方法だと、
どんなにCythonなどでコンパイルしても、アルゴリズム的に
速度は上がらない。
0889デフォルトの名無しさん
垢版 |
2018/09/15(土) 15:32:30.08ID:heijdb7v
以下の仕様もダメ。ループでの要素削除がまともに出来ない。この不具合
を回避するためにはリストをまるまるコピーしなくてはならず、とても効率が悪い。
Cythonでコンパイルしても、Cに比べてとても遅くなってしまう。


http://blog.livedoor.jp/kmiwa_project/archives/1030391127.html
http://sakitake.blogspot.com/2012/10/pythonfor.html

Python で リストの中身をforループで削除する時の注意点。

numbers = [1,2,3,4,5]

とあって、for ループで numbers の中身を消したいと思って、下記のようにすると、失敗する。

for e in numbers:
  numbers.remove(e)

numbers の中に、 2と4 が残ったままとなる。

numbers = [2,4]

Pythonの仕様。

そこで、このようにする。

for e in numbers[:]:
  numbers.remove(e)


[:] とすることで元のリストのコピーとなり要素の順番を全て取得でき、全ての要素を順番に削除が行える。
0890デフォルトの名無しさん
垢版 |
2018/09/15(土) 15:54:07.45ID:heijdb7v
>>888
「辞書」や「集合(Set)」は、O(1)で探せるらしいが、それは、Hush法を用いている
からだ。しかし、例え O(1)でも、データを探すには、例えばデータが文字列なら
最低1回の文字列比較(C言語でのstrcmp()みたいなもの)は必要になるので、
文字の長さに比例した時間がかかってしまう。

要素(データ)が文字列の場合に限らず、1つ1つの要素のデータが複雑
になった場合は、その複雑さに比例したような検索時間がかかるようになる。

つまり、要素数をN、1つあたりの要素の平均サイズをM とすると、
「辞書」や「集合」であっても、O(M)の時間がかかる。

リストなら、O(M・N)の時間がかかる。

一方、C言語のリストなら、ある要素の直前、直後に追加するのには、
全く探す動作が必要ないので、O(1)で済む。

こういうところが、PythonとCの速度差に繋がる。
0891デフォルトの名無しさん
垢版 |
2018/09/15(土) 15:59:11.04ID:AVfR6YnT
>>888
numpy
0894デフォルトの名無しさん
垢版 |
2018/09/16(日) 11:17:08.95ID:HF0YmRsW
povertyかと思った
0898デフォルトの名無しさん
垢版 |
2019/01/12(土) 11:09:31.46ID:k/r1EiKa
>>> a = [1, 2, 3, 4, 5]
>>> for e in range(len(a)): a.pop()
>>> a
[]
0899デフォルトの名無しさん
垢版 |
2019/01/25(金) 12:56:22.32ID:aS+Q22GK
>>888
PythonのリストのランダムアクセスはO(1)で、実態は配列だよ
また、Cのポインタは配列アクセスと同じなので、
配列操作に関して言えばポインタを持つのもインデックスを持つのも同じ
int a[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
b = 2;
// a[b] == *(a + b) == *(b + a) == b[a] == 2
0900デフォルトの名無しさん
垢版 |
2019/04/12(金) 11:28:27.17ID:1GqnDIS9
誰が書いても同じように書けるとか言うくせに
同じようなモジュールたくさん作りやがって。

ディレクトリ名取るのに os.listdir と glob.glob と pathlib.glob ... バカかよ。
0901デフォルトの名無しさん
垢版 |
2019/04/12(金) 13:08:25.69ID:WO5SLys3
C:/Users/Owner/Documents/*.txt

Ruby では、Windows のファイルパスを、/ で書けるけど、
Python では、\ だから、うっとおしい!
0902デフォルトの名無しさん
垢版 |
2019/04/12(金) 13:21:29.77ID:VR9mZ4dF
うちのpythonはwindowsでも/使えてるんだが
0904デフォルトの名無しさん
垢版 |
2019/04/18(木) 21:39:26.04ID:wluzRVJk
map あるのに list内包とか作ってブレブレ。
list 返すのか iterable オブジェクト返すのかも。
オブジェクト指向に関数型の見た目だけ取り入れてごちゃごちゃ。

初心者の取り込みには成功したね。
上級者の生産性は落ちるけど。
0905デフォルトの名無しさん
垢版 |
2019/05/22(水) 17:02:58.86ID:x0vcQb3n
確かにpy3になってlist(hoge)することが多くなった
もう少し柔軟に暗黙の変換してくれてもいいのに
0906デフォルトの名無しさん
垢版 |
2019/05/23(木) 11:12:54.31ID:IyFdHRzG
Pythonはスリザリンの陰謀だからな
つまりそれはあの人を彷彿とさせるのであって邪悪なんだよ
0909デフォルトの名無しさん
垢版 |
2019/06/03(月) 12:13:42.21ID:ZJy6OnVg
大腸ですね判ります
0911デフォルトの名無しさん
垢版 |
2019/06/14(金) 12:13:07.84ID:6tPeY5qE
>>910
>自分が知っている範囲では、他のメジャーな言語でこれほどコロンを多用する言語はない。
BASIC でマルチステートメント使わないのかな?
0912デフォルトの名無しさん
垢版 |
2019/06/14(金) 12:15:39.40ID:bpAwmG5b
私は馬鹿ですって言ってるようなもの

●コロン忘れる←セミコロン行末に書く言語のことを忘れてるだけじゃね
●Scheme/Rubyと比べて値返し←Cも知らんのかこいつ&PythonはPerlの悪弊から逃れられたのにRubyの悪弊持ち込んでどうする?
0913デフォルトの名無しさん
垢版 |
2019/06/14(金) 17:23:09.20ID:AQvHkPsD
>自分が知っている範囲では、他のメジャーな言語でこれほどコロンを多用する言語はない。

せやな…   C++

> Pythonでは、関数が返す値には明示的に「return」を付ける必要があるのだ。

せやな…   PowerShell
レス数が900を超えています。1000を超えると表示できなくなるよ。

ニューススポーツなんでも実況