• 목록
  • 아래로
  • 위로

안녕하세요?


매우 기초적인 질문이지만 아무리 구글링을 해봐도 답이 나오지 않는 문제여서 부득이 스포어에 질문 드립니다 ㅠㅠ



코딩에서 함수를 사용하다보면 전역변수와 지역변수를 사용하게 되잖아요.


코딩 컨벤션상 전역변수와 지역변수의 변수명을 동일하게 하는 것이 무방한가요?


제가 사용한 용어가 정확하지 않을 수 있어서 예를 들어 질문을 드리겠습니다.



def bs(url):
    html = requests.get(url)
    soup = BeautifulSoup(html.text, 'html.parser')
    return soup

soup = bs(url) # 1번
result = bs(target_url) # 2번



위의 코드에서 bs() 함수 내부에서 url, soup이란 변수가 사용되는데,


1번의 경우에는 외부에서도 동일한 명칭의 변수를 사용하지만


2번의 경우에는 그렇지 않습니다.


물론 파이썬 이외에 다른 언어에서는 이러한 용법이 제한되는 경우도 있겠지만, 파이썬 또는 그와 유사한 방식의 언어를 전제하고 질문 드립니다.


개인 프로젝트와 공동 프로젝트를 불문하고 일반적인 코딩 컨벤션을 놓고보면 어느 방법이 안전하고 표준에 가깝다고 할 수 있을까요?



그럼 밖에 비가 많이 내리지만 즐거운 주말 저녁 되세요!


답변 달아주실 분께 미리 감사드립니다 ^^

작성자
이니스프리 119 Lv. (1%) 2415660/115200000EXP

Make StudyForUs Great Again!

 

CSVpuymXAAAVVpd.jpg

댓글 4

title: 황금 서버 (30일)humit
profile image

1. scope 관련해서 문제가 발생할 수도 있기 때문에 되도록 이름이 겹치지 않도록 사용하는 것이 좋습니다.

보통 대다수의 언어들(C, Java 등)이 가장 가까운 scope에 있는 변수 값으로 활용합니다.

파이썬의 경우에는 값을 읽는 경우에는 지역변수가 있으면 해당 지역 변수를 사용하고 없으면 전역변수를 사용합니다.

값을 대입하는 경우에는 기본이 지역변수로 되어 있으며, global 키워드를 사용해주어야 전역 변수로 인식합니다.

 

2. 특별한 경우가 아니고서는(ex. 지역 변수로 처리가 가능한 경우) 전역 변수는 되도록 사용하지 않는 방향으로 작성하는 것이 좋습니다.

 

(*) Linter라고 해서 사람들이 많이 사용하는 코딩 컨벤션에 맞는지 확인해주는 툴이 있습니다. python의 경우에는 pylint라는 이름으로, javascript에서는 eslint라는 이름을 가지고 있습니다.

물론 이걸 모두 지키면서 코딩을 할 필요는 없긴 하지만 그래도 어느 정도 지키면서 코딩을 하면 다른 사람과 협업을 할 때 어느 정도 규칙성이 있게 코드를 작성할 수 있습니다. (ex. camel case 인지 snake case로 작성할지, 중괄호를 새로운 줄로 시작할 지 그 다음에 바로 쓸지 등)

참고로 pylint의 기본 설정에 의하면 전역 변수 이름은 대문자로 작성하고, 지역 변수는 snake case 형식으로 작성해야 한다는 규칙이 있습니다.

comment menu
2019.11.18. 00:44

신고

"humit님의 댓글"

이 댓글을 신고 하시겠습니까?

이니스프리 작성자 → humit
profile image

변수명이 겹치면 scope와 관련해서 문제의 소지가 있군요 ㅠㅠ

전역변수는 가급적 사용하지 않겠습니다.

그리고 말씀해주신 pylint도 참고하겠습니다~ PEP8 이외에도 많은 내용이 있네요.

날씨가 오늘 쌀쌀하고 내일 더 추워진다는데 감기 조심하세요!

항상 감사드립니다 :)

comment menu
2019.11.18. 12:47

신고

"이니스프리님의 댓글"

이 댓글을 신고 하시겠습니까?

NoYeah
profile image

변수명은 항상 다른것이 좋은것 같습니다.

비단, 파이썬만의 문제가 아닌 프로젝트 병합시에 발생할 충돌에도 문제가 있을 수 있기 때문에 변수명은 고유한 것이 좋지 않을까요?

comment menu
2019.11.19. 15:15

신고

"NoYeah님의 댓글"

이 댓글을 신고 하시겠습니까?

이니스프리 작성자 → NoYeah
profile image

변수명이 다른 것이 분명히 좋기는 한데... 가끔은 변수명으로 좋은 아이디어가 떠오르지 않거나 저 혼자 헷갈리는 경우도 있어서요 ^^

영어 공부를 더 열심히 하겠습니다!

감사합니다 :)

comment menu
2019.11.19. 17:52

신고

"이니스프리님의 댓글"

이 댓글을 신고 하시겠습니까?

권한이 없습니다.
번호 제목 글쓴이 날짜 조회 수
공지 [1차 해결 및 추가] 서버 접속 불가 문제 안내 3 new 마스터 12시간 전15:22 66
공지 [작업 완료] 설 명절 맞이 서버 업데이트 안내 3 마스터 24.02.11.17:21 2227
공지 [중요] 호스팅 만료와 관련하여 일부 수칙이 변경됩니다. 4 마스터 23.01.14.02:23 5905
공지 [필독] 질문하는 방법 17 마스터 18.02.23.03:09 4573
386 모니터의 피봇(pivot)과 관련하여 질문 드립니다 8 이니스프리 19.04.10.13:59 242
385 라떼판다 전원 설계가 막막해요 ㅠㅠ 2 나는야초보 19.04.10.22:52 895
384 사파리브라우저 mp3파일 재생관련 문의드립니다. 11 자뻑보이 19.04.15.15:26 593
383 프로세서 간의 성능 비교에 대해 질문 드립니다 ^^ 4 이니스프리 19.04.17.18:31 204
382 디시인사이드 푸쉬알림 앱 추천 부탁드립니다 ^^ 3 이니스프리 19.04.18.23:35 1562
381 특정 키워드의 메일만 푸시알림을 받는 방법이 있을까요? 4 이니스프리 19.04.19.17:28 493
380 system32 폴더 내 파일의 삭제 권한과 관련된 질문을 드립니다 ㅠㅠ 11 이니스프리 19.04.20.13:19 1336
379 호스팅 패널의 webdev는 뭐하는것인가요? 1 샹키 19.04.20.17:07 247
378 인텔 NUC를 이용한 홈 서버 구성에 대해 질문 드립니다 ^^ 9 이니스프리 19.04.21.08:48 1278
377 안드로이드와 맥북을 같이 잘 사용할 방법이 있을까요? 2 네모 19.04.21.21:56 225
376 구글 웹마스터 사이트맵 가져올 수 없음 문제와 스포터 호스팅 Lua 스크립트 관련 질문 드립니다 12 image Gokoro 19.04.23.23:46 1299
375 케이블에도 에이징이 필요한가요..? 12 갱생협스 19.04.26.22:43 658
374 미디어위키 리버티 스킨 상하단 아이콘 지우기관련,, 3 어렵다어려워 19.04.30.16:12 258
373 DB를 연결했는데 왜 데이터를 가져오질 모태... image 국내산라이츄 19.04.30.17:08 235
372 DB를 연결했고 뭔가 가져오는 것 같은데 표시를 못 합니다... 3 image 국내산라이츄 19.05.02.09:37 231
371 SQL에서는 날짜 형식을 못 바꾸나요? 2 image 국내산라이츄 19.05.02.18:07 209
370 아이폰/아이패드 충전기 발열 관련 질문 드립니다 9 image 이니스프리 19.05.02.22:52 11149
369 무선 키보드 마우스 세트 추천 부탁드립니다. 14 갱생협스 19.05.03.18:18 338
368 윈도우 환경에서 PHP 개발환경을 어떻게 구축하는 것이 효율적일까요? 7 네모 19.05.03.20:23 241
367 워드프레스 모바일앱<-->서버간 통신오류? 6 image 갱생협스 19.05.04.20:32 293