import numpy as np import matplotlib.pyplot as plt def lagurange(x,xp,fx): results = []; for l in range(len(x)): if(x[l] in xp): results.append(fx[np.where(xp==x[l])]) else: result=0 for j in range(len(xp)): lag = lx(x[l],j,xp) result += fx[j]*lag results.append(result) return results def lx(x,j,xp): numerator,denominator = 1,1 for i in range(len(xp)): if(i!=j): numerator *= x-xp[i] denominator *=
Python にはデコレータという特徴的な構文がある。 この構文を使うと GoF のデザインパターンの一つ、デコレータパターンが作りやすくなる。 デコレータパターンは、ある関数やメソッドの処理内容のラッピングや、関数やメソッドのマーキングを通して様々な用途に使える。 まずは、デコレータの最も基本的な使い方を以下に示す。 デコレータを使って修飾対象の処理をラッピングする。 サンプルコードでは 'main' 関数を 'decorator' デコレータで修飾することで、元の処理内容に 'print' 関数の実行を挿入している。 #!/usr/bin/env python # -*- coding: utf-8 -*- def decorator(func): def _decorator(*args, **kwargs): print('decorate') return func(*args,
Pythonのアットマーク(@)を使った記法であるデコレータについてまとめる。難しいと思われているかもしれないデコレータだが、デコレータの種類(パターン)を意識することが理解の近道だと思ったので今回は種類別にデコレータの簡単な実装例をあげて解説をしていこうと思う。 対象者 Python のデコレータを学んだことがあるがたまに分からなくなる デコレータを自作しろと言われたらスラスラかけるか不安 知っていると良いこと 関数のスコープ 第一級関数 *args , **kwargs のような記法 デコレータ関数の種類分け 以下2つの要因でデコレータ関数の種類分けが可能だと思われる。 引数を取るか否か ラッパー関数を返すか否か よって組み合わせから計4つのパターンが考えられるが、今回は "引数を取らずラッパー関数を返さないデコレータ"を除いた3つを紹介する。1つ除外する理由は簡単すぎて意味がなさそう
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? pyspaの統合思念体の渋川です。 「pyenv使いましょう!」系の記事、全部ゴミ — Yoshifumi YAMAGUCHI (@ymotongpoo) September 29, 2016 これはpyenvがダメではなくて、pyenvをとりあえずインストールしておきましょう記事がダメという意味だそうです。すでにとんぷーが5年前にこの問題について書いています。これを読んで分かる人には不要です。 この記事では「便利」と「必要」は分けて考えています。後者にフォーカスしています。 前提知識 Environment Isolation Too
タスクキュー タスクキューは通常のHTTPリクエスト/レスポンスのサイクルの外側で実行されるバックグラウンド処理を管理します。 なぜタスクキューは必要? HTTPリクエストをきっかけに行われない、またはHTTPレスポンスを返す際のパフォーマンスを著しく低下させる恐れのある処理は非同期で扱います。 例えば、Webアプリケーションは10分毎にGitHub APIからスターが多い順に100個のレポジトリを取得しているとします。タスクキューを使ってGitHub APIの呼び出しを管理し、APIのレスポンスを処理してデータベースに保存しておきます。 他の例として、HTTPリクエスト/レスポンスのサイクルの中でデータベースへのクエリに時間がかかりすぎている場合を挙げましょう。クエリをバックグラウンドで一定時間ごとに実行し、データベースに保存することもできるでしょう。HTTPリクエストが来たら、時間のか
# ! usr/bin/python # -*- coding: utf-8 -*- from __future__ import unicode_literals, print_function, absolute_import import sys def say_args(kind, data_list): print("kind:", kind, " data:", data_list) if __name__ == '__main__': args = sys.argv[1:] assert args kind = args[0].lower() data_list = [x.lower() for x in args[1:]] say_args(kind, data_list) こういうコードを書いている人、先生、怒らないから挙手しなさい。 こういうコードはグローバルスコープの
今日はPythonでのログ出力の話をしようと思う。やはりプログラムの自動化を目指すうえで、実行結果に異常がなかったかを一目で確認できるログ出力機能は必須であろう。 Pythonにはログ記録システムをサポートするloggingモジュールが標準ライブラリとして備えられている。公式のチュートリアル(Logging HOWTO — Python 3.5.1 ドキュメント)もあり、簡単に実装ができる...といいたいところだが、少しクセがあるのでここで噛み砕いて説明できれば、と思う。 まず上のチュートリアルだが、初級と上級のチュートリアルに分かれている。当然のように初級を参照し、「ファイルへのlogging」というセクションを参考にしながら次のようなプログラムを書き上げた。 import fft import logging logging.basicConfig(filename='example.
EDIT: 2018/06/19 pipenvについて追記 本記事は社内向けに書いた文章を修正したものである。 世の中にある代表的な「Python環境管理ツール」に virtualenv, pyenv, venv, pipenv の4つがある。これらをGoogleで検索すると使い方が書かれたページばかりが出てきて、それらの違いや使い分けを解説する記事は少ない。 本当は必要ではないのに「pyenvは便利」のような謳い文句で何となく使わせる記事や、古い情報を元に書いた「一見新しそうに見える記事」も多く見られる。 この記事では、中立・実用重視な視点から各ツールを解説し、筆者が考えうるベター(ベストは人それぞれ)な組み合わせについて書く。 なおAnacondaは初学者が使うにはおすすめできない。Anacondaについての筆者の解釈は末尾にあるためそちらも参照されたい。 本記事公開後いくつか近い話題
今回はソケットプログラミングについて。 ソケットというのは Unix 系のシステムでネットワークを扱うとしたら、ほぼ必ずといっていいほど使われているもの。 ホスト間の通信やホスト内での IPC など、ネットワークを抽象化したインターフェースになっている。 そんな幅広く使われているソケットだけど、取り扱うときには色々なアーキテクチャパターンが考えられる。 また、比較的低レイヤーな部分なので、効率的に扱うためにはシステムコールなどの、割りと OS レベルに近い知識も必要になってくる。 ここらへんの話は、体系的に語られているドキュメントが少ないし、あっても鈍器のような本だったりする。 そこで、今回はそれらについてざっくりと見ていくことにした。 尚、今回はプログラミング言語として Python を使うけど、何もこれは特定の言語に限った話ではない。 どんな言語を使うにしても、あるいは表面上は抽象化さ
Photo by pycon jp 秋山です。 Python3を使って開発中&勉強中の皆さん、組み込み関数はどれくらい覚えていますか?よく使うrange, input, min, max, dict……などしか覚えていないという人も多いかもしれません。 公式ドキュメントを見ると、実に68個もの組み込み関数がありました。(※ちなみに2系→3系で、あまり使われていないものはimportが必要になったり、上位機能のあるものが下位機能と統合されたり、命名変更されたりしています。例えばxrange,rangeは統合、reduceはfunctoolsへ移動…などなど。) もちろん、あまり使う機会のなさそうな特殊な関数まで覚えておく必要はありません。が、実は案外知られていないけど、使うと結構便利なものもあるのです。 というわけで今回は、意外と知られていないけど、知っていると便利ではかどると思うPytho
秋山です。 PythonはNumpyとかSympyとか、数値計算が得意なライブラリが充実しています。もちろん中学・高校の数学で習うレベルの計算もすぐにできちゃいます。 というわけで今回はPythonでプログラミングをして、中学・高校で習う数学の問題を解いてみました。 Pythonが使えるようになれば、中学・高校レベルの数学では困らずに済む。かもしれない。 ■中学2年生レベル ◆連立方程式 ◇問題 x + y = 3 x + 3y = 13 のとき、xとyを求めよ。 Numpyを使って、連立方程式を行列計算で解いてみました。 ■中学3年生レベル ◆2次方程式 ◇問題 x^2 - 10x + 24 = 0 のとき、xを求めよ。 昔の授業では (x - 4)(x - 6) = 0 x = 4 , 6 このような解法を習ったと思います。 この問題は、NumpyのPolynomialを使って式を作り
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く