Development/Python
Pythonic Code
Kirok Kim
2021. 12. 1. 18:25
Pythonic Code
1. PEP8
- ํ์ด์ฌ ์ฝ๋๋ฅผ ์์ฑํ๋๋ฐ ์ฐ์ด๋ ์ผ์ข ์ ๊ท์น์ด๋ค. ํ์ฌ๋ ๋ง์ ํ์ด์ฌ ์ ์ ๋ค์ด ์ด PEP8์ ๋ฐ๋ฅธ๋ค
- ๊ธฐ๋ณธ์ ์ผ๋ก ๋ค์ฌ์ฐ๊ธฐ๋ 4์นธ Tab or Space๋ฅผ ์ฐ์ง๋ง ์คํ์ด์ค ์ฌ์ฉ์ด ๊ถ์ฅ๋๋ค. ์๋ํฐ๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ ์๋์ ์ผ๋ก ๋ง์ถฐ์ง๋ค.
๐จ Tab ๊ณผ Space๋ฅผ ํผ์ฉํ์ง ์๋๋ก ์ฃผ์!
- ์ฝ๋ ํ ์ค์ ๊ธธ์ด๋ 79์ ์ดํ์ฌ์ผ ํ๋ค. ๊ธธ์ด์ง ๊ฒฝ์ฐ์ ๋ฐฑ์ฌ๋ฌ์()๋ฅผ ์ด์ฉํด ์ค๋ฐ๊ฟ์ ํ๋ค.
with open('/Users/kkkk/open/the/file/that/I/want') as file_1, \ open('/Users/kkkk/hh/haha/file/written', 'w') as file_2: file_2.write(file_1.read())
- ํน๋ณํ ์ฐ์ฐ์๋ค๋ก ์ธํด ๊ธธ๊ฒ ๋์ด์ง๋ ๊ฒฝ์ฐ, ์ฐ์ฐ์ ์ด์ ์ ์ค๋ฐ๊ฟ์ ํด์ค๋ค.
Data = (product_num + product_name + company + product_price)
- ํจ์์ ํด๋์ค๋ ๋ค๋ฅธ ์ฝ๋์ ๋น ์ค ๋๊ฐ๋ก ๊ตฌ๋ถ.
class A(): pass # Space # Space def B(): print() # Space # Space
- ํด๋์ค์์ ํจ์๋ ๋น ์ค ํ๋๋ก ๊ตฌ๋ถ.
class a(): def b(): pass def c(): pass
- ์ด๋ฆ ๊ท์น
- ๋ณ์๋ช ์์ _(๋ฐ์ค)์ด ๋ถ์ผ๋ฉด ํจ์ ๋ฑ์ ๋ด๋ถ์์๋ง ์ฌ์ฉ๋๋ ๋ณ์๋ฅผ ์ผ์ปซ๋๋ค.
_list = []
- ๋ณ์๋ช ๋ค์ _(๋ฐ์ค)์ด ๋ถ์ผ๋ฉด ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํน์ ํ์ด์ฌ ๊ธฐ๋ณธ ํค์๋์์ ์ถฉ๋์ ํผํ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ค.
import_ = "not_import"
- ๋ชจ๋(Module)๋ช ์ ์งง์ ์๋ฌธ์๋ก ๊ตฌ์ฑ๋๋ฉฐ, ํ์ํ๋ค๋ฉด ๋ฐ์ค๋ก ๋๋๋ค.
first_module.py
- ํด๋์ค๋ช ์ ํ์ค์นผ ์ผ์ด์ค(Pascal Case) ์ปจ๋ฒค์ *์ผ๋ก ์์ฑํ๋ค.
class MyClass(): pass
- ํจ์๋ช ์ ์๋ฌธ์๋ก ๊ตฌ์ฑํ๋ ํ์ํ๋ฉด ๋ฐ์ค๋ก ๋๋๋ค.
def my_function(): pass
- ๋ค์ด๋ฐ ์ปจ๋ฒค์
* (Naming Convention)
- snake_case
- ๋ชจ๋ ๊ณต๋ฐฑ์ “_“๋ก ๋ฐ๊พธ๊ณ ๋ชจ๋ ๋จ์ด๋ ์๋ฌธ์.
- ํ์ด์ฌ์์๋ ํจ์, ๋ณ์ ๋ฑ์ ๋ช ๋ช ํ ๋ ์ฌ์ฉ
- ex) this_is_snake_case
- PascalCase
- ๋ชจ๋ ๋จ์ด๊ฐ ๋๋ฌธ์๋ก ์์ํ๋ค
- UpperCamelCase, CapWords๋ผ๊ณ ๋ ๋ถ๋ฆฐ๋ค.
- ํ์ด์ฌ์์๋ ํด๋์ค๋ฅผ ๋ช ๋ช ํ ๋ ์ฌ์ฉ.
- ex) ThisIsPascalCase
- camelCase
- ์ฒ์์ ์๋ฌธ์๋ก ์์ํ๊ณ ์ดํ ๋ชจ๋ ๋จ์ด์ ์ฒซ ๊ธ์๋ ๋๋ฌธ์.
- ํ์ด์ฌ์์๋ ๊ฑฐ์ ์ฌ์ฉํ์ง ์๋๋ค. (java ๋ฑ์์ ์ฌ์ฉ)
- ex) thisCamelCase
- snake_case
- ํต์ผ์ฑ์ ๊ฐ๊ธฐ ์ํด์๋ ์ฌ๋๋ค์ด ๊ณต์ ํ๋ ์ฝ๋ฉ ์คํ์ผ ๊ฐ์ด๋๋ฅผ ๊ฐ์ง๊ณ ์๋ ๊ฒ์ด ์ข๋ค.
- List Comprehension
- ๊ธฐ์กด List๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋จํ ๋ค๋ฅธ List๋ฅผ ๋ง๋๋ ๊ธฐ๋ฒ
- ํฌ๊ด์ ์ธ List, ํฌํจ๋๋ ๋ฆฌ์คํธ๋ผ๋ ์๋ฏธ๋ก ์ฌ์ฉ๋จ
- ํ์ด์ฌ์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ๊ธฐ๋ฒ ์ค ํ๋
- ์ผ๋ฐ์ ์ผ๋ก for + append ๋ณด๋ค ์๋๊ฐ ๋น ๋ฆ
- ๐ก ๋ฆฌ์คํธ๋ฅผ ์ฝ๊ฒ, ์งง๊ฒ ํ ์ค๋ก ๋ง๋ค ์ ์๋ ํ์ด์ฌ์ ๋ฌธ๋ฒ[ ( ๋ณ์๋ฅผ ํ์ฉํ ๊ฐ ) for ( ์ฌ์ฉํ ๋ณ์ ์ด๋ฆ ) in ( ์ํํ ์ ์๋ ๊ฐ )]
- ex) [ j for i in list]
- Enumerate & Zip
- Enumerate
- List์ element๋ฅผ ์ถ์ถํ ๋ ๋ฒํธ๋ฅผ ๋ถ์ฌ์ ์ถ์ถ
- Zip
- ๋ ๊ฐ์ list์ ๊ฐ์ ๋ณ๋ ฌ์ ์ผ๋ก ์ถ์ถ
- Lambda
- ํจ์ ์ด๋ฆ ์์ด, ํจ์์ฒ๋ผ ์ธ ์ ์๋ ์ต๋ช ํจ์
- Map
- Sequence ์๋ฃํ ๊ฐ element์ ๋์ผํ function์ ์ ์ฉํจ
- ์คํ์์ ์ ๊ฐ์ ์์ฑํ๋ฏ๋ก, ๋ฉ๋ชจ๋ฆฌ ํจ์จ์
๋ฐ์ํ