並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 10 件 / 10件

新着順 人気順

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

タグ検索の該当結果が少ないため、タイトル検索結果を表示しています。

atsuoishimotoに関するエントリは10件あります。 pythonpython3tutorial などが関連タグです。 人気エントリには 『Python 3.8 の概要 (その1) - Assignment expressions - atsuoishimoto's diary』などがあります。
  • 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 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
                    • 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
                      1

                      新着記事