No.5366 python 関数
* 三項演算子: x = "OK" if n == 10 else "NG"
## PHP関数との対応 ##
* sprintf: '{} {}'.format('hoge', 'fuga') #"hoge fuga"
* in_array: if item in array:
* trim('/'): str.strip('/')
* explode(','): str.split(',')
* implode(','): ','.join(['aaa', 'bbb', 'ccc'])
* array_shift: myList.pop(0)
* str_replace:
str.replace(search, replaced)
* 改行削除:
re.sub('[\r\n]+$', '', line)### isset()
### list の index
try:
var = hoge[2]
except IndexError:
var = 'default'
### dict の key
var = hoge.get('fuga', 'default')
### ユニークな文字列
````
import uuid
secure_unique_id = uuid.uuid4().hex
````
### ver_dump
````
#!!!!!!!!!!!!!!!!
from pprint import pprint
pprint()
#!!!!!!!!!!!!!!!!
````
## 文字列 ##
### ヒアドキュメント
string = '''
This is a pen.
I'm from Tokyo.
'''.strip()
## 配列操作 ##
### 配列結合
list = ["A", "B", "C"]
list.extend(["D", "E"])
print list # ["A", "B", "C", "D", "E"]
### dict 配列で特定のキーの値の要素を探す
```
>>> dicts = [
{ "name": "Tom", "age": 10 },
{ "name": "Mark", "age": 5 },
{ "name": "Pam", "age": 7 },
{ "name": "Dick", "age": 12 }
]
>>> next(item for item in dicts if item["name"] == "Pam")
{'age': 7, 'name': 'Pam'}
```
## ファイル ##
### 読み取り(全部)
with open(file_path) as f:
s = f.read()
### 1行ずつ読み取り
with open(path) as f:
for s_line in f:
print(s_line)
### 確認
- あるかどうか?: os.path.exists(path)
- 最終更新日時: os.stat(file_path).st_mtime
## json ##
* 文字列->dict
+ json.loads(json_str)
* dict->文字列
+ json.dumps(ver_dict)
## デコレータ ##
### 基本形
~~~
# デコレータ定義
# 関数の実行前後に出力
def test(func):
def new_func(*args, **kwargs):
print('start')
result = func(*args, **kwargs)
print('end')
return result
return new_func
# 関数定義
@test
def square(a):
print(a * a)
# 実行
square(3)
## loop ##
### 配列を index 付きで
for index, item in enumerate(list):
### dict
for k, v in d.items():
print(k, v)
## datetime ##
- 文字列からdt
-- dt = datetime.strptime('20190318', '%Y%m%d')
- timestamp から datetime
-- localtime: datetime.fromtimestamp(timestamp)
### あと何日
```
dt_str = '20190318'
dt = datetime.strptime(dt_str, '%Y%m%d')
today = datetime.now()
days = (dt-today).days
```
### 時間比較
````
base_dt = datetime.fromtimestamp(timestamp)
expire = timedelta(minutes=30)
expire_dt = base_dt + expire
now_dt = datetime.now()
if expire_dt > now_dt:
````
## コマンドライン ##
### 引数
$ python3 sys_argv_test.py a 100 sys.argv : ['sys_argv_test.py', 'a', '100'] type(sys.argv) : <class 'list'> len(sys.argv) : 3 sys.argv[0] : sys_argv_test.py sys.argv[1] : a sys.argv[2] : 100