タグ

Pythonに関するagricolaのブックマーク (50)

  • シェルスクリプトとの対比で理解するPythonのsubprocess - 朝日ネット 技術者ブログ

    はじめに 開発部の ikasat です。 皆さんは git, ssh, rsync のような外部コマンドを呼び出すスクリプトを書きたくなったことはありますか? 個人的にこの類のスクリプトは最初はシェルスクリプトとして書くのですが、改修を重ねるうちに肥大化して処理も複雑になり、 後から Python のような汎用プログラミング言語で書き直すことがよくあります。 外部コマンド呼び出しを書き直す際に、Git 操作のために pygit2、 SSH 接続のために paramiko のようなライブラリをわざわざ使うのは大がかりだったり、 rsync に相当するようなこなれたライブラリが存在しなかったりする場合があります。 そのような時は標準ライブラリの subprocess モジュールを利用し、Python から外部コマンドを呼び出すことになるでしょう。 しかしながら、Python のチュートリアルペ

    シェルスクリプトとの対比で理解するPythonのsubprocess - 朝日ネット 技術者ブログ
    agricola
    agricola 2023/10/16
    新しいのは面倒くさいのでレガシーな関数を使うこともよくあるという……
  • Pythonがグローバルインタプリタロックの解消へ、マルチスレッド処理の高速化実現

    Python Software Foundationのステアリングカウンシル(Steering Council)は、Pythonのグローバルインタプリタロック(Global Interpreter Lock)を解消する方向で開発を進めていくことを明らかにしました。 グローバルインタプリタロックとは? グローバルインタプリタロックとは、その名前が示すとおりインタープリタ全体で1つのロックを持つことです。 これによりシングルスレッドのプログラムにおいては細かなロック制御が不要となって速度の向上がはかれる一方、マルチスレッドの平行性は制限されるという欠点があります。 また、スレッドセーフではないC言語などによるライブラリとの結合が容易となっています。 Pythonの標準実装であるCPythonでは、以前からグローバルインタプリタロックが採用されていました。 グローバルインタプリタロックを解消する

    Pythonがグローバルインタプリタロックの解消へ、マルチスレッド処理の高速化実現
    agricola
    agricola 2023/08/03
    CPUを食う処理をPure Pythonで実装した上でマルチスレッドで高速化したい好事家がどれほどいるかというと……。↓共有メモリ型並列処理(マルチスレッド)はキャッシュが効きにくいしなぁ。
  • [解決!Python]変数の値をインクリメント/デクリメントするには

    # 代入文/累算代入文 x = 100 x += 1  # インクリメント(累算代入文) print(f'{x=}')  # x=101 x = x + 1  # インクリメント(代入文) print(f'{x=}')  # x=102 x = x - 1  # デクリメント(代入文) print(f'{x=}')  # x=101 x -= 1  # デクリメント(累算代入文) print(f'{x=}')  # x=100 # 指定した範囲を1ずつインクリメント/デクリメント result = '' for x in range(5): result += f'{x} '  # xの値は0、1、2、3、4と1ずつインクリメントされる print(result)  # 0 1 2 3 4 result = '' for x in range(5, 10):  # 5~9の範囲の整数を順に

    [解決!Python]変数の値をインクリメント/デクリメントするには
    agricola
    agricola 2023/02/23
    x=x+1って、x+1の値を持つ新しい整数オブジェクトが作成されて名前xに結合される一方、元の値は参照カウントが減ってゼロになったらガベコレ行き、でしょ?非効率だから避けるべき書き方では?
  • PyPI In a box: Using a Raspberry Pi as a portable PyPI server

    PyPI In a box: Using a Raspberry Pi as a portable PyPI server A conversation was started after in the PyCon Africa slack group after the conference discussing solutions to problems common in our communities and projects we can collaborate on and the biggest problem that came to my mind was the state of Internet connectivity in Africa. Internet access is poor in many parts of the continent and the

    PyPI In a box: Using a Raspberry Pi as a portable PyPI server
  • 細かいけど伝えたかった先輩のコードレビュー - Qiita

    はじめに 新人のころ、先輩からコードレビューを受ける際、よく耳にしたのが、 「うーん、細かいがおれならこう書くよ。まあ、間違ってはないけど」 当初は、そのありがたみがよくわからず、しぶしぶ直していましたが、 今になって、先輩の「細かいけど伝えたい」気持ちがわかったような。 先輩の指摘事項(Python例) シングルクォートか、ダブルクォートか 自分

    細かいけど伝えたかった先輩のコードレビュー - Qiita
    agricola
    agricola 2022/11/10
    「文字列リテラルは二重引用符!」と考えた結果、二重引用符を含む文字列リテラルでバックスラッシュが乱れ飛ぶのが人間という生物ですwどちらも利点があって存在する仕様なんだから片方に統一するのは愚か。
  • VSCodeでPython書いてる人はとりあえずこれやっとけ〜 - Qiita

    はじめに Pythonはコードが汚くなりがち(個人的にそう思う) そんなPythonくんを快適に書くための設定を紹介します。 拡張機能編 ここでは Pythonを書きやすくするため の拡張機能を紹介していきます。 1. Error Lens before 「コード書いたけど、なんか波線出てるよ💦」 記述に問題があった場合、デフォルトでは波線が表示されるだけ。。。 after Error Lensくんを入れることによって 波線だけでなくエディタに直接表示される。 はい、有能〜 2. indent-rainbow before Pythonくんは インデントでスコープを認識している。 for の f から下に線が伸びてるけど、ちょっと見にくいなぁ after 色が付いてちょっと見やすくなった! 3. Trailing Space before 一見、普通に見えるコード after 末尾にある

    VSCodeでPython書いてる人はとりあえずこれやっとけ〜 - Qiita
    agricola
    agricola 2022/08/05
    VSCodiumで試してみた限りでは何かインデント強化系の拡張を入れないとbreak/continue/raise/return/passでデデントしないんじゃなかったっけ。キーワードでブロック終端を認識してdedentしないエディタは使う気になれない。
  • きれいなPythonプログラミング(パイソニックなコードを書こう)を読んでみた - Qiita

    はじめに 日頃、Pythonを使う機会があるのですが、「もう一歩詳しくなり、中級者を目指したい!」という思いから、2022/2/15に発売された書籍「きれいなPythonプログラミング ~クリーンなコードを書くための最適な方法」を読みました。 特に、第6章にある「パイソニックなコードを書こう」が非常に勉強になったので自分なりの解釈/調査結果を含めてメモを残しておきます。 ※解釈が誤っている箇所もあるかと思います。誤りがあればご指摘いただけると幸いです。 誤用の多い構文 Python以外の言語を使ったことがある人は、その言語と同じ考え方/手法でコードを書くかもしれません。 Pythonにおける標準的なアプローチを学ぶことで時間と労力を削減することができます。 ループ処理ではrange()ではなくenumerateを使う 慣習的にrange(len())とインデックス番号でループを回すのは単純

    きれいなPythonプログラミング(パイソニックなコードを書こう)を読んでみた - Qiita
    agricola
    agricola 2022/03/24
    ↓printfがない!って、昔のPythonにはprintf的な機能しかなくて可読性低過ぎサイテーだったからf-stringとかstr.formatが導入されとるんだが。なおprintfとは縁を切れてもstrptimeとは縁を切れないのが辛い。
  • 【入門】Pythonの「for文」を徹底解説! 基本の書き方・便利な関数・Tips | AKKODiS(アコーディス)コンサルティング株式会社

    入門Pythonの「for文」を徹底解説! 基の書き方・便利な関数・Tips 公開日:2021.05.31 スキルアップ 今回は、Pythonで繰り返し処理をしたいときに便利なfor文の使い方について、1から分かりやすく解説していきます。基的な使い方を最初に説明しますので、基礎的な文法を確認しましょう。その後、組み合わせて使うと便利な関数と、for文に関連するリスト内包表記などのTips集を順番に解説していきます。Pythonの学習に、ぜひ記事の内容をお役立てください。

    【入門】Pythonの「for文」を徹底解説! 基本の書き方・便利な関数・Tips | AKKODiS(アコーディス)コンサルティング株式会社
    agricola
    agricola 2021/12/08
    Pythonのループにelseは悪い文化だと批判する人も多い。実際どういう動作なのかすぐに忘れるからな。
  • 2020 年の Python パッケージ管理ベストプラクティス - Qiita

    この記事は Python Advent Calendar 2019 の 19 日目の記事です。 🐍 あらすじ Python のパッケージ管理。特にここ数年で新しいツールが多く出たこともあり、一体何を使うべきなのか、少し調べただけでは分からないと思います。記事では、新しめの管理ツールを独断と偏見で比較します。著者は Poetry 信者なのでバイアスが掛かっているので悪しからず。 記事で書いていること Pipenv、Poetry、Pyflow の違いと使い方 記事で書いていないこと Pyenv、Venv、Virtualenv などの既存ツールの説明 著者の環境は以下の通り。 Ubuntu 18.04 Python 3.8.0 Pipenv 2018.11.26 Poetry 1.0.0 Pyflow 0.2.1 特に Poetry と Pyflow は開発途中なので、記事の内容と違う

    2020 年の Python パッケージ管理ベストプラクティス - Qiita
    agricola
    agricola 2019/12/19
    この辺がどうしようもなくぐちゃぐちゃなのがPythonの頭痛の種だよなー
  • 「1から100の偶数の和を求めるワンライナー」まとめ - Qiita

    2019年8月11日頃にTwitterで「1から100の偶数の和を求める方法」(ワンライナー)が話題になったので 各言語ごとにまとめてみました。 私の独断と偏見ですが 「2550を直接出力するもの」「公式を使って総和を計算するもの」は 除外しています。 あくまでそれぞれのプログラミング言語の特色が現れるものをまとめたいと考えています。 以前あったズンドコきよしのまとめみたいなノリです。 https://qiita.com/shunsugai@github/items/971a15461de29563bf90 編集リクエスト歓迎です。 新しいワンライナーはコメント欄ではなく編集リクエストにて追加していただけると助かります! --- 8/15 11:30 コメント欄を取り込み&新たにツイートを拾いました。 --- 発端のツイート まにゃです。 いきなり問題! ここまでのツイートを手がかりに P

    「1から100の偶数の和を求めるワンライナー」まとめ - Qiita
    agricola
    agricola 2019/08/14
    Pythonで普通に書くとつまらんから、捻ったヤツをこしらえてみよう。
  • Pythonはどうやってlen関数で長さを手にいれているの?

    Pythonには文字列やリストなど、長さをもつオブジェクトがあります。長さを手に入れるには、文字列なら、name.length ではなく len(name) のようにlen関数を使います。len関数はどうやってnameに入っているオブジェクトの長さを手に入れているのでしょうか。if文にはTrue/Falseとなる条件式を指定しますが、それだけでなく文字や数字、自分で作ったデータ型も渡せます。if文はどうやって与えられたオブジェクトがTrueなのかFalseなのかを手に入れているのでしょうか。 この発表では、Pythonのプログラムがどうやって必要な情報を手に入れているのか、また、自分で実装するときにどう実装すればlen()やif文やfor文に指定できるのかを説明します。

    Pythonはどうやってlen関数で長さを手にいれているの?
  • Python文法のチートシート風まとめ(BOKU用) - SE_BOKUのまとめノート的ブログ

    複数言語をいったりきたりするので、久々にpythonを使うと度忘れしていることがたまにあります。そんな時、カンニングペーパー(チートシート)的に一か所にまとめたものがあると助かるなと思って(自分用に)まとめてみました。 目次 (1)スタイル (2)命名規則 (3)モジュール・パッケージ・import (4)初期化 (5)内包表記とジェネレータ (6)ループ・繰り返し処理 (7)データの取り出し・並び替えなど (8)条件式と比較演算子など (9)文字列の検索・置換・正規表現 (10)クラス定義と関数の引数 (11)例外 (12)ファイル読み書き・直列化 (12)スレッド・並列処理など (13)その他もろもろ (1)スタイル 他の言語と記憶が混同しやすいものだけ、とりあえず。 項目 説明 インデント TABではなく「空白4個」を使う クラス内のメソッド定義 1行あける 各行の長さ 80文字未満

    Python文法のチートシート風まとめ(BOKU用) - SE_BOKUのまとめノート的ブログ
    agricola
    agricola 2019/05/24
    辞書dのキーと値のペアを反復するならd.items()だろ。それとPython3.7未満でd.keys()とd.values()で取り出せるキーと値の順序性は保証されていたっけか?「よく使ってない」構文だということがわかってしまったなw
  • 機械学習入門 - 基本のPythonライブラリ、9つを触って学ぶ - エンジニアHub|若手Webエンジニアのキャリアを考える!

    機械学習入門 - 基Pythonライブラリ、9つを触って学ぶ 機械学習を学ぶために、まず知っておきたいPythonライブラリを、機械学習エンジニアの「ばんくし」こと河合俊典さんに厳選し、そのエッセンスをつづってもらいました。機械学習入門に向けたスタートアップガイドです! こんにちは。機械学習エンジニアの「ばんくし」こと河合俊典(かわい・しゅんすけ/ @vaaaaanquish )です。 近年の機械学習関連の開発では、多くの場合Pythonが用いられます。 記事は、「機械学習をこれから初めてみたいけど何から始めればいいか分からない」「基のキから学びたい」という方に向けて執筆しました。プログラミング言語「Python」の中でも、特に機械学習における使用頻度の高いライブラリを厳選し、その解説を目的としています。 「この記事の内容に沿ってPythonを学習すれば、機械学習エンジニアとして入

    機械学習入門 - 基本のPythonライブラリ、9つを触って学ぶ - エンジニアHub|若手Webエンジニアのキャリアを考える!
    agricola
    agricola 2018/11/09
    Web屋がPythonなんて覚えても無意味だし、あんなブラウザの上で動かない無価値な言語を身につけて、せっかく君らのために開発されたtensorflow.jsを亡きものにしようというのか!
  • Pythonで大きなファイルのMD5チェックサムをチェックする時にMemoryErrorを回避する

    B! 12 0 0 0 Pythonで大きなファイルを扱う時に、 一気に読み込もうとしてメモリが足りずに MemoryErrorを起こしてしまった時の対処法。 Pythonでの大きなファイルのMD5チェックサム取得方法 MacでMD5チェックサム Pythonでの大きなファイルのMD5チェックサム取得方法 ファイルサイズとかキにせずにチェックサム(ハッシュ値)を取ろうとすれば、 1 2 3 import hashlib with open('test_file', 'rb') as f: checksum = hashlib.md5(f.read()).hexdigest() hashlib でmd5形式(sha1等も使える)のハッシュを作成して hexdigestメソッドを使うとこれを16進法形式で返してくれます。 ファイルを読むこむ時にはbを指定してバイナリ形式で読み込みます。 ただ、

    Pythonで大きなファイルのMD5チェックサムをチェックする時にMemoryErrorを回避する
    agricola
    agricola 2017/08/13
    threading使ってファイル読み込みとupdate()を別スレッドに分けたらどうなるんだろう。
  • ディープラーニングのための線形代数入門:一般的演算の初学者向けガイド | POSTD

    Jeremy Howardによる ディープラーニングの素晴らしいコース を受講している間、自分の前提知識がさびついてきているせいで、誤差逆伝播法のような概念が理解しにくくなっていることを認識しました。そこで、理解度を上げるべく、そうした概念に関するいくつかのWikiページをまとめてみることにしました。記事では、ディープラーニングでよく使われる線形代数演算のいくつかについて、ごく基的な事項をざっとご紹介します。 線形代数とは? ディープラーニングの文脈での線形代数とは、数の集合を同時に操作するための便利な手法を提供してくれる、数学的ツールボックスです。これらの数値を保持するためのベクトルや行列(スプレッドシート)のような構造体と、それらを加算、減算、乗算、および除算するための新しい規則を提供します。 線形代数が便利な理由 線形代数は、複雑な問題を単純で直感的に理解できる、計算効率の良い問

    ディープラーニングのための線形代数入門:一般的演算の初学者向けガイド | POSTD
    agricola
    agricola 2017/05/17
    初っぱなが酷いな。シーケンスの要素ごとの掛け算をnumpyでやったら線形代数がスゴいのか?つかfor i in range(len(x))とかPython使いが忌むべきコードの筆頭だぜ?
  • https://qiita.com/_Me_takuya/items/4fe56b2c38e5b851e90c

    agricola
    agricola 2017/03/29
    どこがパイソニックなのかと問い詰めたい。小一時間(ry ループの代わりにmap()ってpython3じゃ期待通りに動作しないの知っとるけ?
  • 【一覧付き】初心者は意外と知らない?便利な関数たち(Python3版) - paiza times

    Photo by pycon jp 秋山です。 Python3を使って開発中&勉強中の皆さん、組み込み関数はどれくらい覚えていますか?よく使うrange, input, min, max, dict……などしか覚えていないという人も多いかもしれません。 公式ドキュメントを見ると、実に68個もの組み込み関数がありました。(※ちなみに2系→3系で、あまり使われていないものはimportが必要になったり、上位機能のあるものが下位機能と統合されたり、命名変更されたりしています。例えばxrange,rangeは統合、reduceはfunctoolsへ移動…などなど。) もちろん、あまり使う機会のなさそうな特殊な関数まで覚えておく必要はありません。が、実は案外知られていないけど、使うと結構便利なものもあるのです。 というわけで今回は、意外と知られていないけど、知っていると便利ではかどると思うPytho

    【一覧付き】初心者は意外と知らない?便利な関数たち(Python3版) - paiza times
    agricola
    agricola 2017/03/27
    mapやfilterが引数に取るのはリストじゃなくてiterableだというに。allとanyもへっぽこに書かすとiterableからリスト拵えたりバカやりそうだから組み込んだんじゃない?
  • Python の map とfor内包表記(リスト内包表記)は結局どっちが速い? - 私が歌川です

    tl;dr map が遅いとされるのは関数呼び出しの差があったため 現在では(list にこだわらなければ) map は (2017/3/10 11:00追記)イテレータを生成するときは 圧倒的に速い 総合的に見ると,式のみのときはfor内包表記が速く,関数のときは map が速い様子か 追記が増えてきたので,追記部分も読んでもらえるとよさそう. はじめに 「Pythonmap とfor内包表記(リスト内包表記)は結局どっちが速い?」というのは,Python 使いなら誰しもが抱く疑問かと思われる.そういう記事もいっぱいある. そこで,今回はバイトコードと実行時間を見ることで,どちらが速いのかを検証してみた. Python2.7.12 の場合 次のようなコードを用意した.どちらも0から9までの自然数の2乗のリストを返す. 初めに逆アセンブルされたバイトコードを出力し,次に timeit

    Python の map とfor内包表記(リスト内包表記)は結局どっちが速い? - 私が歌川です
    agricola
    agricola 2017/03/10
    リスト内包表記じゃなくてジェネレータ式を使えば遅延評価されるよ?リスト内包表記と使い分けるべきはmap()ではなくジェネレータ式であると声を大にして言いたい。
  • フォーマット文字列リテラル/非同期プログラミング機能など、Python 3.6で追加された新機能をザックリ理解しよう

    連載目次 2016年12月23日にPythonの最新版であるバージョン3.6がリリースされた。稿ではその中でも特徴的な新機能を幾つか紹介していく。 Python 3.6で追加された主要な新機能 Pythonのドキュメント「What's New In Python 3.6」や、そのリリースノート(英語)にはPython 3.6で追加された機能や、変更点がまとめられている。 大まかなところを拾っていくと、構文的には以下のような機能が追加されている。 フォーマット文字列リテラル: いわゆる文字列補間 数値リテラルでのアンダースコアの使用: 「123456」を「123_567」などと記述可能 型注釈: 関数のパラメーター/戻り値の型に加えて、変数にも型注釈を付加可能に 非同期ジェネレータ: Python 3.5の非同期イテレータに加えて、非同期ジェネレータもサポートされた 非同期内包表記: 「a

    フォーマット文字列リテラル/非同期プログラミング機能など、Python 3.6で追加された新機能をザックリ理解しよう
    agricola
    agricola 2017/02/26
    むう。非同期ジェネレータの使い方が今一つピンとこないな。
  • Unicodeでは濁点や半濁点を別扱いしてることがあるので結合した - はてなの鴨澤

    PDFをテキストに変換して使うことがときどきあります。 今日処理してたPDF電子書籍の中に、テキストデータは持っているのに、なんかしらんけど検索がうまくかからないことが多い、という変なファイルがありました。ぜんぜん検索できないならまだわかるんだけど、できる検索語とできない検索語があるかんじ。 pdftotextでテキストファイルにしてみたところ、なんとこのテキストファイルが同じように検索できたりできなかったりする。さすがにちょっと不思議。 で、「が」という文字が入ってると検索がかからないのに気がついたので、「が」だけ切り出したテキストファイルを作り、ほかに普通のエディタで「が」だけ入力したテキストファイルを作って、PythonでUnicodeコードポイントを見てみました。ga.txtが検索のかからないもの、ga2.txtがかかるものです。 >>> for line in open('ga

    Unicodeでは濁点や半濁点を別扱いしてることがあるので結合した - はてなの鴨澤
    agricola
    agricola 2016/01/19
    Macで作成されたZIPファイルに入ってるファイルの名前がこれだと、Windowsのエクスプローラで展開できないという悲惨な事態を招く。