티스토리 뷰
코드를 줄이는 방법으로 찾아보았습니다.
한번에 간단히 보내기...
def line(doc, x1, y1, x2, y2, layer=None):
global saved_Xpos, saved_Ypos # 전역 변수로 사용할 것임을 명시
# 선 추가
start_point = (x1, y1)
end_point = (x2, y2)
if layer:
# 절곡선 22 layer는 ltscale을 조정한다
if(layer=="22"):
msp.add_line(start=start_point, end=end_point, dxfattribs={'layer': layer, 'ltscale' : 30})
else:
msp.add_line(start=start_point, end=end_point, dxfattribs={'layer': layer})
else:
msp.add_line(start=start_point, end=end_point)
# 다음 선분의 시작점을 업데이트
saved_Xpos = x2
saved_Ypos = y2
위의 파이썬 함수가 있다.
내가 하고 싶은것은 , line(doc, 1,2,"레이져")
이렇게 호출하면 위의 함수가 실행되게 하고 싶다.
즉 전달자 '1','2'는 x1,y1이 한쌍으로 인식되게 하는게 핵심인 것 같은데, 파이썬은 이렇게 짝으로 변수명을 만들어서 실행하는게 가능할까?
ChatGPT
파이썬에서 함수에 인자를 전달할 때, 특정 인자들을 짝으로 묶어서 처리하는 것은 가능합니다. 하지만, 함수의 정의 방식에 따라 달라지며, 일반적으로 인자 이름을 동적으로 생성하거나 변경하는 것은 지원되지 않습니다.
line 함수에서 x1, y1과 같은 인자를 짝으로 처리하고 싶다면, 몇 가지 방법을 사용할 수 있습니다:
튜플 사용: x1과 y1을 하나의 튜플로 묶어서 전달하고, 함수 내부에서 이를 분리하여 사용합니다. 예를 들어, line(doc, (1, 2), "레이저")와 같이 호출할 수 있습니다.
변수 개수가 가변적인 함수 정의: *args 또는 **kwargs를 사용하여 가변적인 수의 인자를 받는 함수를 정의할 수 있습니다. 이 경우, 함수 내부에서 인자를 적절히 처리해야 합니다.
아래 예시에서는 튜플을 사용하는 방법을 보여줍니다:
python
Copy code
def line(doc, start_point, layer=None):
global saved_Xpos, saved_Ypos # 전역 변수 사용
# start_point를 x1, y1으로 분리
x1, y1 = start_point
# 나머지 로직 구현...
# 예를 들어, end_point를 계산하거나 선을 그리는 로직
# ...
# 다음 선분의 시작점을 업데이트
saved_Xpos = x1
saved_Ypos = y1
# 함수 호출
line(doc, (1, 2), "레이저")
이 방식을 사용하면 x1과 y1을 짝으로 묶어서 함수에 전달할 수 있으며, 함수 내부에서 이를 분리하여 사용할 수 있습니다. 함수의 인터페이스를 변경하는 것이므로, 기존 코드와의 호환성 문제를 고려해야 합니다.
'IT tech Coding > python' 카테고리의 다른 글
- Total
- Today
- Yesterday
- ajax오류메시지
- chatGPT3.5파이썬버전
- Bootstrap 5
- 캐드자동작도
- 구글드라이브API
- #파이썬패키징
- 티스토리챌린지
- 뫄프로그래밍
- 엑셀보호
- #프로그램설치
- 엑셀입력보호
- 코딩효율성
- 스크립트작성기초
- 오블완
- isset을 적용해야 하는 이유
- 효율적코딩방법
- #InstallForge
- json파일형태보기
- 1. #웹개발 2. #로트번호 3. #성적서보기 4. #ajax 5. #jquery 6. #php 7. #프론트엔드 8. #백엔드 9. #부트스트랩 10. #웹기능구현
- sql문장 날짜계산
- 프로그래머생활
- 엑셀셀보호
- 도면자동생성
- General error: 2031
- coalesce는 한국어로 "코얼레스크" 또는 "코얼리스"
- 테크에능한여성
- 오토핫키가이드
- json파일편하게보는법
- 파이썬코드줄바꿈방법
- 코딩튜토리얼
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |