파이썬에서 연쇄적인 방법을 끊는 방법은 무엇입니까?
다음 코드가 있습니다(이름 지정 규칙에 대해 비난하지 마십시오. 내 것이 코드는 내 코드가 아닙니다.
subkeyword = Session.query(
Subkeyword.subkeyword_id, Subkeyword.subkeyword_word
).filter_by(
subkeyword_company_id=self.e_company_id
).filter_by(
subkeyword_word=subkeyword_word
).filter_by(
subkeyword_active=True
).one()
(너무 읽을 수 없는) 모양은 마음에 들지 않지만, 이 상황에서 행을 79자로 제한하는 것이 더 나은 방법이 없습니다.(백슬래시를 사용하지 않는 것이 좋음) 더 좋은 방법이 있습니까?
추가 괄호를 사용할 수 있습니다.
subkeyword = (
Session.query(Subkeyword.subkeyword_id, Subkeyword.subkeyword_word)
.filter_by(subkeyword_company_id=self.e_company_id)
.filter_by(subkeyword_word=subkeyword_word)
.filter_by(subkeyword_active=True)
.one()
)
괄호를 여는 것보다 줄 연속 문자가 선호되는 경우입니다.메서드 이름이 길어지고 메서드가 인수를 사용하기 시작하면 이 스타일의 필요성이 더욱 분명해집니다.
subkeyword = Session.query(Subkeyword.subkeyword_id, Subkeyword.subkeyword_word) \
.filter_by(subkeyword_company_id=self.e_company_id) \
.filter_by(subkeyword_word=subkeyword_word) \
.filter_by(subkeyword_active=True) \
.one()
PEP 8은 상식의 척도이자 실용적이고 아름다운 것을 보는 눈으로 해석됩니다.코드를 읽기 어렵거나 추하게 만드는 PEP 8 지침을 기꺼이 위반합니다.
그렇긴 하지만, 만약 여러분이 PEP 8과 자주 대립하는 것을 발견한다면, 그것은 여러분의 공백 선택을 초월하는 가독성 문제가 있다는 신호일 수 있습니다 :-)
제 개인적인 선택은 다음과 같습니다.
하위 키워드 = 세션.쿼리(하위 키워드.하위 키워드_id,하위 키워드.하위 키워드_word,.filter_by(하위 키워드_company_id=self.e_company_id,하위 키워드_word=하위 키워드_word,하위 키워드_active=진실의,한 가지 일
중간 결과/객체를 저장하고 다음 메소드를 호출합니다.
q = Session.query(Subkeyword.subkeyword_id, Subkeyword.subkeyword_word)
q = q.filter_by(subkeyword_company_id=self.e_company_id)
q = q.filter_by(subkeyword_word=subkeyword_word)
q = q.filter_by(subkeyword_active=True)
subkeyword = q.one()
이것은 다른 사람들이 제공하는 것과는 약간 다른 솔루션이지만 가끔 멋진 메타프로그래밍으로 이어지기 때문에 제가 가장 좋아하는 솔루션입니다.
base = [Subkeyword.subkeyword_id, Subkeyword_word]
search = {
'subkeyword_company_id':self.e_company_id,
'subkeyword_word':subkeyword_word,
'subkeyword_active':True,
}
subkeyword = Session.query(*base).filter_by(**search).one()
이것은 검색을 구축하는 데 유용한 기술입니다.복잡한 쿼리 양식(또는 사용자가 찾고 있는 항목에 대한 문자열 기반 추론)에서 마이닝할 조건 목록을 검토한 다음 필터에 사전을 폭발시킵니다.
Python 언어 참조에 따름
백슬래시를 사용할 수 있습니다.
아니면 그냥 깨버리던가요.괄호가 쌍을 이루지 않으면 python은 이를 줄로 처리하지 않습니다.그리고 그러한 상황에서, 다음 라인의 들여쓰기는 중요하지 않습니다.
SQLAlchemy를 사용하는 것 같습니다. 사실이라면 method는 여러 키워드 인수를 사용하므로 다음과 같이 쓸 수 있습니다.
subkeyword = Session.query(Subkeyword.subkeyword_id,
Subkeyword.subkeyword_word) \
.filter_by(subkeyword_company_id=self.e_company_id,
subkeyword_word=subkeyword_word,
subkeyword_active=True) \
.one()
하지만 더 좋을 것입니다.
subkeyword = Session.query(Subkeyword.subkeyword_id,
Subkeyword.subkeyword_word)
subkeyword = subkeyword.filter_by(subkeyword_company_id=self.e_company_id,
subkeyword_word=subkeyword_word,
subkeyword_active=True)
subkeuword = subkeyword.one()
저는 다음과 같이 두 블록으로 인수를 들여쓰기하고 한 블록으로 문장을 들여쓰기를 원합니다.
for image_pathname in image_directory.iterdir():
image = cv2.imread(str(image_pathname))
input_image = np.resize(
image, (height, width, 3)
).transpose((2,0,1)).reshape(1, 3, height, width)
net.forward_all(data=input_image)
segmentation_index = net.blobs[
'argmax'
].data.squeeze().transpose(1,2,0).astype(np.uint8)
segmentation = np.empty(segmentation_index.shape, dtype=np.uint8)
cv2.LUT(segmentation_index, label_colours, segmentation)
prediction_pathname = prediction_directory / image_pathname.name
cv2.imwrite(str(prediction_pathname), segmentation)
상위 답변의 약간의 변형: 주요 목적(Session
가 맨 위 줄에 유지되고 단일 들여쓰기가 사용됩니다.이를 통해 메인 객체와 이후에 연결된 모든 메서드 호출을 신속하게 식별할 수 있습니다.
subkeyword = (Session
.query(Subkeyword.subkeyword_id, Subkeyword.subkeyword_word)
.filter_by(subkeyword_company_id=self.e_company_id)
.filter_by(subkeyword_word=subkeyword_word)
.filter_by(subkeyword_active=True)
.one()
)
언급URL : https://stackoverflow.com/questions/4768941/how-to-break-a-line-of-chained-methods-in-python
'programing' 카테고리의 다른 글
내 블록 크기 오라클 쿼리 (0) | 2023.06.29 |
---|---|
DataGrip에서 서버 출력을 설정하는 방법 (0) | 2023.06.29 |
프로그램을 종료하기 전에 작업 수행 (0) | 2023.06.24 |
데이터베이스 및 데이터 파일의 모든 테이블스페이스를 표시하기 위한 쿼리 (0) | 2023.06.24 |
클래스 방법 대 클래스 필드 함수 대 클래스 필드 화살표 함수의 차이점은 무엇입니까? (0) | 2023.06.24 |