2017-01-15 2 views
3

:파이썬, 기능이 포함 수입

def imports(): 
    import pandas as pd 
    import numpy as np 
    etc... 
모듈로 평 파일에 저장

내 Jupyter 노트북에서 해당 함수를 호출합니다. 이것은 노트북을 정리하기위한 것입니다. 그러나 가져 오기 문을 포함하는 함수를 작성하는 것이 효과가없는 것 같습니까? (오류 NameError: name 'pd' is not defined이 표시됩니다.) 왜 그 사람이 누군지 압니까?

+0

'import pandas as pd'는 변수'pd'를 만듭니다. 귀하의 경우 변수는 함수에 대해 로컬이며 외부에는 표시되지 않습니다. – DyZ

+0

@DYZ 주위에 방법이 있습니까? 어쩌면''... '을 글로벌이라고 선언 할 것인가? – Radar

답변

4

, 모듈에 넣어 당신이 원하는 모든 가져 오기 문을 당신은 일반적으로 그들에게

contents_of_your_module.py

import pandas as pd 
import numpy as np 
import itertools 
import seaborn as sns 

을 넣어 것 같이 전역 변수로 가져온 모듈에 바로 가기를 선언

다음 Jupyter에서 가져 오기

from contents_of_your_module import * 

또는, 당신은 당신의 모듈에 대한 네임 스페이스를 만들고이

import contents_of_you_module as radar 

을 그리고 당신은 당신의 이름 공간을 통해 모든 모듈에 액세스 할 수 있습니다 일반적으로

radar.pd.DataFrame 
+0

훌륭한 답변과 평소와 같이 유익한 정보. 그러나 저는 DYZ의 해결책이 제가 생각하는 것 이상이라고 생각합니다. 그러나 thx! – Radar

+0

@Radar 기꺼이 도와 드리겠습니다. DYZ는 훌륭한 답을 제공했습니다. – piRSquared

3

import pandas as pd은 변수 pd을 생성합니다. 귀하의 경우 변수는 함수에 대해 로컬이며 외부에는 표시되지 않습니다.

대신
def imports(): 
    global pd, np 
    import pandas as pd 
    import numpy as np 
+0

변수를 전역 변수로 선언 할 수 있습니까? 나는. 공연 기간 등에서 그렇지 않으면 내가 생각했던 것입니다. – Radar

+1

"어쨌든,"그대로 "수입"하는 것만으로도 글로벌이 될 것입니다. – DyZ

+0

실제로 어떻게 든이 작동하지 않습니다 – Radar

0

, 내가 것 당신이하고 싶은 일을하는 것은 아주 나쁜 습관이라고 말하라. 당신이 묘사하는 것을 정확하게하고 싶다면 당신은 파이썬적인 방법으로 그것을 할 수 없습니다.

그러나 이것은 아마 작동 할 수있는 솔루션입니다 :

당신이 imports.py라는 모듈이 척, 모든 수입 처리해야 :

파일 : imports.py : import numpy as np import pandas as pd

프로그램에서 함수를 사용할 수 있습니다.

def do_funky_import_from(): from imports import *