2017-11-03 8 views
0

그래서 저는 xlsxwriter를 좋아합니다. 아마 나의 접근법에서 "unpythonic"을하고있을 것입니다.하지만 외부 파일을 사용하여 내 형식을 정의하여 다른 모든 코드로 가져올 수 있도록하고 싶습니다. 형식 코드를 반복적으로 복제하지 않고도 일관된 형식을 가질 수 있습니다. 나는이 내용으로 "table_formats.py"라는 파일을 만들 경우 과잉 단순화 된 예를 들어 외부 모듈에서 xlsxwriter 형식을 어떻게 정의합니까?

:

def format_tables(myworkbook): 
     # Create a format for a bolded title: 
     myheader_format = myworkbook.add_format({ 
      'bold': True, 
      'font_size': 14, 
      'text_wrap': False 
     }) 

... 다음, 여기에 다른 코드의 무리를 건너 뛰는, 그 add_format 전화 내 메인 프로그램 내에서 기능 :

myworksheet.write(whichrow, whichcol, 'Big Data', myheader_format) 
:

from table_formats import * 
    format_tables(myworkbook) 

... 오류없이 실행,하지만 나는이 같은 형식을 사용하려고 할 때 0

... 그것은 오류가 발생합니다 :

NameError: name 'myheader_format' is not defined 

참고 :이 같은 파이썬 파일에있는 경우 내 형식들이 외부 모듈에서 함수를 정의 다만하지 않을 경우 작동합니다. 나는 이것이 일반적인 디자인 패턴이라고 생각하지만 유사한 질문은 게시하지 않았다. 나는 파이썬에 상당히 익숙하다. 그래서 다시 근본적으로 "unpythonic"일 수도있다. 어떤 도움을 주셔서 감사합니다!

+0

이 명시 적으로 나는 경우 하나의 형식 작동하는 것 같다 당신은 새로 생성 된 형식을 반환하는 함수를 변경할 수 있습니다

그 하나의 형식을 반환하지만 이상적으로 내가 만든 각 통합 문서에 12 개 이상의 형식을 추가하고 싶습니다. 각 형식을 반환하는 12 가지 + 함수를 정의하는 가장 좋은 방법은 무엇입니까? – Mike

답변

1

format_tables 함수는 함수를 호출하는 순간 사라지는 지역 변수 만 선언합니다.

def format_tables(workbook): 
    # Create a format for a bolded title: 
    myheader_format = workbook.add_format({ 
     'bold': True, 
     'font_size': 14, 
     'text_wrap': False 
    }) 
    return myheader_format 

와 같은 다른 모듈에서 사용 : BTW

from table_formats import format_tables 
myheader_format = format_tables(myworkbook) 
+0

@Kos에 감사드립니다. 그게 하나의 형식으로 작동하지만 이상적으로 내가 만든 각 통합 문서에 12 개 이상의 형식을 추가하고 싶습니다. 각 형식을 반환하는 12 가지 + 함수를 정의하는 유일한 방법입니까? – Mike

+0

모든 포맷을 생성하고'dict'에서 모든 포맷을 반환하는 함수를 작성하면 도움이 될까요? – Kos