PyCon JP 2020 の「Python 3.9 時代の型安全な Python の極め方」の発表資料です
タグ検索の該当結果が少ないため、タイトル検索結果を表示しています。
Pythonがファイルを開くときなどに使われるエンコーディングはロケール(WindowsではANSIコードページ)依存でした。 Unixの世界ではどんどんUTF-8ロケールが一般的になっている一方、WindowsのANSIコードページはなかなかUTF-8になりません。 そのために、Unixユーザーが open(filepath) のようにエンコーディングを指定しないままUTF-8を仮定するコードを気軽に書いてしまって、Windowsユーザーがエラーで困るといった問題が発生します。 また、Windowsでもメモ帳(Notepad.exe)やVSCodeはすでにUTF-8をデフォルトのエンコーディングで使用しています。ANSIコードページがUTF-8になるのを待っていたらどんどん周りの環境から置いていかれ、レガシー化してしまいます。 Pythonがデフォルトで利用するエンコーディングをWind
古来、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
この記事は刺身たんぽぽ同好会 Advent Calendar 2021[1] 8日目 の記事です. 7日目はげんしくんの 刺身たんぽぽ同好会を支えるDiscord鯖について - 最近のRecent です. 9日目はおのだ氏の Live2D #1 下準備(予定) です. はじめに Python3.10 がリリースされてから数ヶ月が経ちました.そこで,Python3.10 から入った新機能や,あまり知られていないが[2],知ってると便利な機能を紹介します.モダン Python を書いていきましょう. 型アノテーション 型アノテーション自体は Python3.5 からある機能[3]ですが,バージョンアップのたびに高機能になっています.Python3.10 では,| 演算子が型アノテーションに対しても使用できるようになりました. 使用例はこのような感じ
この記事ですることを3行で Pythonの標準ライブラリでできる並列実行を、あらためて総当たりで速度比較しよう ウォーターフォールチャートで、それぞれの並列処理の処理時間の特徴を可視化しよう boto3の実行をモデルケースにして、どの並列処理が一番早いのかを調べよう この記事の結論を先に Python 3.12から本格的に使えるようになったサブインタープリターは、CPUで実行する処理について言えば、従来のサブプロセスよりも高速 boto3の実行は、サブインタープリターよりも署名付きURLの非同期実行のほうが速い → S3からの10ファイルの取得であれば、実行時間を90%削減できます → Bedrockの3回実行であれば、実行時間を60%削減できます 今回使ったソースコードはこちらに置いています。 お手持ちの環境で再実行できるようにしていますので、気になる方はぜひ。 どうしてこの記事を書くの
Python実践入門 ── 言語の力を引き出し、開発効率を高める (WEB+DB PRESS plusシリーズ) 目次 目次 はじめに 通常のclassとdataclassの比較 dataclassの良いところ データを格納する箱であることを明確にできる。 クラス定義を短くかける 型情報を書くことでデータ構造が見やすくなる。 Printしたときに、そのままオブジェクトの中身を表示できる。 asdict関数でdictに変換できる。(Dictから簡単にJSONにも変換できる) Dict(JSON)からdataclassを作ることもできる Frozen引数を使うことで、簡単にイミュータブルにもできる。 データが作られたときに、自動後処理機能を追加することができる。 dataclassの残念なところ コレクションの初期化 参考資料 MyEnigma Supporters はじめに C++ユーザやJ
はじめに 📘 この記事は ラクスパートナーズ Advent Calendar 2023 の1日目の記事になります!! 本社の ラクス Advent Calendar 2023 の7日目にも参加予定なのでそちらもよろしくお願い致します🥳 長い間 Python3.7 環境のプロジェクトに携わっていましたが、この度 Python3.10~ 環境のプロジェクトに携わることになりました。 そこでこの機会に python3.8 以降の最新の型ヒントやコード品質向上のテクニックについて、改めて情報をキャッチアップしながらまとめていきたいと思います。 この記事の対象者 🎯 Python の型ヒントについて学び直したい方 Python3.8 以降の型ヒントについて理解を深めたい方 python のドメインモデルクラスについて理解を深めたい方 型ヒントを使用したことがないが、興味がある方 なぜ型ヒントを
Python 3.11では、パフォーマンスチューニングの一環として、Python関数呼び出しのインライン化 が行われました。既存のPythonインタープリタのしくみを大きく変更する変更ですので、簡単に解説しておきます。 先に書いておきますが、今回行われた「関数呼び出しのインライン化」は、C/C++などの inline のように、ユーザ定義関数を呼び出し元で展開してオーバヘッドを削減するものではありません。また、Schemeなどにある末尾再帰の最適化でもありません。 cevalループ¶Pythonインタープリタは、Python 3.11の新機能(その2) 特殊化適応的インタープリタ で解説したように、Pythonのソースコードをバイトコードへ変換し、順次実行します。このバイトコードを実行する関数はPythonインタープリタの心臓部であり、CPythonソースツリーのファイル Python/c
1.はじめに 最近、Twitterで「謎の技術で高画質化された画像」なるものがタイムラインにいくつか流れてきて興味が湧いたので、機械学習の勉強がてら画像の高画質化の方法を、僕のように「理屈無しで手っ取り早く機械学習に触れたい!」という人に向けて備忘録としてここに残しておくことにしました。 謎の技術でこれを高画質にするのは草 pic.twitter.com/HeBB7J8Q7D — koboのようなもの (@cinnamon_kobot) February 14, 2020 謎の解像度をあげる技術で僕らのぼっさんが高解像度に!!! pic.twitter.com/cjB0MM8Oqu — ろありす (@roaris) February 15, 2020 2.実行環境の構築 今回、この手の機械学習でよく用いられる「pix2pix」を使用しました。pix2pixはGANを用いた画像生成アルゴリズ
はじめに Pythonでデータを格納する際に辞書や普通のクラスを使っていませんか?Python3.7からはデータ格納に便利なdataclassデコレータが用意されています。 この記事では公式ドキュメントやPEP557の説明ではいまいち掴めない、どういった時に便利で、なぜ使うべきなのかという点に触れつつ、使い方を説明していきます。 なお、以前のバージョンではPython3.6に限りpip install dataclassesによって使えるようになります。執筆時点ではGoogle Colaboratoryの環境がPython3.6.9ですが、デフォルトでdataclassesがインストールされています。 想定読者 dataclassの存在を知ったが何なのかよく分からない人 可読性高くデータを扱いたい人 「前はこんな機能なかったし、自分は別に使わなくて良いよ・・・」と思っている人 よく見かける
[Python]原文 What's new in Python 3.8? - DeepSource (English) 原文著者 Sanket Saurav 原文公開日 2019-07-26 翻訳依頼者 翻訳者 hiroya 翻訳レビュアー doublemarket msh5 meiq 原著者への翻訳報告 1415日前 原文へのコメントで報告済み 1415日前 原著者承諾済み 編集 はじめに もうすぐPythonの最新バージョンのベータ版が公開される予定です。最終の安定版が利用可能になるまでは、もう少し時間がありますが(リリーススケジュールはこちら)、どのような新機能が追加されているのかを調査することには十分価値があります。Python 3.8 では、言語としての構文の追加、既存の挙動に関しての軽微な変更、そして全体的な速度の改善が追加されています。これらの変更は、以前の3.7のリリースま
2018年新卒入社し、SOCにてインフラ管理を担当。その後、マルウェア解析や検証業務などに従事。2022年度からは、社内のSREチームにて兼務を開始。主な保持資格は、CISSP, OSCP, GREM, GXPN, RISS, CKA, CKSなど。バイナリを読むのが好きで、一番好きな命令はx86の0x90(NOP命令)。 はじめに 私は、業務でマルウェア解析のようなリバースエンジニアリングをしており、業務効率化のために自作ツールを作ることがあります。皆さんは自作のツールの設定ファイルに、どのようなファイル形式を利用していますか。昨今は、KubernetesやAnsibleなどで用いられるYAMLや、フロントエンド界隈で頻繁に利用されるJSONなどが多い印象です。そんな中、今回はTOMLと呼ばれるファイル形式の紹介をします。プログラミング言語Rustのパッケージ管理ファイルに利用されていた
2020年07月04日 【年収1000万円】1.SQL 2.python 3……これらを3ヶ月ガチるだけであの高給取り職「データサイエンティスト」になれることが判明! MARCHと同じレベルとかお前らなら余裕よな? Tweet 73コメント |2020年07月04日 12:00|職業|仕事・勉強|Editタグ :データサイエンティスト データサイエンティストになりたい人が踏むべき手順 1.SQLを勉強 2.pythonを勉強 3.データ加工を勉強(主にpandas) 4.統計学を勉強 5.機械学習を勉強(主にscikitーlearn) 6.kaggleに挑戦 7.転職 これだけ。 ガチでやれば3ヶ月でいけます。— 北谷 駿(文系だけどpythonいじれるらしい) (@a92803753) July 1, 2020 当ブログサイトはアフィリエイト広告、バナー広告を利用しています。 そうですね
目次 今のPythonのRPCは種類が多すぎる 標準ライブラリで実行できる価値 コードの説明 実際に動かしてみて 今のPythonのRPCは種類が多すぎる 2020年現在、数多くのRPCがOSSとして公開されていますが、種類が多すぎる点と、それに伴う選択コストの増加と、評価コストの増加、学習コストの増加が個人的な課題 であると感じています。 社会人をやっているととにかく時間が貴重なので、次々現れるライブラリを検討していたり、使い方を学んだりしているのは、PoCを素早く行う場合やAPIなど閉じた小さ いプロダクトを作る際には適切ではありません。 Pythonでは multiprocessing の中に manager クラスが存在して、multiprocessing時のプロセス間通信をネットワーク越しに動作させることで、高性能なRemote Procudure Callを実装することができま
はじめに みなさん。Pythonで型書いてますか?最近は型の重要性を再認識しているので、皆さんにもぜひPythonで型を書いて頂きたいと思ってこの記事を書きました。 注意事項として今回の記事では下記の事項については言及しません。 型チェックツールの導入方法(mypy,pyrightなど) 今回の内容は以前の書いた記事の補足内容となっていますので、以前の記事ももしよければ参照ください。 実践!!Python型入門(Type Hints) そもそもPythonでなぜ型を書くのか? Pythonは動的型付き言語なので、型を書かなくてもプログラムは動きます。型を書かないことで、コードの量は少なくなりますし、初学者にとっても習得しやすい言語となっていることはメリットかと思います。 ただし、ある程度の行数のコードを書く場合、プログラムを複数人でメンテナンスする場合、型がないと以下の様な問題が発生する。
Pythonに型ヒントが入ってからしばらく経ちます。型ヒントの立ち位置も、なんでもできるアノテーションとして導入されましたが、型ヒント以外の用途はあまり育たず、型ヒントが中心になり、PEPや仕様もそれに合わせて変化したり、より書きやすいように機能が追加されてきました。 本エントリーでは、Python 3.9時点での最新情報を元に、現在サポート中のPythonバージョン(3.6以上)との互換性の情報も織り交ぜながら、最新の型ヒントの書き方を紹介します。 本エントリーの執筆には、Pythonの型の有識者の@moriyoshi、@aodag、@tk0miya にアドバイスをもらいました。ありがとうございます。 環境構築Visual Studio CodeVisual Studio Codeの場合は、事前にどのインタプリタを利用するかを設定しておきます。その環境にインストールします。venvを使う
ネストしたコンテキストマネジャーの簡潔な記述 分かりやすくなったエラーメッセージ デバッグやプロファイリング用に提供される行番号がより正確なものに 構造的パターンマッチ ファイル操作などでエンコーディングを明示しなかった際にEncodingWarning警告クラスを送出するようにオプトイン可能 「|」演算子を使用したユニオン型の指定 パラメーター仕様変数 型エイリアス ユーザー定義の型ガード 本稿では、これらの新機能の中で新しく追加された構造的パターンマッチ(match~case文)について見ていくことにする。なお、構造的パターンマッチについてはPEP 634、PEP 635、PEP 636で詳しく述べられている。 match~case文の概要 match~case文の構文を以下に示す。なお、「match」と「case」はソフトキーワードであり、構造的パターンマッチを行う文脈でのみキーワー
Python3 エンジニア認定基礎試験、不合格だった 勉強開始時は、プログラミング初学者。今はPandasやNumpyで遊んでいる。 この記事は自分のために書くが、今後受ける誰かのためになるなら幸いです。 受験理由お上が流行りのAI人材がほしいから受けてこいと言われたので 試験についてはこちら https://www.pythonic-exam.com/exam 勉強方法はじめにPythonチュートリアルを読みプログラミングを写経してみたものの、正直プログラミング初学者の自分にはチンプンカンプン。 (後ほどわかったけど、写経だとインデントミスがあったり、日本語誤訳や誤字が多かったりして、基礎力がない自分だと一人でカバーしきれなかった) そこで、プログラミング初学者でも読めそうなPythonの本を読むことにした。 本をじっくり読むよりは、プログラミングって、Pythonってこんなものだよって
今年も、Pythonのメジャーリリースの季節がやってまいりました。2022年10月3日にリリース予定となっているPython 3.11の新機能を紹介します。 CPython 高速化計画¶Python 3.11で最大のニュースは、なんと言っても Faster CPython: CPython 高速化計画 が開始されたことでしょう。 CPython 高速化計画は、Mark Shannon氏が提案したプランに基づいてPythonの高速化を行うもので、Pythonを毎年50%高速化し、互換性を保ちつつ 4年間で5倍高速化する ことを目標としています。 この計画はMicrosoft社の出資を獲得し、Pythonの父であるGuido van Rossum氏も加わって開発が進められています。 ベンチマーク¶さて、CPython 高速化計画最初のリリースとなるPython 3.11では、どの程度の高速化が
Python 3.11 までは、空文字でも64バイトのメモリを使用していました。(64bitプラットフォームの場合) Unicodeの内部表現のうち一番小さい PyASCIIObject 構造体が48バイトで、その構造体の後ろにASCII文字列が続きます。その文字列はNUL終端されているので、空文字列でも1バイト追加されて49バイトになります。 >>> sys.getsizeof("") 49 さらに小さいメモリブロックのアロケートをしているpymallocがメモリを(アライメントの関係で)16バイト単位で割り当てるので、49バイトのmallocでも64バイトが確保されてしまいます。 Python 3.12 からは、PyASCIIObject構造体から wchar_t* 表現をキャッシュするポインタが消え、40バイトになりました。それでASCIIで7文字までの文字列であれば48バイトに収ま
先日公開した「PyCon JP 2021」1日目のカンファレンスレポートはいかがでしたでしょうか? 本レポートでは引き続き、2日目の様子をご紹介します。 PyCon JPは日本国内外のPythonユーザーが一堂に会し、互いに交流を深め、知識を分け合い、新たな可能性を見つけられる場所として毎年開催される国際カンファレンスです。 PyCon JP 2021は2021年10月15日~16日のカンファレンスと2日間の会期で開催されました。 今回は16日に行われたカンファレンスの中から、注目セッションと感想について運営スタッフがレポートします。 Day2 Keynote:A Perfect match ―Mr. Brandt Bucher (nikkie) 2021年10月、PyCon JP 2021の少し前にリリースされたPython3.10。その目玉機能といえば、Structural Patte
Python 2019/07/05 Pythonの資格「Python 3 エンジニア認定試験」はどんな資格?海外の資格も紹介! AIや機械学習のブームにより、エンジニアの間でプログラミング言語「Python」が注目を集めています。関連するライブラリやフレームワークも充実してきており、様々な分野において使用されているプログラミング言語です。 「これからPythonを使った仕事をしたいが、効果的な勉強方法やスキル習得の指針となるものを知りたい」 そんなに人におすすめの資格が「Python3エンジニア認定試験」です。今回はこのPythonの資格の概要を紹介し、取得のメリットや勉強方法を徹底解説します。 なお、当サイトでは別の記事でPythonの特徴や使われ方についても詳しく解説しています。資格の前にまずPythonの概要をざっと知りたい人は「Pythonとは?何に使えるの?Pythonの特徴や使
ABEJA でプロダクト開発を行っている平原です。 先日、バックエンドで使っているGo言語のお勉強しようと「go言語 100Tips ありがちなミスを把握し、実装を最適化する」を読んでいました。その中でinterfaceは(パッケージを公開する側ではなく)受け側で定義するべきという記述を見つけてPythonでも同じことできないかと調べていると(PythonではProtocolを使うとうまくいきそうです。)、どうやら型ヒント機能がかなりアップデートされていることに気づき慌てて再入門しました。(3.7, 3.8あたりで止まってました。。) この記事では、公式ドキュメントを見ながら適当にコードを書き散らし、どの機能はどこまで使えるのか試してみたことをまとめてみました。 docs.python.org 環境 Python: 3.12.1 エディタ: Visual Studio Code Pylan
はじめに pythonの関数に与える引数として特定の値のみを許容したいときはないでしょうか? そのようなときに、動的に引数の値をチェックして範囲外のものを除外するアサーションや、Enumを用いてとりうる値を絞ることが考えられます。 ですが、前者は動的な値検査しか行えず、後者についてはAPIの引数の型をEnumに変更する必要があり、Enumが既存のAPIをオーバーロードしたときの引数の型として使えるとは限らないです。1 このような引数の値のチェックに使える手段として、python3.8から使えるようになっているLiteral typesがあります。 Literal types は型として宣言することで、関数の引数等に対して特定の型を要求するのと同時に、特定の値を持つことも要求できます。 例 次のようなコードの例を考えてみます。 target_fruit = ['apple', 'banana
グリーンバックはもういらない!?Background Mattingでどこでも合成(Windows10、Python 3.6)Python画像処理CUDA機械学習DeepLearning はじめに Zoomでバーチャル背景が流行っていますね。グリーンバックを必要とせずに一枚の背景画像から人物を切り抜き、ピクセルレベルで違和感なく合成できるBackground Mattingをやってみました。CPUでも動くよ。 システム環境 Windows10(RTX2080 Max-Q、i7-8750H、RAM16GB) Anaconda 2020.02 Python 3.6 CUDA 10.0 cuDNN 導入 Background-Mattingからクローンします。 back-matting環境を作ります。
Python 2.7が削除される「macOS 12.3 Monterey」では、Python 3も同梱されていないそうです。詳細は以下から。 Appleは現地時間2022年01月27日、開発者向けにmacOS Montereyの3rdアップデートとなる「macOS 12.3 Monterey」のBeta 1を公開し、このアップデートで、2020年にEOL(End of Life)となった「Python 2.7」を削除すると発表しましたが、 Python Deprecations Python 2.7 was removed from macOS in this update. Developers should use Python 3 or an alternative language instead. (39795874) macOS Monterey 12.3 Beta Relea
2020/08/04 17:00 今回発表されたリリースにつきまして、当初「『Python 3.9』が、8月2日(現地時間)にリリースされた」としていましたが、今回リリースされたバージョンは、「Python 3.9.0b5」のリリースとなります。「Python 3.9」の正確なリリース日は未定です。訂正しお詫び申し上げます。(編集部) 「Python 3.9」では、Python 2のサポートを削除するとともに、Pythonを利用した各種プロジェクトのメンテナに時間的猶予を与えるべく、一部の下位互換性レイヤーの保持が決定されており、それらは今後リリース予定の「Python 3.10」にて削除される。 新機能としては、dictクラスに新たな演算子としてマージ(|)と更新(|=)が加わったほか、不要なプレフィックスまたはサフィックスを文字列から簡単に削除するためのstr.removeprefix
はじめに 実写をアニメ風に変換してくれるAnimeGANをやってみました。 システム環境 Windows10(RTX2080 Max-Q、i7-8750H、RAM16GB) Anaconda 2020.02 Python 3.6 CUDA 9.0 導入 AnimeGANをクローンします。 animegan用の環境を作成します。 $ conda create -n animegan python=3.6 $ conda activate animegan $ pip install tensorflow-gpu==1.8.0 $ pip install tqdm $ pip install scipy $ pip install opencv-python $ cd AnimeGAN-master AnimeGAN-masterにdatasetを置きます。 Haoyao-styleの中身をc
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文字列に出力指定方法が追加され、出力したい式に続けて = を指定すると、その式と式の値の両方が文字列に埋め込まれるようになりま
AmazonLinux2 に AWX をインストールする手順をメモしておきます。 環境 今回は以下の環境を構築します。 ベースは AmazonLinux2 インスタンスサイズは t2.small pyenv で Python 3.7.4 環境を構築 フロントエンドは Nginx で SSL/TLS を終端させる 構築完了後、各コンポーネントのバージョンは以下になりました。 Amazon Linux release 2 (Karoo) Linux awx.example.com 4.14.128-112.105.amzn2.x86_64 #1 SMP Wed Jun 19 16:53:40 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux docker-18.06.1ce-10.amzn2.x86_64 git-2.17.2-2.amzn2.x86_64 ngi
一般社団法人Pythonエンジニア育成推進協会が約1年前から今年の夏より開始すると告知していたPython 3 エンジニア認定データ分析試験のベータ試験を受験し、無事合格しました。故に、記憶が薄れないうちに実際に取り組んだ試験対策等の情報をdumpしておこうと思います。 受験の動機 以下の様な動機で受験しました。 機械学習、統計解析に興味が有るので関連知識の習得のため 業務&遊びでPythonを使っているので、ライブラリの使い方を再勉強したいと思ったため 業務でデータ分析を少し前までやっていたため、今後も役立つと思ったため 資格取得が単純に趣味だから 勤めている企業のソフト部門独自の昇任制度用資格リストに名前があったため etc... 本記事執筆の動機 基礎試験(後述)を受験した時に同期からどの様な勉強をしたかしばしば聞かれたため 本題に入る前に Python 3 エンジニア認定試験には以
Pythonの文字列やバイト列に対するハッシュアルゴリズムは、HashDoS対策としてPython 3.4から SipHash24が使われていました。 その後、ラウンド数を減らしたSipHash13でも十分に安全だとして2015年にRustが、2016年にRubyが、SipHash24からSipHash13への切り替えを行いました。 https://github.com/rust-lang/rust/issues/29754 https://bugs.ruby-lang.org/issues/13017 Python でもSipHash13に切り替えようという提案を2017年に行っていたのですが、実装した人がなかなかプルリクエストを作ってくれず、またPythonは文字列がimmutableでハッシュ値をキャッシュしているためにそこまで大きなインパクトがなかったこともあり、ずっと放置されてい
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く