2010-05-25 3 views

답변

11

from GTG import __ 함수를 모듈에서 "현재"네임 스페이스로 가져옵니다.

일반적으로 _ 함수는 주어진 메시지의 지역화 된 버전을 나타내는 gettext.gettext() 함수의 별칭입니다.

그것은 파이썬에서 특별한 의미를 _`이없는`언급 할 가치가
import gettext 
gettext.bindtextdomain('myapplication', '/path/to/my/language/directory') 
gettext.textdomain('myapplication') 
_ = gettext.gettext 
# ... 
print _('This is a translatable string.') 
+0

안녕하세요 고마워, 이건 정말 도움이됩니다. 나는 BLA import bla 구문으로부터 일반적인 것을 알고 있었기 때문에이 컨벤션에 대해 알아내는 것이 실제로 내가 찾던 것이었다! 그런 속기를 사용하면 훨씬 더 의미가 있습니다. 고맙습니다. – Paul

+0

@bp 공정 사용. 게다가 문서를 읽는 것은 재산권이 있다고 주장하는 것보다 파이썬 문화에서 더 가치가 있다고 생각합니다. – twneale

4

이 함수/클래스/모듈 _을 현재 네임 스페이스로 가져옵니다. 따라서 GTG._을 입력하는 대신 _을 입력하면됩니다.

http://docs.python.org/tutorial/modules.html#more-on-modules

당신이주의 이것을 사용한다는 것을 주목해야한다 : 여기

몇 가지 문서입니다. 이 작업을 너무 많이하면 현재 네임 스페이스가 오염되어 코드를 읽기가 어려워지고 런타임 오류가 발생할 수 있습니다. 또한 결코 절대로 이렇게하지 마십시오 :

from MODULE import * 

, 이는 현재 네임 스페이스를 매우 오염시킵니다.

이 기법은 나열된 애셋 만 가져 오기 때문에 모듈에서 하나 또는 두 개의 함수/클래스/모듈 만 사용하려는 경우에 가장 유용합니다. 나는 itertools 모듈에서 imap 기능을 사용하려면, 그리고 내가 다른 itertools 기능이 필요하지 않습니다 알고있는 경우

예를 들어, 나는

from itertools import imap 

을 쓸 수 있고 그것은 단지 imap를 가져올 것 기능. 앞서 말했듯이

,이는 그것이 정확히 imap 모듈에서 어느 만들면서 어떤 사람들은

import itertools 

# ... more code ... 

new_list = itertools.imap(my_func, my_list) 

from itertools import imap 

# ... more code ... 

new_list = imap(my_func, my_list) 

보다 더 읽을 수 있다고 생각 수 있으므로주의해서 사용해야합니다 기능은에서왔다.

+8

, 그냥 다른 글자 모양입니다 : 문서는 보통 멀리, 멀리 모듈에 다른 곳에서 무슨 일이 일어나고 있는지의 사진을 제공합니다 문자를 사용하여 변수의 이름을 지정할 수 있습니다. –

+0

@Paul, 감사합니다. 나는 일반적인 'GTG import bla'문법을 알고 있었지만 _ 나를 혼란스럽게 만들었다. 이제는 이전에 GTG 패키지 폴더에 _.py 파일이 있어야한다고 생각했지만 잘못된 것 같습니다. GTG/폴더에있는 '__init__.py'파일의 줄이 '_ = translation입니다.gettext ' 그래서 나는 그게 전부라고 생각합니다. 누군가가 그런 기이 한 방식으로 함수의 이름을 지정하고 싶습니다. – Paul

+0

@DavidZ 완전히 사실이 아닙니다. from fibo import *는 밑줄 (_)로 시작하는 이름을 제외한 모든 이름을 가져옵니다. –

관련 문제