並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 17 件 / 17件

新着順 人気順

atsuoishimotoの検索結果1 - 17 件 / 17件

  • 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
    • Python 3.8 の概要 (その5) - デバッグ用 f文字列フォーマット - atsuoishimoto's diary

      Python3.8の新機能で、これ一番好きかも。このためだけにPython3.8必須にしてもいい。 通常、 f文字列 に変数名や式を指定すると、その値が文字列に埋め込まれます。 >>> foo, bar = 10, 20 >>> print(f'value is {foo+bar}') value is 30 便利な機能ですが、デバッグ用にデータを出力するときには、ちょっと面倒です。たとえば foo と bar の値を確認するときは、確認したい変数名のテキストと、表示したい式を別々に書く必要があります。 >>> print(f'foo={foo} bar={bar} foo+bar={foo+bar}') foo=10 bar=20 foo+bar=30 そこで、f文字列に出力指定方法が追加され、出力したい式に続けて = を指定すると、その式と式の値の両方が文字列に埋め込まれるようになりま

        Python 3.8 の概要 (その5) - デバッグ用 f文字列フォーマット - atsuoishimoto's diary
      • Python 3.8 の概要 (その3) - Pickle protocol 5 with out-of-band data - atsuoishimoto's diary

        Pythonでは、複雑なデータの交換や保管する場合、よく Pickleモジュール が使われます。Pickleはデータを外部に出力可能な形式に変換してファイルに変換したり、サーバと通信して送信したりします。 Pythonのconcurrent.futures や multiprocessing を使って並列処理を行う場合も、プロセス間のデータ交換に Pickle が使われています。 PEP-574 Pickle protocol 5 with out-of-band data Pickleは汎用的なデータフォーマットを定義していて、データを作成したハードウェアと異なるアーキテクチャのハード上で読み込んでも、ただしく元のデータを再現できるようになっています。 しかし、現在ではPickleの使い方は多様化しており、そういった汎用的なデータフォーマットだけでは効率的にデータの転送や保管を行えないこ

          Python 3.8 の概要 (その3) - Pickle protocol 5 with out-of-band data - atsuoishimoto's diary
        • Python 3.8 の概要 (その2) - Positional-only parameters - atsuoishimoto's diary

          Python 3.0 以降では、関数を定義するときに、キーワード専用引数 を指定できるようになりました。 def func(a, b, *, c=1, d=2): return a+b+c+d こんなのですね。引数のリストに * がある関数を呼び出すとき、* の後ろにある引数の値は、かならずキーワード引数として指定しなければいけません。 ↑の関数だと、引数 c はキーワード引数で指定すればちゃんと動きます。 >>> func(1, 2, c=10) 15 しかし、キーワードなしで呼び出すとエラーになります。 >>> func(1, 2, 10) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: func() takes 2 positional arguments but 3

            Python 3.8 の概要 (その2) - Positional-only parameters - atsuoishimoto's diary
          • iPad Proでラフな絵を書きたい - atsuoishimoto's diary

            絵と言ってもイラストっぽいやつではなく、技術書などに出てくるような、主に線と四角形と若干のテキストで構成されてるようなやつを、さくっと手書きで書きたい。こんなのだ。 ちょっと長めの英単語や文章が入ることもあるので、そういった部分はキーボードで入力してテキストボックスで配置したい。 現在、こういった絵を書くときには、Notability を使っている。機能的にはこれで十分だし、もっと本格的なお絵かきツールの Procreate なども持っているが、自分にはNotabilityがあっているようだ。 とはいえ、Notabilityも本質的にはメモ取りアプリ。お絵かき機能はさほど高くない。Procreateでは高機能すぎて使い方がわからないし、起動も重たい。Notabilityよりは高機能で、それほど重たくない、そんな好都合なアプリはないだろうか?ということで、ちょっと探してみた。 GoodNot

              iPad Proでラフな絵を書きたい - atsuoishimoto's diary
            • Python 3.8 の概要 (その6) - 拡張モジュール関連 - atsuoishimoto's diary

              拡張モジュールがリリースビルド/デバッグビルドで共用可能に これまで、デバッグ用にビルドされたPythonでは、Pythonのメモリ使用状況を調査するための機能 が有効になっていました。このため、リリース用にビルドされたPythonとデバッグ用にリリースされたPythonでは、内部のデータ構造が一部異なっており、拡張モジュールのバイナリもリリースビルド用とデバッグビルド用を別々に作成する必要がありました。 Python3.8のデバッグビルドではこの機能がオフになり、リリースビルド用の拡張モジュールをデバッグビルドでも利用できるようになりました。これまで、デバッグビルドのPythonで調査するときには使用する拡張モジュールもすべてデバッグビルド用に再構築していましたが、この作業が不要になりました。 拡張モジュールが共有ライブラリ版とスタティック版で共用可能に Pythonの構築方法には、Py

                Python 3.8 の概要 (その6) - 拡張モジュール関連 - atsuoishimoto's diary
              • Python 3.8 の概要 (その7) - ちょっと便利そうな機能追加 - atsuoishimoto's diary

                math.prod() リストなどのイテレータの要素の積を計算する math.prod() が追加されました。 sum() の掛け算版ですね。 >>> import math >>> math.prod([1,2,3,4]) 24 正規表現が \N{名前} 記法をサポート reモジュールで、正規表現に文字の名前を指定する \N{名前} を使えるようになりました。 >>> re.match(r'\N{LATIN SMALL LETTER A}', 'a') <re.Match object; span=(0, 1), match='a'> >>> re.match(r'\N{GRINNING FACE WITH SMILING EYES}', '😁') <re.Match object; span=(0, 1), match='😁'> 文字の名前は、unicodedata.name()

                  Python 3.8 の概要 (その7) - ちょっと便利そうな機能追加 - atsuoishimoto's diary
                • Python 3.8 の概要 (その8) - Did you mean "=="? - atsuoishimoto's diary

                  さて、質問です。 a = 1.0 a is 1.0 上記の処理で、a is 1.0 の結果は True となるでしょうか、それとも False となるでしょうか? True と答えたあなた、不正解です。反省してください。 False と答えたあなた、同じく不正解です。猛省してください。 正解は 「わからない」 です。 Pythonインタープリタを起動して、対話的に実行してみましょう。 >>> a = 1.0 >>> a is 1.0 False False ですね。a に代入した float オブジェクトと、a is 1.0 で比較している float オブジェクトは、同じ値ですが異なるオブジェクトです。 でも、ちょっと書き換えて、同じ処理を関数の中で実行するとどうでしょう? >>> def test(): ... a = 1.0 ... return a is 1.0 ... >>> t

                    Python 3.8 の概要 (その8) - Did you mean "=="? - atsuoishimoto's diary
                  • PythonでWebアプリ開発をはじめるなら!Web+DB Pressに「UXの高いチュートリアル」を目指してDjangoの特集を寄稿しました - Make組ブログ

                    WEB+DB PRESS Vol. 122に「新バージョン登場! PythonによるWeb開発の基本 - はじめてのDjango」という記事を寄稿しました。 PythonでWebアプリケーションの開発を初めたい人に向けて「初めてがこれで良かった」と思えるように内容をまとめました。 4月24日(土曜日)に発売されます!予約はもう開始していますし、お店によっては先行販売されているそうです。こちらから購入いただけます: gihyo.jp 本特集に誤りがありました。正誤表はこちらをご確認ください サポートページ:WEB+DB PRESS Vol.122:|gihyo.jp … 技術評論社 どんな人に読んでほしいか 4月の特集というのもあって、これから社会人になる人は特に読んでほしいです。 前提としてPythonとUbuntu(Linux)の基本だけ知っている必要がありますが、なるべく幅広い人に読ん

                      PythonでWebアプリ開発をはじめるなら!Web+DB Pressに「UXの高いチュートリアル」を目指してDjangoの特集を寄稿しました - Make組ブログ
                    • Python 3.8 の概要 (その4) - multiprocessing.shared_memory モジュール - atsuoishimoto's diary

                      multiprocessing.shared_memory モジュールで、共有メモリを使ってプロセス間でデータを交換できるようになりました。似たような処理は mmap モジュールで実現できましたが、マルチプラットフォームで簡単に利用できるようになります。 Numpyの ndarray オブジェクトを複数のプロセスで共有する場合、まず最初のプロセスで次のように共有メモリを作成します。この例では、共有メモリの名前は "sharedmemory_test1" とします。 import math from multiprocessing import shared_memory import numpy as np SHAPE = (3,3) # 共有メモリ "sharedmemory_test1" を作成 size = math.prod(SHAPE) * numpy.dtype("float"

                        Python 3.8 の概要 (その4) - multiprocessing.shared_memory モジュール - atsuoishimoto's diary
                      • python2_eol.pdf

                        Python 2 EOL Party in Tokyo キーノートスピーチ (https://python2.connpass.com/event/161403/) 199x年代のPythonとこれから

                          python2_eol.pdf
                        • Python2.xのEoLとFinal Releaseは違うという学びを得た|Peacock(くじゃく)

                          Thanks to: 某Slackの方々& atsuoishimoto さん tl;drEoL(公式サポート)とFinal Release(最終版)は違う Python2.x延命Slackの #random に貼られました。 https://news.mynavi.jp/article/20191223-943988/ 延命だ!ってなったのですが、 [suyamar 17:12] なるほど。 > Being the last of the 2.x series, 2.7 will receive bugfix support until 2020. Support officially stops January 1 2020, but the final release will occur after that date. > 2.7.18 code freeze January, 2

                            Python2.xのEoLとFinal Releaseは違うという学びを得た|Peacock(くじゃく)
                          • Pythonのタイムゾーンはpytzよりzoneinfoかdateutils.tzを使おう、という話

                            Python3.9では zoneinfoモジュールが追加され、標準ライブラリだけでタイムゾーンを使えるようになりました。 私もまだ使ったことはないのに無責任に勧めてしまいますが、今後の新しいプロジェクトでタイムゾーンを使うときは zoneinfo を使いましょう。しかし、Python3.8以前を利用しているプロジェクトでは、いまだに pytz を使っている場合も多いのではないでしょうか? pytz以外にも、dateutilsパッケージのdateutil.tz もタイムゾーン機能を提供しており、pytz よりもこちらのほうがおすすめです。 pytzの困ったところその1 Python3.6以降では、夏時間によって発生する曖昧な時刻の問題に対処するため、PEP 495 -- Local Time Disambiguation が導入されました。 夏時間を採用している地域では一日に同じ時間が2回発

                              Pythonのタイムゾーンはpytzよりzoneinfoかdateutils.tzを使おう、という話
                            • Software Designの原稿をJupyter NotebookとiPad Proで書いた話 - atsuoishimoto's diary

                              雑誌 Software Designさんから執筆依頼を頂いた。「Visual Studio Code の Jupyter Notebook実行機能を使ってPythonのテキスト処理などを学べる記事を」ということで、得意なテーマだしスケジュールに余裕のある時期でもあったので、けっこう気軽に引き受けさせていただいた。 この記事は、プログラミング初心者が雑誌を見ながらコードを一文字づつJupyter Notebookに写経して実行する、という読み方を念頭に執筆した。なので、文章を読みながら出てきたコードを入力し、Shift+Enter で実行できるように留意している。そこで、記事文章もJupyter NotebookのMarkdownセルで執筆し、解説とコードと実行結果をすべて Jupter Notebookだけで管理してみた。 せっかくVSCodeとJupyter NotebookをPytho

                                Software Designの原稿をJupyter NotebookとiPad Proで書いた話 - atsuoishimoto's diary
                              • Github Profileの設定 - Atsuo Ishimoto's blog

                                Github Profileの設定 GithubのProfile画面 に自分の好きなREADME.mdファイルを表示できる、という話を見かけて、試してしました。ちょっと前に試したときには、自分のアカウントではこの機能を使えなかったようですが、いつの間にか使えるようになっていました。 Githubで自分のアカウント名と同じ名前のリポジトリ(私の場合なら atsuoishimoto) を作成し、つぎのように表示されれば機能が有効になっているようです。 README.txtの生成 作成したリポジトリに README.md という名前のマークダウンでプロファイルを作成すれば、そのまま自分のプロファイル画面に表示されます。 単に README.md を書いておくのも芸がない話なので、定期的にこのブログのRSSを取得し、プロファイルに表示するようにしてみました。 生成には、SSGにこのサイトや pyt

                                  Github Profileの設定 - Atsuo Ishimoto's blog
                                • Python で高速化したいなら Python を書いてはいけない - Qiita

                                  はじめに 職場で Python に関するライトニングトークをすることになったので、資料をかねて 5 分程度で読めるものを書いてみます。 トークテーマは「Python で高速化を試みる上での心得」です。 Pythonをディスる記事ではないです。 この記事の対象者 この記事は下記の人を対象としています。 Python 初学者 Python に興味あるけど、速度でないらしいしなぁ、と考えている人 早速結論 タイトルにあるとおり、Python で高速化したいなら(出来る限り)Python を書いてはいけません。 Python を書く量を減らして処理速度を上げようと言うのがこの記事の主旨です。 そもそも Python は遅い さて、早速ですが C++や Java などと比べるとPython は遅い言語です。 Python の遅さに関しては以下のような様々な記事で言及されています。 なぜ Python

                                    Python で高速化したいなら Python を書いてはいけない - Qiita
                                  • 今週のはてなブログランキング〔2019年9月第1週〕 - 週刊はてなブログ

                                    はてなブックマーク数による人気記事のランキング。9月1日(日)から9月7日(土)〔2019年9月第1週〕のトップ30です*1。 # タイトル/著者とブックマーク 1 2019年のエンジニア新人研修の講義資料を公開しました - Cybozu Inside Out サイボウズエンジニアのブログ by id:cybozuinsideout 2 ずっと夜で - megamouthの葬列 by id:megamouth 3 なぜガイルはアメリカ人に絶大な人気があるのか - 歴ログ -世界史専門ブログ- by id:titioya 4 個人開発したWebサービスをリリースした後にやったこと / やり続けていること - くらげになりたい。 by id:wannabe-jellyfish 5 【2019年版】バックエンドエンジニアが React でモダンなフロントエンド開発を始めるまで - Feedfor

                                      今週のはてなブログランキング〔2019年9月第1週〕 - 週刊はてなブログ
                                    1