カテゴリーアーカイブ Python

著者:杉浦

pythonの人間のためのHTTPライブラリRequests

 Requests: HTTP for Humans™ — Requests 2.20.1 documentation
 requests · PyPI
 Requestsは人間に優しいHTTP通信用ライブラリです。ちょっとしたリクエストをAPIに送る時などに便利です。次のコード例はbacklogの課題追加APIです。backlogの課題はまとめて追加することが多くいちいちUIで記述をするのは面倒です。APIでまとめて送ることで楽が出来ます。

import requests

BACKLOG_URL = "https://hogehoge.backlog.jp/api/v2/issues"
API_KEY = "hogehogefugafuga"
PROJECT_ID = 104607  # プロジェクトID
ISSUE_TYPE_ID = 485681  # 課題種別ID
CATEGORY_ID = 279257  # カテゴリID
PRIORITY_ID = 3  # 優先度
ASSIGNEE_ID = 251977  # ユーザID

request_data = [
    {
        'summary': '会員登録機能',
        'startDate': '2018-12-07',
        'endDate': '2018-12-08',
    }, {
        'summary': '会員削除機能',
        'startDate': '2018-12-08',
        'endDate': '2018-12-09',
    }
]
for data in request_data:
    BACKLOG_PARAMS = {
        'apiKey': API_KEY,
        'projectId': PROJECT_ID,
        'summary': data['summary'],
        'issueTypeId': ISSUE_TYPE_ID,
        'categoryId[]': CATEGORY_ID,
        'priorityId': PRIORITY_ID,
        'startDate': data['startDate'],
        'endDate': data['endDate'],
        'estimatedHours': 7,
        'assigneeId': ASSIGNEE_ID,
    }

    response = requests.post(BACKLOG_URL, params=BACKLOG_PARAMS)
    print(response)

 requetsでリクエストを送るのは簡単です。送信メソッド毎(get,post,put,patch,delete)のメソッドがrequests内に用意されており、それの引数に文字列のURLと辞書型のボディを渡すだけです。これだけの設定でファイルを実行するとリクエストが送られます。
 細かい設定、細かい結果の取得も簡単にできます。

>>> r = requests.get('https://api.github.com/user', auth=('user', 'pass'))
>>> r.status_code
200
>>> r.headers['content-type']
'application/json; charset=utf8'
>>> r.encoding
'utf-8'
>>> r.text
u'{"type":"User"...'
>>> r.json()
{u'private_gists': 419, u'total_private_repos': 77, ...}
  • この記事いいね! (0)
著者:杉浦

Pythonやjavascriptで現れる__の通称

 Double UNDERsocoreを略してdunderと読みます。発端は How do you pronounce “__” (double underscore)?らしいです。発端はどうあれ今はgoogleで`dunder __`と検索すると10万件以上ヒットするほど使われています。
 Pythonやjavascriptには__で囲われた変数が現れます。

__name__

__proto__

などです。この__は予約された変数で、プログラムを実行した時点ですでに中身が設定されている変数です。必然、中身を調べるわけですが、検索エンジンによっては__を読み取ってくれないことがあります。dunderはそのような時に助けなってくれる呼び方です。
 javascriptでは__proto__以外で__の絡んだ値をそうそう扱わないですが、pythonはまま使います。その中でもよく使うのは以下のあたりです。

class hogehoge
	def __init__(self, hoge, fuga):
		#コンストラクタ定義
if __name__ == '__main__':
	# メイン実行の関数呼び出し

 __init__はコメントの通りclassのコンストラクタ定義。if __name__ == ‘__main__’:は直接実行(__name__ = __main__)されているか、他ファイルから呼び出されてい実行(__name__ = ファイル名)されているかで場合分けです。過去のプログラムの一部を使いたい時はよくありますので、その時に備えて書いたりするわけです。

  • この記事いいね! (0)
著者:杉浦

Pythonの紹介

 Pythonは次の謳い文句で宣伝されているプログラミング言語です。

Python is a programming language that lets you work quickly and integrate systems more effectively.

 Pythonは膨大なライブラリと短く単純な文法が特徴の言語です。lets you work quicklyという部分は、素早いコーディングを実現させる、という訳が適当だと思います。
 現在の最新安定版である3.7の標準ライブラリのリファレンスはPython 標準ライブラリ — Python 3.7.1rc1 ドキュメントです。標準ライブラリとある通り、Pythonには最初からこれらの40章近くからなる幅広い関数が用意されています。この関数には高級なものが多くあり、この標準ライブラリを使うだけで簡単にコードを記述できます。例えば、あるurl(src_url)に置いてあるデータを取得して、ファイル(dst_file)に保存する動作は次の三行で記述できます。

data = urllib.request.urlopen(src_url).read()
with open(dst_file, mode="wb") as f:
    f.write(data)

 この様に何か簡単な課題を解決するためにちょちょいとプログラミングするという目的にpythonは非常に適しています。また容易にコーディングが可能という利点は、機械学習関連の学者、研究者の様なプログラミングが必須であるが、プログラミング以外の部分を主に考えたい人達にも人気の様です。少なくともユーザは増えています。スクリプト言語をいくつか比較したgoogle trendが次の画像です。

 標準ライブラリのみでは足りない時はPyPI – the Python Package Index · PyPIを参照しましょう。このサイトには数多くの外部ライブラリがアーカイブされています。
 便利なpythonですが、実行速度が遅いという欠点もあります。ループ速度の比較がヒットする様にググるとpython敗北の記事はいくつも出てきます。

  • この記事いいね! (0)