1. 글로벌 변수와 로컬 변수
이 두 변수는 다른 언어의 변수와 동일합니다. 글로벌 변수는 단순히 코드 전체에서 사용할 수 있는 변수이며, 로컬 변수는 다음과 같습니다. 제한된 범위, 종종 코드 영역 내에서.
함수에서 전역변수의 값을 변경하지 않고 그냥 호출하면 전혀 문제가 없으나, 특별한 조치 없이 함수에서 전역변수의 값을 변경하려는 경우에는 주의하셔야 합니다. 처리, Python 언어는 호출된 전역 변수와 동일한 이름을 가진 지역 변수를 자동으로 생성하여 이 상황을 처리합니다. 즉, 전역 변수는 보호되고 변수에 대한 작업은 전역 변수의 값에 영향을 미치지 않습니다. (바뀐 것처럼 보이지만)
예를 들어 다음 프로그램에서 함수 내에서 count의 값이 바뀌어도 함수 외부에 출력되는 count의 값은 여전히 5입니다.
count=5def Myfun(): count=10 print(count) Myfun() print(count)
함수 내에서 전역 변수의 값을 수정해야 하는 경우 global 키워드를 사용하여 함수 내에서 변수를 수정할 수 있습니다. 이는 해당 작업이 전역 변수에 대한 작업임을 의미합니다. , 전역 변수를 생성하는 것이 아니라 지역 변수와 동일합니다.
print("======使用global之后的变量======") count=5def Myfun(): global count#声明与赋值不能一块进行 count=10 print(count) Myfun() print(count)
2. 내장(내부) 함수
간단히 말하면 내장 함수는 함수 내부에 정의된 함수입니다.
주의할 점: 내부 함수는 함수 호출 외부에서만 호출할 수 있습니다. , 하지만 외부에서 호출할 수는 없습니다. 즉, 누가 그것을 소유하든지 누가 그것을 사용할 권리를 갖는가입니다.
print("======内部函数的使用======")def fun1(): print("fun1()正在被调用") def fun2(): print("fun2()正在被调用") fun2() fun1()
3. 클로저
클로저는 내장 함수가 외부 함수를 호출하는 데 사용하는 매개변수입니다.
이런 종류의 함수를 호출할 때는 특별한 주의가 필요합니다.
def funX(x): def funY(y): return x*y return funY print(funX(5)(8))
4. 클로저의 변수 문제
다음 코드는 실행 시 오류를 보고합니다. 외부 함수의 매개변수가 내장된 함수 내부에서 호출되고, 매개변수 x가 Fun2() 함수의 전역 변수이기 때문에 차폐 효과로 인해 함수 오류가 발생합니다.
def Fun1(): x=5 def Fun2(): x*=x return x return Fun2()#Fun1()
위 문제를 해결하는 방법에는 두 가지가 있습니다.
하나는 스택이 아닌 데이터 구조를 사용하여 문제를 해결하는 것입니다.
다른 하나는 다음을 사용하는 것입니다. 문제를 해결하려면 nonlocal 키워드
#一种解决办法就是使用非栈存储,使用序列等来存储def Fun1(): x=[5] def Fun2(): x[0]*=x[0] return x[0] return Fun2() print(Fun1(),"\n")#在一种解决办法就是使用nonlocal关键字def Fun3(): x=5 def Fun4(): nonlocal x x*=x return x return Fun4() print(Fun3())
함수에 포함된 변수에 대해 신중하게 생각해야 합니다. 결국 앞서 배운 내용과 몇 가지 차이점이 있습니다.
위는 Python의 zero-based 소개에 나오는 7가지 변수와 내장 함수에 대한 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!