タグ

pythonに関するtsekineのブックマーク (29)

  • Logging in Python like a PRO 🐍🌴

    Beyond exception handling, there's something else I see people struggling with, which is logging. Most people don't know what to log, so they decide to log anything thinking it might be better than nothing, and end up creating just noise. Noise is a piece of information that doesn't help you or your team understand what's going on or resolving a problem. Furthermore, I feel people are uncertain ab

    Logging in Python like a PRO 🐍🌴
  • Python standard library changes in recent years

    With each major Python release, all the attention goes to the new language features: the walrus operator, dictionary merging, pattern matching. There is also a lot of writing about asyncio and typing modules — they are developing rapidly and are obviously important for the core team. The rest of the standard library modules receive undeservedly little attention. I want to fix this and tell you abo

    Python standard library changes in recent years
  • Pythonは_(アンダースコア)の使い方を理解するだけでプロフェッショナルになれる - Qiita

    自己紹介 普段私は、 一番得意な機械学習(深層学習)をしたり、 Python/Django でWebアプリを開発したり、 TypeScript/Vue or Reactフロントエンドの開発をしたり、 PHP/Laravel でWebアプリを開発したり、 さまざまなことを行っています。 趣味で休みの日にGo言語で色々作成しているのですが、型のある世界は素敵だなと昨今感じています。 今最もやりたいことは、Goで大規模なWebアプリケーションを作成したい。 企業案件やご連絡等ございましたらお気軽に下記よりご連絡いただければと思います。 nagamatsu-k@dym.jp 第3次AIブームの到来 米Google DeepMindが開発した人工知能AI)の囲碁プログラム「AlphaGo」が世界トップレベルの実力を持つ韓国のプロ棋士、李世ドル(イ・セドル)九段に4勝1敗と大きく勝ち越したことが

    Pythonは_(アンダースコア)の使い方を理解するだけでプロフェッショナルになれる - Qiita
    tsekine
    tsekine 2021/07/21
    「Return値を無視」は不正確。_は人間とlinter用であって、interpreterとしては特別な意味はないので、「メモリの占用をしないまま廃棄」が△。参照のない変数に対する最適化があれば合ってるけど_が特別なのではない
  • Python3.7以上のデータ格納はdataclassを活用しよう - Qiita

    はじめに Pythonでデータを格納する際に辞書や普通のクラスを使っていませんか?Python3.7からはデータ格納に便利なdataclassデコレータが用意されています。 この記事では公式ドキュメントやPEP557の説明ではいまいち掴めない、どういった時に便利で、なぜ使うべきなのかという点に触れつつ、使い方を説明していきます。 なお、以前のバージョンではPython3.6に限りpip install dataclassesによって使えるようになります。執筆時点ではGoogle Colaboratoryの環境がPython3.6.9ですが、デフォルトでdataclassesがインストールされています。 想定読者 dataclassの存在を知ったが何なのかよく分からない人 可読性高くデータを扱いたい人 「前はこんな機能なかったし、自分は別に使わなくて良いよ・・・」と思っている人 よく見かける

    Python3.7以上のデータ格納はdataclassを活用しよう - Qiita
    tsekine
    tsekine 2020/12/19
    ほぼ同意。namedtupleとfrozendict使ってる人はdataclassに移行したらいいと思う。
  • Pythonのオブジェクト指向プログラミングを完全理解 - Qiita

    1. オブジェクト指向の起源 2003年チューリング賞の受賞者アラン・ケイさんはよくオブジェクト指向プログラミングの父と称されます。ご人も憚ることなく、幾度、公の場で発明権を宣言しています。しかし、ケイさんは「C++」や「Java」などの現代のオブジェクト指向言語を蔑ろにしています。これらの言語は「Simula 67」という言語を受け継いだもので、私が作った「Smalltalk」と関係ないのだとケイさんは考えています。 オブジェクト指向という名称は確かにアラン・ケイさんに由来するものです。しかし、C++Javaで使われている現代のオブジェクト指向は当初のと結構違います。ケイさん自身もこれらの言語を後継者として認めないです。では、ケイさん曰くC++Javaの親であるSimula 67という言語はどんな言語でしょうか。ここで、簡単なサンプルコードを見てみましょう。 Class Recta

    Pythonのオブジェクト指向プログラミングを完全理解 - Qiita
    tsekine
    tsekine 2020/11/02
    ある程度知ってる人が、理解を深めるために読む記事。
  • Python 3.8 の概要 (その1) - Assignment expressions - atsuoishimoto's diary

    古来、Pythonでは「代入は文であるべき!」と一貫して主張してきました。 C言語などでは、代入は足し算や掛け算と同じ、値を計算する「式」で、たとえば a = (b=100) / 2; と書くと、b には 100 を代入し、a に 100/2=50 を代入します。1+1 は 2 という値になる 式 ですが、b=100 も同様に値が 100 となる 式 なのです。 Pythonでは、代入は式ではないので、こういう書き方はできません。 Pythonの代入は、足し算などの演算子の仲間ではなく、if や for のような制御文の仲間で、あまり自由な書き方は出来ないのです。 Python FAQ では、その理由として Python の式中での代入を許さない理由は、この構造によって起こる、他の言語ではありがちで見つけづらいバグです: if (x = 0) { // error handling } e

    Python 3.8 の概要 (その1) - Assignment expressions - atsuoishimoto's diary
    tsekine
    tsekine 2019/09/03
    これが機能的に便利なのは百も承知で入れてこなかったはずなのに。
  • Pythonのリスト内包表記はチューリング完全だから純LISPだって実装できる - Qiita

    まえがき Pythonにはリストに対する操作をさっと書ける、リスト内包表記というものが存在します。こんなやつです: >>> [2*n for n in range(5)] [0, 2, 4, 6, 8] # 等価なfor文 >>> lis = [] >>> for n in range(5): ... lis.append(2*n) ... >>> lis [0, 2, 4, 6, 8] ところでこのリスト内包表記、チューリング完全だって知ってましたか? こちらの記事でそのことが示されています。 リスト内包表記の活用と悪用 by @KTakahiro1729 あああっ! 開かれるPythonワンライナー&難読化の世界!! ステキすぎる!!! 超カッコいい!!!! ……でも、われわれはbrainfxxkだけで満足していてよいのでしょうか。ぼくは、もっと抽象的で、カッコよくて、とっても使いやす

    Pythonのリスト内包表記はチューリング完全だから純LISPだって実装できる - Qiita
    tsekine
    tsekine 2018/03/28
    世の中には頭おかしい(褒め言葉)人が溢れてる
  • Python3で巨大な浮動小数計算の結果が変だったので理由を調べてみた - paiza times

    Photo by Jacob Munk-Stander 秋山です。 タイトルのとおり、Python3で巨大な浮動小数計算をした時の計算結果についての話です。 例えば、 11 × ÷ 10 という計算式があったとしましょう。 普通に人力で単純に計算しようと思ったら、10の23乗を計算して、それから11を掛けて…という手順になるかと思いますが、10の23乗の時点で 100000000000000000000000 という大きな数になってしまい(ちなみに千垓です。垓は万・億・兆・京の次になります)非常にわかりづらいですね。 これぐらいの桁数の数になってくると、プログラミングでもいわゆる32bitの整数型では表現することができません。64bit整数でも足りないので、128bit整数でやっと表現できるようになります。 私は普段paizaのスキルチェック問題の制作を担当していて、自分でもいろいろな問題

    Python3で巨大な浮動小数計算の結果が変だったので理由を調べてみた - paiza times
    tsekine
    tsekine 2017/08/02
    “「/」演算子を使用した場合の、間違っている計算結果” この表現に超絶違和感。これ、定義されている誤差の範囲内の浮動小数点数なので、間違ってないよ。「間違っている」のは書いた人。
  • 【一覧付き】初心者は意外と知らない?便利な関数たち(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
    tsekine
    tsekine 2017/03/28
    all() とか any() とか便利だけど、本当に組み込み関数である必要があるのか感はある。
  • Pythonコードからコマンドラインインターフェイスを自動生成するツール『Python Fire』を試してみた | DevelopersIO

    先日、Googleから『Python Fire』なるものが発表されました。関連記事によると『Pythonコードからコマンドラインインターフェイスを自動生成するツール』なのだそうです。ざっと見た感じ利用のハードルも低く、すぐに使えそうなものでしたので早速試してみました。 Google Open Source Blog: Introducing Python Fire, a library for automatically generating command line interfaces Python Fireの導入 Python Fireの導入方法及び使い方については下記GitHubの情報にまとまっています。こちらを参考にしながら進めて行きます。 GitHub - google/python-fire: Python Fire is a library for automaticall

    Pythonコードからコマンドラインインターフェイスを自動生成するツール『Python Fire』を試してみた | DevelopersIO
    tsekine
    tsekine 2017/03/08
     “--completion” は bash 用のコマンドライン補完 (command line completion) です。見た感じ -o bashdefault 欲しい。
  • ruby でこう書くのは、python ならこう書く、のメモ - Qiita

    ruby に慣れていて python に慣れていないんだけど、python を書く機会が増えてきたので備忘録のような感じで。 python は完全に初心者。 python 3。python 2.x のことは気にしないことにした。 手元の処理系 ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-darwin16] Python 3.5.2 :: Anaconda 4.2.0 (x86_64) で確認している 長さ ary_len = [1,2,3].size # [1,2,3].length でもいい hash_len = {a:1}.size # {a:1}.length でもいい string_len = "hoge".size # "hoge".length でもいい range_len = (1..9).size # Range#len

    ruby でこう書くのは、python ならこう書く、のメモ - Qiita
    tsekine
    tsekine 2017/03/07
    思想の違いがよく分かる
  • 覚えるだけでPythonのコードが少し綺麗になる頻出イディオム - タオルケット体操

    まえがき 今年の春から今まで、2年ぶりにPythonを沢山書いているわけなんですが、JavaScriptのクソに頭をやられて久しぶり書くだけあって基的なところから色々と頭から抜け落ちていたわけです。 そんで何か思い出すたびに会社のwikiを使ってメモっていたのですが、せっかくなので少々訂正をしてブログにも書きます。 また、弊社はPython2を使っているので、2が前提の記述になっているところがいくつかあります。なるべくフォローしていますが、参考にする場合は自分が使っているバージョンを確認することをおすすめします。 また、今から新しくPythonプロジェクトを始めようと思っている人は3系を使いましょう。 知ってる人は当然知ってる、でも結構長いことPythonを書いてても知らなかったりするような小技を載っけました。 なお、メタプログラミングとかの黒魔術っぽい記事のまとめはこちら: hach

    tsekine
    tsekine 2016/11/04
    s/Pythoniac/Pythonic/ 推奨。Pythoniac だと Python マニアみたいで、むしろネガティブに聞こえる。
  • CPython の Core Developer になりました - methaneのブログ

    Python 3.6 に取り込まれた dict の新実装などでコアコミッターに興味を持ってもらい、 Core Developer (要するにコミッター) に推薦しようか?という提案をもらいました。 最初はコミッターとか面倒そうだし、コミットメッセージとかNEWSエントリー(通常パッチをコミットするときにコミッターが書く)とかを英語で書くのも英語が得意な人がやったほうがいいだろうし、とりあえず github に移行するまでは様子見しておこうと思ってたのですが、 dict 関係のパッチがいくつもレビュー待ちでなかなかコミットされないのを見て「やっぱりアクティブなコミッターが全然足りてない」と考え直し、志願することに。 で、先月末にコミット権をもらった(というか push できる権限を持った hg アカウントに ssh 鍵を登録してもらった)のですが、新米コミッターは簡単なパッチでも他のコアコミ

    CPython の Core Developer になりました - methaneのブログ
  • Python 3.6 の(個人的に)注目の変更点 - methaneのブログ

    Python 3.6b1 がリリースされましたね。(フライング) beta1 ということで、 3.6 に向けた新機能の追加は (provisional package を除いて) 終了です。ただし、仕様が確定したと言うわけではなくて、beta版に対するフィードバックを元に新機能を修正したり、最悪 revert して 3.7 に持ち越しにされる可能性もあります。 なお、 3.6b1 が出る前の1週間が core dev sprint があり、そこでめちゃくちゃ大量に大きめの変更が入りました。なので、常用環境には全くオススメできませんが、OSS開発者だったら .travis.yml に python: "nightly" を追加してリグレッションの発見に貢献したり(←これめっちゃ有り難いです)、それ以外の人も 3.6 を試してみて早めにフィードバックをしてもらえると、年末の 3.6 がより完成

    Python 3.6 の(個人的に)注目の変更点 - methaneのブログ
    tsekine
    tsekine 2016/09/13
    “「順序を維持してくれたほうが(ログが見やすくなったりとかで)使い勝手いいけど、必須ではない」というところだけ dict の挿入順維持に頼って” ユニットテストには便利…だけど実装依存のテストはイカンよ〜
  • Python のリファクタリングでイケてないコードを別に美しいオブジェクト指向設計ではない普通のコードにする方法 - Qiita

    Rubyのリファクタリングでイケてないコードを美しいオブジェクト指向設計のコードへ改良するための方法 - その1 その2 その3 これを Python でやってみます 元のコード 元の Ruby 版をできるだけ真似してみます。テストは py.test を使います。 #ordersreport.py from collections import namedtuple Order = namedtuple("Order", "amount placed_at") class OrdersReport: def __init__(self, orders, start_date, end_date): self.orders = orders self.start_date = start_date self.end_date = end_date def total_sales_within

    Python のリファクタリングでイケてないコードを別に美しいオブジェクト指向設計ではない普通のコードにする方法 - Qiita
    tsekine
    tsekine 2016/07/21
    「Python != Java, なんでも class にしない」はよく言われる話。'in' オペレーターは便利なので、納得のリファクタリング。Ruby どうこうに関係なく、とてもPythonらしさが現れてる超良記事。namedtuple万歳 :)
  • Pythonのオブジェクトとクラスのビジュアルガイド – 全てがオブジェクトであるということ | POSTD

    Python開発者が大好きな言葉があります。それは”全てはオブジェクトである”です。実際、私自身もPythonのクラスを教えているときに何度も口にしています。多くの人が何度も聞いた言葉かもしれないのですが、私が言う度に生徒は賛同の相槌をしてくれます。結局のところ、Javaにおいて全ては(対象がそうでない場合を除いて)オブジェクトであり、.NETにおいても全てはオブジェクトであると、よく言われています。 しかしPythonにおいて全てがオブジェクトであると言う時、(私の生徒は驚いていましたが)「 全て 」にはクラスも含まれているのです。これはとても筋が通っていて、オブジェクトシステム全体が理解しやすくなります。しかしそれでも、広い視野で物事を見ることは難しいのです。 今回のブログ記事では、Pythonのオブジェクト間のつながりをざっと見ていきたいと思います。そして”全てはオブジェクトである”

    Pythonのオブジェクトとクラスのビジュアルガイド – 全てがオブジェクトであるということ | POSTD
    tsekine
    tsekine 2015/11/25
    これはいい説明
  • 指定時間内に関数が終了しなかったら何かするデコレータ - Qiita

    昨日投稿したTipsの改良版です。通知する部分をハンドラ関数を渡すようにして分離し任意の処理を行えるようにしました。 また、@methaneさんに教えていただいた functools.wrap を使ってみました。このデコレータがついた関数をpaverの@taskにもしてみたのですがヘルプがNoneとなり docstring が表示されなかったのはこれを使っていなかったからのようでした!(functools.wrapを使うとヘルプにdocstringが表示されました) from functools import wraps def on_timeout(limit, handler, hint=None): ''' 指定した実行時間に終了しなかった場合、handlerをhint/limitを引数にして呼び出します @on_timeout(limit=3600, handler=notify_

    指定時間内に関数が終了しなかったら何かするデコレータ - Qiita
    tsekine
    tsekine 2015/04/18
    デコレーター書く人には functools.wraps 必須。
  • Python 2.7.x と 3.x の決定的な違いを例とともに | POSTD

    Pythonを始めたばかりのユーザーの多くが、どちらのバージョンを使えばいいのか迷っています。私の答えは、「気に入ったチュートリアルに書かれているバージョンにしましょう。そして、あとで違いを調べてください」という言葉につきます。 それでは、新しいプロジェクトを始めるときにはどちらを選べばいいのでしょうか? 使おうとしているライブラリを全てサポートしているなら、2.7.x系と3.x系のどちらを使ってもよいでしょう。そうはいっても、この2つのメジャーバージョンについて大きな違いを見ておくのは良いでしょう。どちらかのみでコードを書いたり、プロジェクトに使おうとしている時によくある落とし穴を避けられるからです。 __future__ モジュール Python 3.x で導入されていて Python 2 で使えないキーワードについては、 __furute__ モジュールをインポートすることで Pyt

    Python 2.7.x と 3.x の決定的な違いを例とともに | POSTD
  • スレッドを使うプログラムが Ctrl-C で止まらない件 - methaneのブログ

    常識かと思ってたけど、、、 while True: thread.join(0.5) join() メソッドを呼ぶときに、タイムアウトを設定して、ループする。こうすると、KeyboardInterruptを受け取れる。

    スレッドを使うプログラムが Ctrl-C で止まらない件 - methaneのブログ
  • 一歩上行くPythonistaが読むべきコード | TRIVIAL TECHNOLOGIES 4 @ats のイクメン日記

    みんなのIoT/みんなのPythonの著者。二子玉近く160平米の庭付き一戸建てに嫁/息子/娘/わんこと暮らしてます。月間1000万PV/150万UUのWebサービス運営中。 みんなのブロックチェーンは,ブロックチェーンの入門書。暗号やハッシュなどを含め,基礎からブロックチェーンの仕組みを学べる書籍です。 いろんな方に「新しい技術を学ぶことの楽しさ」を感じ取ってくれたら著者として嬉しいです:-)。お金技術的にどのように定義されるのか。 みんなのIoTは,モノのインターネットと呼ばれるIoTの入門書です。IoTの基について,読者に寄り添って優しく解説しました。裏テーマは一番とっつきやすいPython入門書。サポートページはこちら みんなのPython 第四版は,より分かりやすい入門書を目指し,機械学習やデータサイエンスの章も追加して第三版を大幅に書き換えました。Python 3.6にも華