https://github.com/twtrubiks/python-notes
Python Study Notes 📝
https://github.com/twtrubiks/python-notes
notes python python-patterns tutorial
Last synced: 9 months ago
JSON representation
Python Study Notes 📝
- Host: GitHub
- URL: https://github.com/twtrubiks/python-notes
- Owner: twtrubiks
- License: mit
- Created: 2017-05-02T06:55:21.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2025-04-19T06:38:45.000Z (9 months ago)
- Last Synced: 2025-04-20T19:16:28.192Z (9 months ago)
- Topics: notes, python, python-patterns, tutorial
- Language: Python
- Homepage:
- Size: 323 KB
- Stars: 102
- Watchers: 5
- Forks: 50
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# python-notes
Python Notes 學習筆記 📝
## 介紹
有時候想找一個東西(寫法),但當下卻忘記關鍵字,所以整理一篇學習筆記,要找資料的時候也比較方便。
有些是網路上找的範例,然後自己再修修改改,或是去參考一些 Python-Patterns , Python Anti-Patterns 。
範例程式會盡量遵守 [PEP 8 -- Style Guide for Python Code](https://www.python.org/dev/peps/pep-0008/)
歡迎大家一起討論~
筆記會持續更新~
## 筆記
[global_tutorial.py](https://github.com/twtrubiks/python-notes/blob/master/global_tutorial.py) - global tutorial
[globals_tutorial.py](https://github.com/twtrubiks/python-notes/blob/master/globals_tutorial.py) - globals tutorial
[repr_tutorial.py](https://github.com/twtrubiks/python-notes/blob/master/repr_tutorial.py) - repr tutorial
[assert_tutorial.py](https://github.com/twtrubiks/python-notes/blob/master/assert_tutorial.py) - assert tutorial
[str_find_tutorial.py](https://github.com/twtrubiks/python-notes/blob/master/str_find_tutorial.py) - str_find tutorial
[rjust_ljust_tutorial.py](https://github.com/twtrubiks/python-notes/blob/master/rjust_ljust_tutorial.py) - str rjust ljust tutorial
[attribute_obj.py](https://github.com/twtrubiks/python-notes/blob/master/attribute_obj.py) - setattr() , getattr() , hasattr()
[check_is_in_list.py](https://github.com/twtrubiks/python-notes/blob/master/check_is_in_list.py) - 檢查目標是否在 list 裡
[datetime_tutorial.py](https://github.com/twtrubiks/python-notes/blob/master/datetime_tutorial.py) - datetime , monthrange , timestamp
[defaultdict_tutorial.py](https://github.com/twtrubiks/python-notes/blob/master/defaultdict_tutorial.py) - defaultdict
[counter_tutorial.py](counter_tutorial.py) - counter
[namedtuple_tutorial.py](https://github.com/twtrubiks/python-notes/blob/master/namedtuple_tutorial.py) - namedtuple
[dictionary_using_items.py](https://github.com/twtrubiks/python-notes/blob/master/dictionary_using_items.py) - dictionary.items()
[dictionary_get.py](https://github.com/twtrubiks/python-notes/blob/master/dictionary_get.py) - dictionary get()
[set_tutorial.py](https://github.com/twtrubiks/python-notes/blob/master/set_tutorial.py) - set tutorial
[dictionary_update.py](https://github.com/twtrubiks/python-notes/blob/master/dictionary_update.py) - dictionary update()
[tuple_tutorial.py](https://github.com/twtrubiks/python-notes/blob/master/tuple_tutorial.py) - tuple
[eafp.py](https://github.com/twtrubiks/python-notes/blob/master/eafp.py) - EAFP coding style
[enumerate_tutorial.py](https://github.com/twtrubiks/python-notes/blob/master/enumerate_tutorial.py) - enumerate
[filter.py](https://github.com/twtrubiks/python-notes/blob/master/filter.py) - filter
[format.py](https://github.com/twtrubiks/python-notes/blob/master/format.py) - format
[function_default.py](https://github.com/twtrubiks/python-notes/blob/master/function_default.py) - function default value
[isdigit.py](https://github.com/twtrubiks/python-notes/blob/master/isdigit.py) - isdigit()
[isinstance.py](https://github.com/twtrubiks/python-notes/blob/master/isinstance.py) - check type
[join.py](https://github.com/twtrubiks/python-notes/blob/master/join.py) - join
[json_tutorial.py](https://github.com/twtrubiks/python-notes/blob/master/json_tutorial.py) - json.loads()
[convert_class_object_to_json.py](https://github.com/twtrubiks/python-notes/blob/master/convert_class_object_to_json.py)
[convert_json_to_class_object.py](https://github.com/twtrubiks/python-notes/blob/master/convert_json_to_class_object.py)
[kwargs.py](https://github.com/twtrubiks/python-notes/blob/master/kwargs.py) - **kwargs , *arg - [youtube tutorial - What is **kwargs *args](https://youtu.be/UwhbFxLADmE)
[lambda.py](https://github.com/twtrubiks/python-notes/blob/master/lambda.py) - lambda
[list_tutorial.py](https://github.com/twtrubiks/python-notes/blob/master/list_tutorial.py) - list tutorial
[loop_if_else_break.py](https://github.com/twtrubiks/python-notes/blob/master/loop_if_else_break.py) - if not add break , will run more meaningless loop
[map_tutorial.py](https://github.com/twtrubiks/python-notes/blob/master/map_tutorial.py) - map tutorial
[OrderedDict_tutorial.py](https://github.com/twtrubiks/python-notes/blob/master/OrderedDict_tutorial.py) - OrderedDict
[MappingProxyType_tutorial.py](https://github.com/twtrubiks/python-notes/blob/master/MappingProxyType_tutorial.py) - MappingProxyType
[parse_dateutil.py](https://github.com/twtrubiks/python-notes/blob/master/parse_dateutil.py) - dateutil.parser
[property_decorator.py](https://github.com/twtrubiks/python-notes/blob/master/property_decorator.py) - property_decorator
[raise_an_exception_from_function_call.py](https://github.com/twtrubiks/python-notes/blob/master/raise_an_exception_from_function_call.py) - it is better to raise an exception that can be caught by the caller instead.
[range.py](https://github.com/twtrubiks/python-notes/blob/master/range.py) - range
[reduce.py](https://github.com/twtrubiks/python-notes/blob/master/reduce.py) - reduce
[setdefault_tutorial.py](https://github.com/twtrubiks/python-notes/blob/master/setdefault_tutorial.py) - setdefault
[sort.py](https://github.com/twtrubiks/python-notes/blob/master/sort.py) - sort
[sorted.py](https://github.com/twtrubiks/python-notes/blob/master/sorted.py) - sorted
[iter_tutorial.py](https://github.com/twtrubiks/python-notes/blob/master/iter_tutorial.py) - iter tutorial
[iter_another_trick_tutorial.py](https://github.com/twtrubiks/python-notes/blob/master/iter_another_trick_tutorial.py) - iter another trick tutorial
[iterator_in_tutorial](https://github.com/twtrubiks/python-notes/blob/master/iterator_in_tutorial.md) - in 也會消費 iterator
[__iter__tutorial](https://github.com/twtrubiks/python-notes/blob/master/__iter__tutorial.py) - `__iter__` tutorial
[yield_tutorial.py](yield_tutorial.py)- yield tutorial
[yield_from_tutorial.py](yield_from_tutorial.py)- yield from tutorial
[Enum_tutorial.py](Enum_tutorial.py)- Enum tutorial
[strtobool_tutorial.py](https://github.com/twtrubiks/python-notes/blob/master/strtobool_tutorial.py) - strtobool
[underscore_variable.py](https://github.com/twtrubiks/python-notes/blob/master/underscore_variable.py) - underscore variable
[use_unpacking.py](https://github.com/twtrubiks/python-notes/blob/master/use_unpacking.py) - use unpacking
[using_a_mutable_default_value_as_an_argument.py](https://github.com/twtrubiks/python-notes/blob/master/using_a_mutable_default_value_as_an_argument.py) - Be careful with mutable default arguments ( lists or dictionaries ) - [youtube tutorial](https://youtu.be/H5S0e_lNOlo)
[zip_tutorial.py](https://github.com/twtrubiks/python-notes/blob/master/zip_tutorial.py) - zip
[staticmethod_tutorial.py](https://github.com/twtrubiks/python-notes/blob/master/staticmethod_tutorial.py) - staticmethod tutorial
[classmethod_tutorial.py](https://github.com/twtrubiks/python-notes/blob/master/classmethod_tutorial.py) - classmethod tutorial
[decorator_tutorial.py](https://github.com/twtrubiks/python-notes/blob/master/decorator_tutorial.py) - decorator 裝飾器
[decorator_inspect.py](https://github.com/twtrubiks/python-notes/blob/master/decorator_inspect.py) - decorator inspect tutorial
[with_as_tutorial.py](https://github.com/twtrubiks/python-notes/blob/master/with_as_tutorial.py) - with as tutorial
[context_manager_tutorial.py](https://github.com/twtrubiks/python-notes/blob/master/context_manager_tutorial.py) - context manager
[suppress_tutorial.py](https://github.com/twtrubiks/python-notes/blob/master/suppress_tutorial.py) - context manager - suppress - [youtube tutorial - python 教學 - 什麼是 suppress](https://youtu.be/t4FbMd4n4rE)
[configparser_tutorial](https://github.com/twtrubiks/python-notes/blob/master/configparser_tutorial) - ConfigParser tutorial,可參考 [https://docs.python.org/3/library/configparser.html](https://docs.python.org/3/library/configparser.html)
[decimal_tutorial.py](https://github.com/twtrubiks/python-notes/blob/master/decimal_tutorial.py) - decimal tutorial
[copy_tutorial.py](https://github.com/twtrubiks/python-notes/blob/master/copy_tutorial.py) - copy_tutorial
[sum_tutorial.py](https://github.com/twtrubiks/python-notes/blob/master/sum_tutorial.py) - sum_tutorial
[math_tutorial.py](https://github.com/twtrubiks/python-notes/blob/master/math_tutorial.py) - math_tutorial
[built-in-functions_tutorial.py](https://github.com/twtrubiks/python-notes/blob/master/built-in-functions_tutorial.py) - Built-in Functions tutorial
[division_operators_tutorial.py](https://github.com/twtrubiks/python-notes/blob/master/division_operators_tutorial.py) - division operators tutorial
[reduce_use_for_loop_tutorial_1.py](https://github.com/twtrubiks/python-notes/blob/master/reduce_use_for_loop_tutorial_1.py) - reduce_use_for_loop_tutorial_1
[reduce_use_for_loop_tutorial_2.py](https://github.com/twtrubiks/python-notes/blob/master/reduce_use_for_loop_tutorial_2.py) - reduce_use_for_loop_tutorial_2
[nested_loop_tutorial.py](https://github.com/twtrubiks/python-notes/blob/master/nested_loop_tutorial.py) - nested_loop_tutorial
[dict.fromkeys_tutorial.py](https://github.com/twtrubiks/python-notes/blob/master/dict.fromkeys_tutorial.py) - dict.fromkeys tutorial
[escape_tutorial.py](https://github.com/twtrubiks/python-notes/blob/master/escape_tutorial.py) - html.parser ( escape ) tutorial
[urllib_parse_quote_tutorial.py](https://github.com/twtrubiks/python-notes/blob/master/urllib_parse_quote_tutorial.py) - urllib.parse quote tutorial
[pickle_tutorial.py](https://github.com/twtrubiks/python-notes/blob/master/pickle_tutorial.py) - pickle tutorial
[__reduce__tutorial.py](https://github.com/twtrubiks/python-notes/blob/master/__reduce__tutorial.py) - `__reduce__` tutorial
[zipfile_tutorial.py](https://github.com/twtrubiks/python-notes/blob/master/zipfile_tutorial.py) - zipfile tutorial
[unicodedata_tutorial.py](https://github.com/twtrubiks/python-notes/blob/master/unicodedata_tutorial.py) - unicodedata ( control character ) tutorial
[translate_tutorial.py](https://github.com/twtrubiks/python-notes/blob/master/translate_tutorial.py) - translate tutorial
[re_tutorial.py](https://github.com/twtrubiks/python-notes/blob/master/re_tutorial.py) - re tutorial
[fnmatch_tutorial](https://github.com/twtrubiks/python-notes/blob/master/fnmatch_tutorial) - fnmatch tutorial
[is_integer_tutorial.py](https://github.com/twtrubiks/python-notes/blob/master/is_integer_tutorial.py) - float is_integer tutorial ( TestCase )
[remove_trailing_zeros_tutorial.py](https://github.com/twtrubiks/python-notes/blob/master/remove_trailing_zeros_tutorial.py) - decimal remove trailing zeros tutorial ( TestCase )
[itemgetter_tutorial.py](https://github.com/twtrubiks/python-notes/blob/master/itemgetter_tutorial.py) - itemgetter tutorial
[groupby_tutorial.py](https://github.com/twtrubiks/python-notes/blob/master/groupby_tutorial.py) - itertools groupby tutorial
[groupby_tutorial_find_consecutive numbers.py](https://github.com/twtrubiks/python-notes/blob/master/groupby_tutorial_find_consecutive_numbers.py) - find consecutive numbers in list by groupby tutorial
[python-decouple-tutorial](https://github.com/twtrubiks/python-notes/tree/master/python-decouple-tutorial) - python decouple tutorial
[dj_database_url_tutorial](https://github.com/twtrubiks/python-notes/tree/master/dj_database_url_tutorial) - dj-database-url tutorial ( for django )
[pandas_tutorial](https://github.com/twtrubiks/python-notes/tree/master/pandas_tutorial) - pandas tutorial
[random_tutorial.py](https://github.com/twtrubiks/python-notes/blob/master/random_tutorial.py) - random tutorial
[__str__tutorial.py](https://github.com/twtrubiks/python-notes/blob/master/__str__tutorial.py) - `__str__` tutorial
[__len__tutorial.py](https://github.com/twtrubiks/python-notes/blob/master/__len__tutorial.py) - `__len__` tutorial
[__call__tutorial.py](https://github.com/twtrubiks/python-notes/blob/master/__call__tutorial.py) - `__call__` tutorial - [youtube tutorial - What is the `__call__` in python](https://youtu.be/YIstPYG15IA)
[__getattr__tutorial.py](https://github.com/twtrubiks/python-notes/blob/master/__getattr__tutorial.py) - `__getattr__` and `__getattribute__` tutorial
[__getitem__tutorial.py](https://github.com/twtrubiks/python-notes/blob/master/__getitem__tutorial.py) - `__getitem__` and `__setitem__` tutorial
[__new__tutorial.py](https://github.com/twtrubiks/python-notes/blob/master/__new__tutorial.py) - `__new__` tutorial
`__get__tutorial.py` - 參考 [what_is_the_Descriptor](https://github.com/twtrubiks/fluent-python-notes/tree/master/what_is_the_Descriptor)
[queue_tutorial.py](queue_tutorial.py) - queue tutorial
[methodcaller_tutorial](methodcaller_tutorial) - methodcaller tutorial - [youtube tutorial - python 教學 - 什麼是 methodcaller](https://youtu.be/OEMPp9i1kYc)
[str_startswith_tutorial.py](str_startswith_tutorial.py) - str.startswith() tutorial
[logging_tutorial.py](logging_tutorial.py) - logging tutorial
[operator_or_xor_tutorial.py](operator_or_xor_tutorial.py) - or xor tutorial
[operator_add_tutorial.py](operator_add_tutorial.py) - operator.add tutorial
[operator_mul_tutorial.py](operator_mul_tutorial.py) - operator.mul tutorial
[itertools_tutorial.py](https://github.com/twtrubiks/python-notes/blob/master/itertools_tutorial.py) - itertools tutorial
[itertools_islice_tutorial.py](itertools_islice_tutorial.py) - itertools.islice tutorial
[itertools_tee_tutorial.py](itertools_tee_tutorial.py) - itertools.tee tutorial
[base64_tutorial.py](base64_tutorial.py) - base64 encode decode tutorial
[bytesio_tutorial.py](bytesio_tutorial.py) - bytesio tutorial
[stringio_tutorial.py](stringio_tutorial.py) - stringio tutorial
[string_constants_tutorial.py](string_constants_tutorial.py) - string constants tutorial
[functools_partial_tutorial.py](functools_partial_tutorial.py) - functools.partial tutorial
[try_except_tutorial.py](try_except_tutorial.py) - try except tutorial
[try_finally_tutorial.py](try_finally_tutorial.py) - try except finally tutorial
[user_defined_exceptions_tutorial.py](user_defined_exceptions_tutorial.py) - User-defined Exceptions tutorial
[weakref_tutorial.py](https://github.com/twtrubiks/python-notes/blob/master/weakref_tutorial.py) - weakref tutorial
[hashlib_tutorial](https://github.com/twtrubiks/python-notes/blob/master/hashlib_tutorial) - hashlib (MD5 SHA-1 簽名) tutorial
[bcrypt_tutorial.py](https://github.com/twtrubiks/python-notes/blob/master/bcrypt_tutorial.py) - bcrypt hash salt tutorial
[hmac_sha256_tutorial.py](https://github.com/twtrubiks/python-notes/blob/master/hmac_sha256_tutorial.py) - hmac sha256 tutorial
[pycryptodome_tutorial](https://github.com/twtrubiks/python-notes/blob/master/pycryptodome_tutorial) - pycryptodome 完成 RSA 簽名驗簽, RSA 加解密
[aes_tutorial.py](https://github.com/twtrubiks/python-notes/blob/master/pycryptodome_tutorial/aes_tutorial.py) - pycryptodome 完成 AES CBC 加解密
[pyjwt_tutorial](https://github.com/twtrubiks/python-notes/blob/master/pyjwt_tutorial.py) - jwt 教學
[pyotp](pyotp_tutorial.md) - 實作 two-factor (2FA) or multi-factor (MFA)
[assignment_expressions_tutorial](assignment_expressions_tutorial.md) - [Youtube Tutorial - 海象運算符 PEP 572 – Assignment Expressions - python3](https://youtu.be/X_1o8e-DjH0)
[match_case_tutorial.py](match_case_tutorial.py) - match case statement was introduced in Python 3.10
[dataclasses_tutorial.py](https://github.com/twtrubiks/python-notes/blob/master/dataclasses_tutorial.py) - dataclasses tutorial
[importlib_tutorial](https://github.com/twtrubiks/python-notes/blob/master/importlib_tutorial) - 動態 import lib
[mock_tutorial](https://github.com/twtrubiks/python-notes/blob/master/mock_tutorial) - mock 教學
[redis_tutorial](https://github.com/twtrubiks/python-notes/tree/master/redis_tutorial) - redis 教學
[pika_tutorial](https://github.com/twtrubiks/python-notes/tree/master/pika_tutorial) - pika for Rabbitmq 教學
[thread_process_tutorial](https://github.com/twtrubiks/python-notes/tree/master/thread_process_tutorial) - thread, process 教學
[concurrent_futures_tutorial](https://github.com/twtrubiks/python-notes/tree/master/concurrent_futures_tutorial) - concurrent futures 教學
[asyico_tutorial](https://github.com/twtrubiks/python-notes/tree/master/asyico_tutorial) - asyico 教學
[aiohttp_tutorial](https://github.com/twtrubiks/python-notes/tree/master/aiohttp_tutorial) - aiohttp 教學
[pathlib_tutorial.py](https://github.com/twtrubiks/python-notes/tree/master/pathlib_tutorial.py) - pathlib 教學
[colorama_tutorial.py](https://github.com/twtrubiks/python-notes/tree/master/colorama_tutorial.py) - 讓 python 輸出 terminal 有顏色
[cachetools_tutorial.py](https://github.com/twtrubiks/python-notes/tree/master/cachetools_tutorial.py) - cachetools 教學
## 觀念
[python_circular_import](https://github.com/twtrubiks/python-notes/tree/master/python_circular_import) - [youtube tutorial - What is Python Circular Imports](https://youtu.be/RQhN24QtDAE)
[What happens when you type an URL in the browser and press enter](https://github.com/twtrubiks/python-notes/tree/master/what_happens_when_you_type_an_URL_in_the_browser_and_press_enter) - [youtube tutorial - What happens when you type an URL in the browser and press enter](https://youtu.be/PDR-fIooaLE)
[cap theorem](https://github.com/twtrubiks/python-notes/tree/master/cap_theorem) - [youtube tutorial - What is CAP theorem](https://youtu.be/jBgN5g_FaOs)
[what is the python decorator](https://github.com/twtrubiks/python-notes/tree/master/what_is_the_python_decorator)
[what is the python property](https://github.com/twtrubiks/python-notes/tree/master/what_is_the_property)
[what is the classmethod and staticmethod](https://github.com/twtrubiks/python-notes/tree/master/what_is_classmethod_and_staticmethod)
[what is the abstractmethod](https://github.com/twtrubiks/python-notes/tree/master/what_is_the_abstractmethod)
[what is the functools.lru_cache](https://github.com/twtrubiks/python-notes/tree/master/what_is_the_functools.lru_cache)
[what is the singledispatch](https://github.com/twtrubiks/python-notes/tree/master/what_is_the_singledispatch)
[what is the singledispatchmethod](https://github.com/twtrubiks/python-notes/tree/master/what_is_the_singledispatchmethod)
[what is the `if __name__ == '__main__'` in python](https://github.com/twtrubiks/python-notes/tree/master/what_is_the_name_main_in_python)
[what is private and protected attribute](https://github.com/twtrubiks/python-notes/tree/master/what_is_private_and_protected_attribute)
[what is the python interpreter](https://github.com/twtrubiks/python-notes/blob/master/interpreter)
[what is the f-string](https://github.com/twtrubiks/python-notes/tree/master/what_is_f-string)
[what is the mixin](https://github.com/twtrubiks/python-notes/tree/master/what_is_the_mixin)
[type-hints-tutorial](https://github.com/twtrubiks/python-notes/tree/master/type-hints-tutorial) - PEP 484 Type Hints 介紹 - [youtube tutorial - PEP 484 Type Hints 介紹](https://youtu.be/kXB__qIz5gY)
[pydantic_tutorial](pydantic_tutorial) - pydantic 介紹
## other
[fibonacci numbers tutorial](fibonacci_numbers_tutorial)
## data structure
[linked list](https://github.com/twtrubiks/python-notes/tree/master/data_structure/linked_list/Introduction)
[binary_tree_traversal](https://github.com/twtrubiks/python-notes/tree/master/binary_tree_traversal)
[graph](https://github.com/twtrubiks/python-notes/tree/master/graph)
## tools
[vcr-tutorial](vcr-tutorial) - [Youtube Tutorial - vcrpy 介紹教學 - 輕鬆把 request 錄下來](https://youtu.be/LrAxl5vfXJ4)
[freezegun_tutorial.py](freezegun_tutorial.py) - mock datetime
[faker_tutorial.py](https://github.com/twtrubiks/python-notes/tree/master/faker_tutorial.py) - 產生假資料
[decorator_lib.py](decorator_lib.py) - decorator lib tutorial
[pytest_tutorial](pytest_tutorial) - pytest 教學
[flake8](https://github.com/PyCQA/flake8) - linter 工具
[black](https://github.com/psf/black) - 自動排版工具
[isort](https://github.com/PyCQA/isort) - 排序 import 套件
[pipx](https://github.com/pypa/pipx/) - 類似 linux 中的 apt, 更方便管理套件. - [youtube tutorial - python 套件介紹](https://youtu.be/9cXDjWJhjsU)
指定 python 版本
```cmd
pipx install --python python3.8 flake8
```
查看目前安裝套件
```cmd
pipx list
```
[commitizen and pre-commit](commitizen_pre_commit_tutorial) - 規格化 commit 以及 pre-commit
[pip-audit](https://pypi.org/project/pip-audit/) - 檢查 packages 安全性.
首先, 不要用 sudo/admin 下載 packages.
`pip install pip-audit`
使用方法很簡單, `pip-audit --fix` 直接幫你更新有問題的 packages.
[pyenv](pyenv_tutorial) - 更好用的 python 管理虛擬環境工具(管理多版本)
[pip-tools_tutorial](pip-tools_tutorial) - 幫你管理依賴套件的版本
[uv](uv_tutorial) - 超快的套件管理工具.
## 如何使用
基本上,每個 python 檔案都可以直接執行。
> python xxxx.py
範例
> python defaultdict_tutorial.py
## 執行環境
* Python 3.9
## Reference
* [python-anti-patterns](https://docs.quantifiedcode.com/python-anti-patterns/index.html)
* [python-patterns](https://github.com/faif/python-patterns)
* [python-programming](https://www.programiz.com/python-programming)
## Donation
文章都是我自己研究內化後原創,如果有幫助到您,也想鼓勵我的話,歡迎請我喝一杯咖啡 :laughing:
綠界科技ECPAY ( 不需註冊會員 )

[贊助者付款](http://bit.ly/2F7Jrha)
歐付寶 ( 需註冊會員 )

[贊助者付款](https://payment.opay.tw/Broadcaster/Donate/9E47FDEF85ABE383A0F5FC6A218606F8)
## 贊助名單
[贊助名單](https://github.com/twtrubiks/Thank-you-for-donate)
## License
MIT license