2012-06-11 3 views
1

저는 초심자 Python이며 방금 패키지를 사용하기 시작했습니다.파이썬에서 함수를 호출 할 때 항상 패키지를 참조해야합니까?

패키지를 가져온 후에 함수를 호출 할 때 함수를 참조하기 위해 항상 참조해야합니까, 아니면 그냥 좋은 연습입니까?

예를 들어 pandas 패키지를 ipython에 사용하고 있습니다.

import pandas 
import numpy as np 

df = pandas.read_csv('/Users/admin/Documents/data.csv') 

함수를 호출 할 때 항상 패키지 이름을 사용해야합니까? 그렇지 않으면 항상 그것을 참조하는 것이 가장 좋은 습관입니까?

+0

에 대한 http://docs.python.org/tutorial/modules.html를 참조하십시오. – demux

답변

6

import 문을 조정하면 패키지 이름이 필요하지 않습니다. 예를 들어

:

from pandas import read_csv 
import numpy as np 

df = read_csv('/Users/admin/Documents/data.csv') 

이 관련 질문을 참조 : Importing modules in Python - best practice

1

개체에 대한 로컬 참조가있는 경우 해당 참조를 사용할 수 있습니다. 그렇지 않으면 먼저 모듈을 참조한 다음 객체에 액세스해야합니다.

2

아니, 당신은 필요가 없습니다; from [package] import [symbol] 양식을 사용하면 [기호]를 로컬 네임 스페이스로 가져올 수 있습니다. 즉, 앱이 모듈 지향적 인 것과 달리 객체 지향적 인 경우가 아니라면 (종종 모듈 중심적 인 것과는 대조적으로), 더 자주는 아니지만 위험한 요소 (가져온 이름을 실수로 재사용)와 혼란 스럽습니다. 패키지 이름을 사용하지 않을 때).

0

당신이

from pandas import * 

에 import 문을 변경하는 경우는 함수를 직접 참조 할 수있다 : 이것은 당신의 현재 이름 공간으로 가져온 패키지에 이르기까지 모든 것을 가져올 것이다

df = read_csv('/Users/admin/Documents/data.csv') 

. 임포트해야 할 부분을 지정할 수도 있습니다. 아래의 코멘트에서 논의 된 바와 같이 두 가지 접근법에 대한 장단점이 있습니다.

제 의견으로는 현재 상황에서 가장 혼란스러운 방법을 사용하십시오. :)

+3

이렇게하지 마십시오. 아주 나쁜 습관입니다. – deadly

+1

'from package import symbol '을 사용할 때 당신이 의도하지 않은 네임 스페이스로 물건을 끌어들이는 것을 피하기 위해, 필요한 심볼을 가져 오는 것이 훨씬 더 좋은 생각입니다. –

+0

@deadly 왜'import *'가 나쁜 습관입니까? 'namespace '를 덮어 쓰시겠습니까? – mikebmassey

1

python의 import 문에는 몇 가지 다른 형식이 있습니다. 당신이 pandas.으로 접두사 할 필요가 없도록,

from pandas import read_csv 

df = read_csv('/path/to/file') 

하거나 팬더 모듈에서 모든 것을 가져올 수 :

from pandas import * 

df = read_csv('/path/to/file') 

이 방법 만 가져올 read_csv 기능을이 작업을 수행 할 수 그러나 함수/클래스/변수가 어디서 왔는지를 알기 어렵 기 때문에 대개는 권장하지 않습니다.

당신은 또한 'from 팬더 가져 오기 read_csv'을 할 수있는 다음 다시 "팬더"를 작성하지 않고도 read_csv 호출 할 수있는 추가 정보를

관련 문제