/// BANGBOO BLOG ///

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31


February 10, 2021 List
Python on Feb 10, 2021 7:30 PM

February 10, 2021

Python
おッPythonやるのか?

ファイル拡張子oppython.py デフ繧?UTF-8、全部オブジェクト(list,dict,set等のミュータブルなら藹??照になる点に注諢?、必要ならcopy())
#コメント、ドキュメントストリン繧?(三連藹??用符):"""そのまま表遉?""" print mymod.__doc__で鐔??れる
変数型不要:p = 500 * num、でもキャストは藹??要、定数はない
文字繰り返し、キャスト:"文字列" * 4 + str(p) + "Hi\nお元気ですか?\nSee u"
raw文字列縺?escしない:print(r"インストール先縺? c:\\code\python\bin です")
 正鐔??表現縺?rも同諢? re_result = re.match('hel', r'hellow python, 123, end.' )
  if re_result: #None以藹??という諢?味で、Noneはい繧?ゆるnull、Python縺?nullはない
文字数・??len("東京驛?")→3
文字列[開始:終了]→→ str = "Flower" print(str[1:4]) → low
文字列 % (蛟?1, 蛟?2, ...)→→ num= "10進数で縺? %d 、16進数で縺? %x " % (num, num)
"xxxx{index:書藹??指定子}xxxx".format(蛟?)→→ "名縺?{:<8s}で年縺?{:>3d}縺?".format(name, age)
f"xxxx{蛟?:書藹??指定子}xxxx"→→ f"名縺?{name:<8s}で年縺?{age:>3d}縺?" 
0/空の文字列''・?値なし縺?false、Noneは・?? x = None x is None→→true?
//→除軆??切り捨てし整数、**→べき乗
関数宣言縺?def kansu(): で中で宣言する変数はローカル藹??謨?
 関数藹??で宣言された変数はグローバル藹??数でどの関数の中でも扱えるようになる
 なお関数内でもglobal henでグローバル藹??数を宣鐔??できる Pythonでのグローバル・??global)変数の宣言方觸?? | UX MILK
返り値鐔??数縺?csvでタプルになる、リストが楽か? return a,b → (a, b) あるい縺? return [a, b] → [a, b]
def func(a, b):
return a, b
result = func()
 result[0]がa、result[1]がb
try・?exceptを関数内で設定することも、逆に関数呼び出し時にも使用ができる、else, finally, raiseも使う、エラーが出ても止めた縺?ない場合縺? try-except Exceptions as e、逆縺?exceptを入れなければ止まるので藹??蜈?
try:
get_all_transfer(project_id)
excerpt Exception as e:
print(e)
置觸??は左辺が要る?要る a = a.replace('x','')
とほほ縺?Python入門 - リスト・タプル・鐔??譖? - とほほ縺?WWW入門 (tohoho-web.com)
Pythonの鐔??書とリストとクラス 複数情報の藹??け渡し|みはみ・??note
リストa=[1,2,3]縺?map(), filter(), reduce()等が使える
 a=a.append()とかa=a.extend()は値がないんで饅??目、単純縺?append(b)やextend(b)で左辺臀??要
 藹??得:a[0]、for v in a:
 リストの合体:list_a += list_b
セット型set={1,2,3}は重複や順蠎?や添藹??の無いリスト、set(list)でキャストし重複を無縺?せる、ミュータブルは格軆??できない
 藹??得 for v in a:
tuple→タプルは藹??数リスト、更新無しならリストより速い a = 1,2,3 a = (1, 2, 3)
 藹??得:a[0]、for num in a:
dict→辞書は連想配列みたい縺?{a:1,b:2}縺?items(), keys(), valus(), iteritems(), get()を使える
 Python | 辞書に含まれるすべてのキーと値を藹??得する (javadrive.jp)
 藹??得:dict_a['key1']、for k in dict_a.keys(): for v in dict_a.values(): for k, v in dict_a.items():
 dictの合体:dict_a.update(dict_b)
クラス→例えば笳?笳?クラスを宣鐔??しsampleインスタンスを生成し、getter/setterで藹??数に入れて置縺?
 藹??得:sample.key
BigQuery→別名を付ければ名前で藹??得できるが、インデックスでも藹??得できる(これ何?)
 藹??得:for row in query_job: →row[0], row["t"]
lambdaは無名関数・??
str_w = input('何か入力して縺?ださい-->') #入力させた値を藹??れるが数藹??もstr
__iter__()縺?next()を持つオブジェクトを返し、next()は次の鐔??素を返し、最後に達する縺?StopIteration例外を返す?
yield はイテレータを返すジェネレータを定義・??
@デコレータは関数を実行する前後に特觸??な処理を実行したい場合?
withで軆??了処理を指定できる、ファイル読込とその藹??の処理とか
assertや__debug__はテストで觸??体通りかを確鐔??する?
passは中身の無い関数やクラスを作成しkara.p=1で軆??なり属性追加等ができる
execは藹??数の文字列をPythonとして藹??行 exec "print 'Hello'"
delはオブジェクトを削除 del x, y, z
継承やオーバーライド class MyClass2(MyClass):
多重継謇?class MyClassC(MyClassA, MyClassB): で軆??めて使えるようになる
class MyClass:
    """A simple example class"""  # 三重クォートによるコメント
    def __init__(self):  # コンストラク繧?
        self.name = ""
    def __del__(self): #インスタンスが消滅する際に呼出でコンストラク繧?
        print "DEL!"
    def __str__(self): #文字列化
        return "My name is " + self.name
    def getName(self):  # getName()メソッド
        return self.name
    def setName(self, name):  # setName()メソッド
        self.name = name
class MyClass2(MyClass):
    def world(self):
        print "World"
class MyClass3(MyClass):
    def hello(self):  # 親クラス縺?hello()メソッドをオーバーライド
        print "HELLO"
a = MyClass()  # クラスのインスタンスを生成
a.setName("Tanaka")  # setName()メソッドをコー繝?
print a.getName()    # getName()メソッドをコー繝?
print a  #=> My name is Tanaka 文字列化
b = MyClass2()  #継謇?
b.hello()    #=> Hello
b.world()    #=> World
c = MyClass3()  #オーバーライド
c.hello()    #=> HELLO
super()を使ってオーバーライドする
 super()は基藹??クラスのメソッドを継承した上で処理を拡張
 super().__init__(x、y)が使える
if __name__ == "__main__":
 モジュール時の勝手実行を抑える
  import helloの時hello.py 内部で縺? __name__ 縺? "hello" 
  python hello.pyのような藹??行時hello.py の内部縺? __name__ 縺? "__main__"
from math import pi, radians→mathモジュールから特藹??のオブジェクト(関謨?/変謨?/クラ繧?)をimpo(math.piみたいに書かず省略できる)
import urllib.error→urllibパッケージからerrorモジュールをimpo、パッケージはフォルダ
import numpy as np→別名でしか使えな縺?なるnp.array()とか縺?
 モジュー繝?=ファイル名.pyでファイルをimpoしている
from {another_file} import {ClassName}
 another_file.pyがファイル名
 class ClassNameがクラス名
from {パッケージ・??ディレクト繝?} import {モジュール・??ファイ繝?}
 ちゅー書き方もできるらしいが、どっち・??
impo順:標準ライブラリ・??サードパーティライブラリ・??ローカルライブラ繝?(自臀??のライブラ繝?)

関数や変数・??蟆?文字スネークケース・??sample_func)
クラス名、例外、型変数・??キャピタルパスカルケース・??SampleClass)
定数名:大文字アンダースコア区切り(SAMPLE_CONST)
モジュール名:蟆?文字(samplemodule, sample_module)
パッケージ・??フォルダ)名:蟆?文字。アンダースコア非推奨・??samplepackage)

インデントは半角スペー繧?4縺?
1行半角縺?79文字以内
トップレベルの関数やクラス縺?2行開ける
クラス内部では・??行ずつ開けてメソッド定鄒?
ドックストリングでクラスや関数についてコメントする(慣軆??的にダブルクォート)
 コード中は処理についてのコメントをな縺?し関数化縺?docstringで藹??照するよう縺?
 「コメント(#)縺?docstring(""")の違いは・??」コメント縺?docstringについ縺?
 [Python]可読性を上げるための、docstringの書き方を学ぶ・??NumPyスタイル・?? - Qiita

デバッグの方觸??案
print(type(v)) でどんなメソッドを持っているか等を探る
print(v) をコマンド前後や流れで沢山臀??込みでどこでエラーが出ているか探す
print("creds:")
print(creds)
print("type(creds:")
print(type(creds))
print("vars(creds:")
print(vars(creds))
print("creds.keys():")
print(creds.keys())
print("dir(creds):")
print(dir(creds))
print("creds._dict_:")
print(creds.__dict__)

is not subscriptableのエラー 添藹??不可エラーでリストでないのにリストとして入れようとしている

※藹??照になりコピーされない、必要ならコピ繝?(値を入れた時点で藹??照が外れるので藹??際問題少ない?)
a = []
b = a
b.append(1)
print(a) #[1]
https://qiita.com/ponnhide/items/cda0f3f7ac88262eb31e
https://nishiohirokazu.hatenadiary.org/entry/20120125/1327461670

環藹??変数を扱う
 import os
 print(os.environ["HOME"]) ホームディレクトリ、LANG縺?ja_JP.UTF-8とか
 os.environ["PHASE"] = "staging" 環藹??変数に代入できるのは文字列だけ
 del os.environ["PHASE"] 削髯?
コマンドラインの藹??数を扱う
 python3 sys_arg_test.py a 100
  dst_prj = sys.argv[1] (aが入っている)
  sys.argv (['sys_arg_test.py','a','100']

Pythonのリストと文字列を相臀??に藹??觸??する方觸??まとめ | HEADBOOST
→リストをStrに藹??觸??し縺?SQLにする場合For文が良い(Pythonの書藹??縺?SQL書藹??のコンビなので臀??寧に対処するため)
i = 0
v = "["
for s in list_v:
    i += 1
    if i > 1:
        v += ","
    v += "'" + s + "'"
v += "]"
SQL = "insert into aaa (aaa) value ({v})"

※テキスト選択
 Shift↑or↓ で鐔??全臀??
 home(+fn)で鐔??頭、end(+fn)で鐔??末移動

【基軆??一覧】Pythonの基本文法を全て解説してみた!【初心者】 (suwaru.tokyo)
Python基本文法まとめ - Qiita
とほほ縺?Python入門 - とほほ縺?WWW入門 (tohoho-web.com)
Python入門 ~Pythonのインストール方觸??やPythonを使ったプログラミングの方觸??について解説します~ | Let'sプログラミン繧? (javadrive.jp)
Welcome to Python.org

HTMLの中に藹??し埋め込めず、基本的にプログラムの中縺?HTMLを埋め込む:CGI(Perl辟?)
 さ縺?らインターネット縺?Python CGI (mwsoft.jp)
WSGI Python 縺? WSGI (Web Server Gateway Interface) に藹??ったシンプル縺? Web サーバ縺? Hello World - Qiita
Python逕?Webサイト用途フレームワーク・??Flask(軽驥?)、Django
 WSGI につい縺? — Webアプリケーションフレームワークの臀??り譁? in Python (c-bata.link)
 GCPでどう使うかは臀??譏?だがホスティングは↓
 ウェブ ホスティン繧? | Google Cloud 静的ウェブサイトのホスティン繧?  |  Cloud Storage  |  Google Cloud

str.split() 区切り文字で分割しリスト等に入れる Pythonで文字列を分割・??区切り文字、改鐔??、正鐔??表現、文字数・?? | note.nkmk.me
print('Sam' in 'I am Sam') # True 任諢?の文字列を含むか判藹??: in演算子 Pythonで文字列を検索・??〜を含むか判藹??、位置藹??得、カウント) | note.nkmk.me
==============
ここで動かせるgoogle colaboratory→ Colaboratory へようこそ - Colaboratory (google.com)

コラボラトリはマークダウン Qiita マークダウン鐔??法 一覧表・チートシート - Qiita
半角スペース・??個で改鐔??
#の数で鐔??出し
*で軆??条書き
数藹??縺?.で番号を振る、- でリスト
* or - or _ を3つ以上で水平軆??
[ ]でチェックボックス、[x]でチェッ繧?
| td | td | td |でテーブ繝?
**aaa**で太字、*aaa*で斜体
~~aaa~~で打消し線
[タイト繝?](URL)でリン繧?
```でコードの挿入、`でインライン挿蜈?
> or >> で藹??逕?
 [^1]で注釈
\バックスラッシュでマークダウンのエスケープ

==============
宗教論争(事実は同じでも他人の鐔??知は違うので諢?味なし
if self.flag_ok == 1 and self.mode == '1'
↓一見で分からんなら変数名を工夫してこうやん縺?
if self.file_verify_completed and self.mode == GRANT_PERMISSION:

マジックナンバーを使繧?ない(数藹??の方が曖昧性が無い場合も)
STATUS_ERROR = -1
STATUS_SUCCESS = 0
self.status_error = STATUS_SUCCESS

with構文で処理の前後でコンテキストマネジ繝?__enter__、__exit__が使繧?れる
 __enter__メソッドで臀??前処理
 __exit__メソッドで臀??後処理
with ファイル操作や通信などの開始時の前処理と軆??了時の藹??処理など藹??須となる処理を自動で藹??行
try/finallyみたいなもの、最初と最後に臀??かして縺?れる
class a(object):
def_enter_(self):
print 'sss'
return 'sss111'
def_exit__(self, type, value, traceback):
print 'ok'
return False
with a() as s:
print s
sss
sss111
ok

初期値をエラー値にし、業務判藹??エラーでステータスを設藹??したらreturnで抜ける
def exFunction(self):
self.status_error = STATUS_ERROR
try:
if XX = AAA:
self.status_error = STATUS_XX_ERROR
retrun
self.status_error = STATUS_SUCCESS
retrun
except:
~エラー処理、ステータスは藹??更しない

エラーメッセの繝?ードコーディングを避ける方觸??(繝?ードが場所と内容が分かり易いかも)
MSG_ERROR_OLD_EMAIL = "Error: 旧メー繝?%sです\n"
e_message_list.append(MSG_ERROR_OLD_EMAIL % (old_email))
self.error_message = '\n'.join(e_message_list)


ケチって分藹??い譛?1冊にしたが全然進まぬ、薄い奴星e、?チッPython、誰がJSONじゃ~い、チェーンソー饅??繧?すっぞ

続編、、モジュールとかmportとか、
/// BANGBOO BLOG /// - Python Python

Posted by funa : 07:30 PM | Web | Comment (0) | Trackback (0)