기본 Python 범위를 흐트러뜨리지 마십시오.
global
와 nonlocal
키워드를 너무 자주 사용해서는 안 된다.나는 디버깅과 읽기가 매우 어렵다고 생각한다.새로 온 사람들은 대국을 코드의 원시 저자로 보지 않을 수도 있다.따라서 이 테스트를 사용할 때, 미래에 파괴되지 않고, 이해하기 쉽도록 엄밀한 테스트 집합을 유지한다.나는 어떻게 사용하는지 이해하기 위해 읽기 테스트를 하는 경향이 있다.왜 안 써요? -나는 이것이 코드를 그렇게 모듈화하지 않게 한다고 생각한다.그래서 같은 코드 단원에서만 사용한다.
예를 들어,
https://github.com/aws-samples/aws-concurrent-data-orchestration-pipeline-emr-livy/blob/master/dags/airflowlib/emr_lib.py
def client(region_name):
global emr # <-- (1)
emr = boto3.client ('emr', region_name=region_name)
... other functions...
def get_cluster_dns(cluster_id):
response = emr.describe_cluster(ClusterId=cluster_id)
return response['Cluster']['MasterPublicDnsName']
... other functions...
나는 이것이 좋은 예라고 생각하지 않는다. (나는 차라리 이 함수들을 emr
속성을 가진 클래스에 수집하고 싶다.) 그러나 적어도 그것은 이해할 수 있다.컴파일러는 먼저 "client"방법을 호출해서 초기화한 다음에 이 파일의 다른 함수를 호출할 계획이다.언제 정확하게 사용할 것인지
global
와 nonlocal
를 설명하는 다른 예를 생각해 낼 수 있다면 토론에서 논평을 해 주십시오.
Reference
이 문제에 관하여(기본 Python 범위를 흐트러뜨리지 마십시오.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/mzsrtgzr2/don-t-mess-with-default-python-scoping-5bg7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)