1. 패키지 이름, 모듈 이름, 로컬 변수 이름, 함수 이름
모두 소문자 + 밑줄 카멜 표기
예: this_is_var
2. >
모두 대문자 + 밑줄 카멜 케이스예: GLOBAL_VAR3, 클래스 이름첫 글자를 대문자로 한 카멜 케이스예: ClassName( )넷째, 밑줄에 대해 은 단일 밑줄로 시작하는데 이는 약한 내부 사용 식별자입니다. from M import *, 객체는 가져오지 않습니다(Python의 모든 것은 물체). 이중 밑줄로 시작하는 변수 이름은 주로 내부적으로 클래스를 비공개로 식별하는 데 사용되며 직접 액세스할 수 없습니다. 모듈에 사용하려면 이전 항목을 참조하세요. 이중 밑줄로 시작하고 이중 밑줄로 끝나는 명명 방법을 사용하지 마십시오. 1의 식별자 예: 변수 var_1, _var_2, __var_3은 module_1 모듈 #module_1var_1_var_2__var_3module_2 모듈의 코드#module_2_error ''' 以下划线开头的变量不会别导入 ''' from module_1 import * print var_1 print _var_2 #将报错 print __var_3 #将报错
#module_2_solution from module_1 import * # 导入所有的不是下划线开头的对象 from module_1 import _var_2, __var_3 # 显式导入下划线开头的对象 print var_1 print _var_2 # 不会报错 print __var_3 # 不会报错
#module_error ''' 双下划线开头的变量不能被直接访问 ''' class MyClass(): def __init__(self): self.var_1 = 1 self._var_2 = 2 self.__var_3 = 3 if __name__=="__main__": obj = MyClass() print obj.var_1 print obj._var_2 print obj.__var_3 # 这里将会出错
#module_solution ''' 需要定义函数来获取双下划线开头的变量 ''' class MyClass(): def __init__(self): self.var_1 = 1 self._var_2 = 2 self.__var_3 = 3 def get_var_3(self): return self.__var_3 if __name__=="__main__": obj = MyClass() print obj.var_1 print obj._var_2 print obj.get_var_3() # 不会再报错