범위
Java를 공부한 학생들은 Java 클래스가 공개(public) 또는 비공개(private) 메서드와 속성을 정의할 수 있다는 것을 알고 있습니다. 이는 주로 일부 기능과 속성을 다른 사람이 사용할 수 있거나 다른 사람만 사용할 수 있기를 바랍니다. 사용. Python의 모듈에 대해 배우면 실제로 Java의 클래스와 유사합니다. 그러면 모듈에서 일부 함수와 변수는 다른 함수와 변수에 의해 사용되고 일부 함수와 변수는 모듈 내부에서만 사용된다는 것을 어떻게 알 수 있습니까?
Python에서는 _ 접두사를 통해 이를 수행합니다. 일반 함수 및 변수 이름은 공용이며 abc, ni12, PI 등과 같이 직접 참조할 수 있습니다. __xxx__와 같은 변수는 특수 변수이며 직접 참조할 수 있지만 위와 같이 특수 목적을 갖습니다. 특수 변수이며, __author__도 작성자를 나타내는 데 사용되는 특수 변수입니다. 자체 변수는 일반적으로 이러한 변수 이름을 사용하지 않습니다. _xxx 및 __xxx와 같은 함수 또는 변수는 비공개(비공개)이므로 _abc, __abc 등과 같이 직접 참조해서는 안 됩니다. 안 돼, 안 돼. 그러나 Python에서는 비공개 함수나 변수에 대한 액세스를 완전히 제한할 수 있는 방법이 없기 때문에 프로그래밍 습관에서 비공개 함수나 변수를 참조해서는 안 됩니다.
예:
#!/usr/bin/env python3 # -*- coding: UTF-8 -*- def _diamond_vip(lv): print('尊敬的钻石会员用户,您好') vip_name = 'DiamondVIP' + str(lv) return vip_name def _gold_vip(lv): print('尊敬的黄金会员用户,您好') vip_name = 'GoldVIP' + str(lv) return vip_name def vip_lv_name(lv): if lv == 1: print(_gold_vip(lv)) elif lv == 2: print(_diamond_vip(lv)) vip_lv_name(2)
출력 결과:
尊敬的钻石会员用户,您好 DiamondVIP2
이 모듈에서는 vip_lv_name 메서드 함수를 노출하고 기타 내부 논리는 각각 _diamond_vip 및 _gold_vip 비공개 함수에 구현됩니다. caller 이 함수 메소드는 전혀 신경 쓸 필요가 없고 vip_lv_name의 메소드 함수 호출에만 관심이 있으므로 private을 사용하는 것은 코드 캡슐화 및 추상화에 매우 유용한 방법입니다
일반적으로 필요하지 않은 모든 함수는 외부에서 참조되는 함수만 private으로 정의하고, 참조가 필요한 외부 함수만 public으로 정의합니다.