15개의 Pythonic 코드 예제(즐겨찾기)

5843 단어 Pythonic
Python은 언어의 간결성 때문에 우리로 하여금 인류가 생각하는 방식으로 코드를 쓰게 한다. 초보자는 손에 넣기 쉽고 늙은 새는 손을 놓지 않는다.
Pythonic(우아하고 튼튼하며 깔끔한) 코드를 작성하고 평소에 그 큰 소 코드를 많이 관찰해야 한다. Github에는 매우 우수한 원본 코드가 많이 있다. 예를 들어requests,flask,tornado. 여기서 샤오밍은 흔히 볼 수 있는 Pythonic 쓰기법을 수집하여 당신이 우수한 코드를 쓰는 습관을 기르도록 도와준다.
01. 변수 교환
Bad

tmp = a
a = b
b = tmp
Pythonic

a,b = b,a
02. 목록 유도
Bad

my_list = []
for i in range(10):
  my_list.append(i*2)
Pythonic

my_list = [i*2 for i in range(10)]
03. 단일 행 표현식
목록 유도식은 간결성과 표현성 때문에 널리 추앙받고 있다.
그러나 단행으로 쓸 수 있는 표현식이 많아 좋은 방법은 아니다.
Bad

print 'one'; print 'two'

if x == 1: print 'one'

if <complex comparison> and <other complex comparison>:
  # do something
Pythonic

print 'one'
print 'two'

if x == 1:
  print 'one'

cond1 = <complex comparison>
cond2 = <other complex comparison>
if cond1 and cond2:
  # do something
04. 인덱스
Bad

for i in range(len(my_list)):
  print(i, "-->", my_list[i])
Pythonic

for i,item in enumerate(my_list):
  print(i, "-->",item)
05. 시퀀스 패키지 해제
Pythonic

a, *rest = [1, 2, 3]
# a = 1, rest = [2, 3]

a, *middle, c = [1, 2, 3, 4]
# a = 1, middle = [2, 3], c = 4
06. 문자열 결합
Bad

letters = ['s', 'p', 'a', 'm']
s=""
for let in letters:
  s += let
Pythonic

letters = ['s', 'p', 'a', 'm']
word = ''.join(letters)
07. 진위 판단
Bad

if attr == True:
  print 'True!'

if attr == None:
  print 'attr is None!'
Pythonic

if attr:
  print 'attr is truthy!'

if not attr:
  print 'attr is falsey!'

if attr is None:
  print 'attr is None!'
08. 사전 요소 액세스
Bad

d = {'hello': 'world'}
if d.has_key('hello'):
  print d['hello']  # prints 'world'
else:
  print 'default_value'
Pythonic

d = {'hello': 'world'}

print d.get('hello', 'default_value') # prints 'world'
print d.get('thingy', 'default_value') # prints 'default_value'

# Or:
if 'hello' in d:
  print d['hello']
09. 작업 목록
Bad

a = [3, 4, 5]
b = []
for i in a:
  if i > 4:
    b.append(i)
Pythonic

a = [3, 4, 5]
b = [i for i in a if i > 4]
# Or:
b = filter(lambda x: x > 4, a)
Bad

a = [3, 4, 5]
for i in range(len(a)):
  a[i] += 3
Pythonic

a = [3, 4, 5]
a = [i + 3 for i in a]
# Or:
a = map(lambda i: i + 3, a)
10. 파일 읽기
Bad

f = open('file.txt')
a = f.read()
print a
f.close() 
Pythonic

with open('file.txt') as f:
  for line in f:
    print line 
11. 코드 리셋
Bad

my_very_big_string = """For a long time I used to go to bed early. Sometimes, \
  when I had put out my candle, my eyes would close so quickly that I had not even \
  time to say “I'm going to sleep.”"""

from some.deep.module.inside.a.module import a_nice_function, another_nice_function, \
  yet_another_nice_function 

Pythonic

my_very_big_string = (
  "For a long time I used to go to bed early. Sometimes, "
  "when I had put out my candle, my eyes would close so quickly "
  "that I had not even time to say “I'm going to sleep.”"
)

from some.deep.module.inside.a.module import (
  a_nice_function, another_nice_function, yet_another_nice_function) 

12. 현식 코드
Bad

def make_complex(*args):
  x, y = args
  return dict(**locals())
Pythonic

def make_complex(x, y):
  return {'x': x, 'y': y}
13. 자리 표시자 사용
Pythonic

filename = 'foobar.txt'
basename, _, ext = filename.rpartition('.')
14. 체인 비교
Bad

if age > 18 and age < 60:
  print("young man")
Pythonic

if 18 < age < 60:
  print("young man")
체인 비교 조작을 이해했다면, 왜 아래의 코드 출력 결과가 False인지 알아야 한다

>>> False == False == True 
False
15. 삼목 연산
이것은 의견을 보류한다.사용 습관에 따라 하세요.
Bad

if a > 2:
  b = 2
else:
  b = 1
#b = 2
Pythonic

a = 3  

b = 2 if a > 2 else 1
#b = 2 

참조 문서
http://docs.python-guide.org/en/latest/writing/style/
https://foofish.net/idiomatic_part2.html
15개의 Pythonic에 대한 코드 예시(소장할 만한 가치가 있음)에 관한 이 글을 소개합니다. 더 많은 Pythonic 코드 내용은 저희 이전의 글을 검색하거나 아래의 관련 글을 계속 훑어보십시오. 앞으로 많은 응원 부탁드립니다!

좋은 웹페이지 즐겨찾기