auの日記

プログラミング初心者の日記。(auはハンドルネームです)

Python

Pythonのisと==の違いについて調べてみた

auです。Pythonで比較をする際に、値同士なら「==」boolなら「is」という風に使っていました。なんでかなーと思ったので、今回調べてみました。 == ==は、変数の値を比較しています。そのまんまですね。 a = 1 b = 1 print(a == b) # True is isは、インスタ…

Pythonで文字列の足し算をしようとすると波線が引かれる

auです。VSCodeでPythonを使っています。 そこでは、環境変数を代入した文字列同士を足し算していたのですが、ずっと赤い波線が引かれていたので気になっていました。実行しても(一応)なんともなく動きます。なんでかなーと思ったのですが、自分なりに理解し…

fakedredisで「hmset」を使えない場合の解決策

auです。Pythonのライブラリ「fakeredis」を使ってRedisのテストをしています。その際に、hmsetが使えないと言うエラーが起きたため、解決策を描こうと思います。実際に出たエラーを載せようと思ったのですが、なぜか再現ができませんでした。hmsetは使えな…

Pythonで正確に平方根を求める方法

auです。正確な平方根の値を求める方法を調べてみました。mathやnumpyにも平方根を求める関数(sqrt)があるのですが、精度はそれほど高くないようです。 やり方 from Decimal import Decimal Decimal(str(x)) ** Decimal('0.5') Decimalを使うことでより正確…

Pythonの一番最初に実行するファイルってどうするのがいいんだろう

auです。優柔不断さが出ているタイトルですね。現在、DockerとPythonを使って開発をしています。今は、app.pyというファイルを実行して、各種モジュールをimportして一通りの動作をするようにしています。モジュールはクラスにするメリットがあると思うので…

Pythonの文字列の連結におけるPEP8の書き方

auです。Pythonで複数行の文字列を連結する場合、「\(バックスラッシュ)」を使います。 hello \ world # hello world って感じですね。この書き方にも、PEP8のルールがあることを知ったので、メモしておこうと思います。 PEP8での書き方 def test(): s = \ '…

Pytestのfixtureとは

auです。Pytestを使ってユニットテストを行っているのですが、その際に「fixture」が出てきたので調べてみました。 fixtureとは fixtureとは、テストの前・後処理のことです。モックを作ったり、事前にインスタンスを作っておく必要がある場合にはここで作る…

n個ずつのリストに分割するPythonのコード

auです。Pythonで以下のような機能の関数を実装します。リストの中に1000個の値が入っていて、それをn個ずつのリストに分割したい。それを3行のコードでできたので驚きました。その報告です。 # n個ずつのリストに分割する def split_list(l, n): for i in r…

Pythonのreprについて調べた

auです。Pythonのreprについて調べました。 reprとは reprとは、evalに渡した際に、実行できる形の文字列を精製します。representationの略称で、「表現・描写」という意味があります。文字列なので、同じような使い方をする「str」があります。こっちの方が…

Pythonの@propertyについて調べてみた

auです。特殊文字で検索に引っかからなそうですが、Pythonの関数の上についている「@property」について調べてみました。 property Pythonのpropertyは、以下のようにして使われています。 class TestProparty(): def __init__(self, n): self._n = n @prope…

Pythonのyieldってなんだ

auです。Pythonのコードの中に「yield」が出てきました。分からなかったので調べてみます。 yieldとは yieldとは、関数を一時的に停止する機能を持つ文です。直訳だと「もたらす、生む、譲渡する」という意味があります。returnが、関数を終了するのに対して…

Pythonコードをflake8を使ってpip8に準拠しない場合にエラー表示をするようにした

auです。Pythonのコードをいい感じに書いていない場合(pip8の書き方)に従っていない場合に、エラーを表示するようにしました。今までpylintなどを使っていましたが、何となく使いにくいし、開発環境によりあっているのは「flake8」だと感じたので導入してみ…

Pythonの関数はreturnで返すべきか

auです。Pythonの関数は、returnをしなくてはいけない場合と、しなくてもいい場合があると思います。printをするだけとかなら、returnはなくてもいいですよね。僕は、C言語のように「reutrn 0」で正常終了のようにしていたのですが、先輩エンジニアに指摘さ…

答えが複数あるものは一次資料を見るといいことを学んだ

auです。以前、このような記事を書きました。program-shoshinsya.hatenablog.comそして、先輩エンジニアに答えをいただきました。docs.python.orgすごく近くに答えがあるし、他の先輩エンジニアが同じような問題を抱えていて、その解決法も記事にしていまし…

Pythonのアンパックって何

auです。Pythonのアンパックについて調べました。 アンパックとは アンパックとは、複数の値を各変数に代入することです。アンパックは、荷物を開けて中身を取り出すという意味があるそうです。やり方は複数あるようです。 タプルをアンパックする a, b, c =…

Pythonの配列の先頭を取得するのって「pop」でいいの?

auです。配列の先頭を取得して、その値は削除する処理が欲しくなりました。値を取得して削除するとなると、「pop」が1番に思いつきました。しかし、Pythonの場合は一番後ろの値を選択することになります。先頭を取得するとなると、「pop(0)」とする必要があ…

Pythonのモジュール・ライブラリ・パッケージの違い

auです。Pythonのモジュールとかライブラリとかパッケージがぐしゃぐしゃになってきたので調べました。 モジュールとは 1つの部品の単位。.pyファイルが「モジュール単位」と呼ばれる。numpyで言う、arrayなど。 numpy.array(赤の部分) パッケージとは モジ…

PythonでRedisのソート型を使う

auです。PythonのRedisを使って、ソート型を使ったのでまとめてみます。 環境 redis 2.10.6 Python 3.7.3 使い方 ソート型を使う際には、zaddを使用します。 セットの仕方 # importなど省略 redis.zadd(key, value, score) keysで確認することができるように…

PythonのPEPとは

auです。Pythonの書き方を指摘される際に、「PEP8にしたがって書いて」という指示を受けました。 PEPについて詳しく知らないので調べてみることにしました。 PEPとは PEPとは、Python Enhancement Proposalの頭文字を取った略称です。 直訳だと、Pythonを拡…

Pythonのアロー演算子っぽいやつ

auです。きのう記事にしましたが、Pythonのアロー演算子っぽいやつ「->」の正体が分かったのでまとめようと思います。program-shoshinsya.hatenablog.com 問題のコードはこれです。 def get_text(self, key: str) -> str: return texts(key) 関数アノテーシ…

Pythonの「->」って本気で何ですか

auです。先人のPythonのコードを読んでいて、なんだこれというコードがあったので分かる人がいたら教えてください。調べても特殊文字なのでヒットせずに、「ハイフン 大なり」とかでもヒットしませんでした。 問題のコード def get_text(self, key: str) -> …

Pythonのトップレベルって何だ

auです。Pythonの命名規則を調べている際に「トップレベル」という用語を見つけました。何だろうと思ったので調べてみました。が、しかし、同じように疑問に思っている人がいてもこれという解決は見つけられなく、他の言語でのトップレベルが多くヒットしま…

AttributeError: module 'redis' has no attribute 'Redis'の解消法

auです。PythonでRedisを操作するチュートリアルを行っている際に、以下のようなエラーが起きました。 AttributeError: module 'redis' has no attribute 'Redis'すごく単純なことだったのでメモ程度に共有しようと思います。 import redis r = redis.Redis(…

Pythonのscheduleを使って周期的に関数を実行する

auです。DockerからPythonファイルを実行する際に、周期的に行う必要がありました。過去に、Cronを使って似たようなことをやっていたので調べてみましたが、手間がすごそうです・・・。正直timeモジュールとか使えばすぐに実装できるので、コンテナごと管理…

Docker環境でPython実行時に.envの環境変数を引数を渡す方法

auです。DockerでPython環境作り、.envで環境変数を管理しています。そのおかげもあり、Python実行時に引数で渡すのが簡単になったのでやり方載せておこうと思います。 やり方 今回はDiscordのWebhookを設定しています。そのためにはURLを設定しなければなら…

Pythonのロゴの意味について調べてみた

auです。こちらの記事を読んで、じゃあPythonはどんな意味なんだろうと思ったので調べてみました。 qiita.com Pythonのロゴ Pythonのロゴといえばこれですね。Pythonは、神話上の大蛇の意味です。これが分かっていれば、なんとなく二匹の蛇が絡まっているな…

Pythonでスマートに配列を分解することができた

auです。Pythonで配列に入っている値を分解したいときってありますよね。こんな感じに。 array = ["au", 21, 170, 65, "埼玉県", "xxx@yyy.jp"] name = array[0] age = array[1] height = array[2] weight = array[3] city = array[4] mail = array[5] 配列…

Pythonでtkinterを使ってクリックを取得してみた

auです。Pythonでクリックを検出できるのかなーと思ったので調べてみました。tkinterを使うことでできるようですね。 import tkinter def click_event(): print("クリックされました") if __name__ == '__main__': tki = tkinter.Tk() tki.geometry('300x300…

Pythonでtkinterを使おうとするとエラーが起きる場合の対処法

auです。Pythonでクリックを取得するために、「tkinter」のライブラリを利用しようとしたら、以下のようなエラーが出ました。 File "click_event.py", line 1, in <module> import tkinter File "/Users/username/.pyenv/versions/3.7.0/lib/python3.7/tkinter/__ini</module>…

Pythonで数値を見やすくする

auです。最近知ったのですが、Pythonの数字は"_"(アンダーバー)で区切ることができるみたいです。 実際にやってみる print("_を使わない: ", 1000000) print("_を使う: ", 1_000_000) # 実行結果 _を使わない: 1000000 _を使う: 1000000 ソースコードで_を使…