programing tip

목록에 후행 쉼표가 허용되는 이유는 무엇입니까?

itbloger 2020. 7. 18. 10:37
반응형

목록에 후행 쉼표가 허용되는 이유는 무엇입니까?


파이썬에서 왜 목록의 후행 쉼표가 유효한 구문인지 궁금하고 파이썬이 단순히 그것을 무시하는 것처럼 보입니다.

>>> ['a','b',]
['a', 'b']

그것은 의미가 때 자사의 튜플 이후 ('a')('a',)다른 두 가지이지만, 목록에있는?


주요 이점은 여러 줄 목록을 쉽게 편집 할 수있게하고 난이도를 정리하는 것입니다.

바꾸다:

s = ['manny',
     'mo',
     'jack',
]

에:

s = ['manny',
     'mo',
     'jack',
     'roger',
]

diff의 한 줄 변경 만 포함합니다.

  s = ['manny',
       'mo',
       'jack',
+      'roger',
  ]

후행 쉼표를 생략하면 혼란스러운 여러 줄 차이를 이깁니다.

  s = ['manny',
       'mo',
-      'jack'
+      'jack',
+      'roger'
  ]

후자의 diff는 한 줄만 추가되었고 다른 줄은 내용을 변경하지 않았 음을 확인하기 어렵게 만듭니다.

또한 이렇게 할 위험을 줄입니다.

s = ['manny',
     'mo',
     'jack'
     'roger'  # Added this line, but forgot to add a comma on the previous line
]

암시 적 문자열 리터럴 연결을 트리거 s = ['manny', 'mo', 'jackroger']하여 의도 한 결과 대신 생성 합니다.


배열에서 후행 쉼표를 허용하는 일반적인 구문 규칙이며 C 및 Java와 같은 언어는 허용하며 Python은 목록 데이터 구조에이 규칙을 채택한 것으로 보입니다. 목록을 채울 코드를 생성 할 때 특히 유용합니다. 요소와 쉼표 시퀀스를 생성하기 만하면 마지막에 쉼표가 없어야하는 특수한 경우로 간주 할 필요가 없습니다.


특정 종류의 버그를 제거하는 데 도움이됩니다. 여러 줄에 목록을 작성하는 것이 더 분명한 경우가 있습니다. 그러나 나중에 유지 관리하면 항목을 다시 정렬 할 수 있습니다.

l1 = [
        1,
        2,
        3,
        4,
        5
]

# Now you want to rearrange

l1 = [
        1,
        2,
        3,
        5
        4,
]

# Now you have an error

그러나 후행 쉼표를 허용하고 사용하면 오류없이 줄을 쉽게 재정렬 할 수 있습니다.


A tuple is different because ('a') is expanded using implicit continuation and ()s as a precendence operator, whereas ('a',) refers to a length 1 tuple.

Your original example would have been tuple('a')


The main reason is to make diff less complicated. For example you have a list :

list = [
    'a',
    'b',
    'c'
]

and you want to add another element to it. Then you will be end up doing this:

list = [
    'a',
    'b',
    'c',
    'd'
]

thus, diff will show that two lines have been changed, first adding ',' in line with 'c' and adding 'd' at last line.

So, python allows trailing ',' in last element of list, to prevent extra diff which can cause confusion.

참고URL : https://stackoverflow.com/questions/11597901/why-are-trailing-commas-allowed-in-a-list

반응형