찾다
백엔드 개발파이썬 튜토리얼Python의 범위를 쉽게 이해하기 위한 5가지 지식 포인트에 대한 자세한 설명

파이썬의 범위에 대한 소개는 인터넷에 많이 있기 때문에 오늘 제가 공유하는 글을 통해 도움이 필요한 친구들이 참고하여 파이썬의 범위를 쉽게 이해할 수 있습니다.

">

1. 블록 수준 범위

이때 다음 프로그램을 실행하면 출력이 나올지 생각해 볼까요? 실행은 성공할까요?

#블록 수준 범위

if 1 == 1:
name = "lzl"

print(name)


for i in range( 10):
age = i

print(age)

먼저 실행 결과를 살펴보겠습니다

C:/Users/L /PycharmProjects/s14/preview/ Day8/scope/main.py
lzl
9

종료 코드 0으로 프로세스가 완료되었습니다.

코드가 성공적으로 실행되었습니다. 문제 없습니다. Java/C#, 위 코드를 실행하면 이름과 나이가 정의되지 않았다는 메시지가 표시되지만 Python에서는 블록 수준 범위가 없기 때문에 성공적으로 실행될 수 있습니다.

2. 로컬 범위

이전에 배운 지식을 되돌아보면 함수를 배울 때는 함수가 별도의 범위가 없습니다. -level 범위는 Python에 있지만 로컬 범위가 있습니다. 코드

#Local 범위

def func():
name = "lzl"

print(name)

이 섹션 코드를 실행하고 출력이 있을지 생각해 보세요.

추적(가장 최근 호출 마지막):
파일 "C:/Users/L /PycharmProjects/s14/preview/Day8/scope/main.py ", 23행,
print(name)
NameError: 이름 'name'이 정의되지 않았습니다

실행 중 오류입니다. 이름 변수는 func() 함수에만 적용되므로 전역적으로 호출할 수 없습니다. 위 코드를 간단히 조정하고 결과를 확인해 보세요.

#로컬 범위

def func():
name = "lzl"

func() #함수 실행
print(name)

추가됨 변수 이름을 인쇄하기 전에 이전 코드에 코드를 추가하고 함수를 실행하면 이때 인쇄가 변경됩니까?

추적(가장 최근 호출 마지막):
파일 "C:/Users/L/ PycharmProjects/s14/preview/Day8/Function Domain/main.py", 23행,
print(name)
NameError: 이름 'name'이 정의되지 않았습니다

실행 시 여전히 오류가 보고되므로 이전 문장으로 돌아갑니다. 단어: 함수가 실행되더라도 이름의 범위는 함수 내부에만 있고 여전히 외부에서 호출할 수 없습니다. 처음 두 가지 지식 포인트를 기억하세요. 그런 다음 트릭 확장을 시작합니다

3. 스코프 체인

함수를 조정하고 다음 코드의 실행 결과가 무엇인지 확인하세요.

#스코프 체인

name = "lzl"
def f1():
name = "Eric"
def f2():
name = " Snor"
print(name)
f2()
f1()

함수를 배웠다면 f1()이 실행된 후에 Snor가 출력된다는 점을 기억하자. 먼저 개념, Python에는 범위 체인이 있습니다. 변수는 내부에서 외부로 검색됩니다. 먼저 자신의 범위로 이동하여 찾으며, 찾을 수 없을 때까지 상위 수준으로 이동하지 않습니다. 그리고 오류 신고

4.Ultimate Scope

자, 준비는 충분히 했고, 궁극의 버전이 나왔습니다~~

#Ultimate 버전 Scope

name = "lzl"

def f1( ):
print(name)

def f2():
name = "eric"
f1()

f2()

think f2()의 최종 실행 결과로 "lzl" 또는 "eric"을 인쇄하시겠습니까? 지금 답변을 게시하지 마세요. 다음 코드를 살펴보세요.

#ULTIMATE SCOPE

name = "lzl"

def f1() :
print(name)

def f2():
name = "eric"
return f1

ret = f2()
ret()

#Output: lzl

의 실행 결과는 "lzl"입니다. 위 코드를 분석해 보면 f2()의 실행 결과는 함수 f1의 메모리 주소, 즉 ret=f1입니다. ; ret() 실행은 f1() 실행과 동일합니다. f2()와는 아무런 관련이 없습니다. name="lzl"과 f1()은 동일한 범위 체인에 있습니다. 함수 안에서는 밖에서 찾아보게 되니까 시간 변수 이름의 값이 "lzl" 이라는 걸 이해하고 나면 방금 답이 나오지 않았던 궁극의 코드에 대한 답도 알 수 있을 거에요

#Ultimate 버전 범위

name = "lzl"

def f1():
print(name)

def f2():
name = "eric"
f1()

f2 ()

# 출력: lzl

예, 출력은 "lzl"입니다. 함수가 실행되기 전에 범위가 형성되고 범위 체인도 생성되었음을 기억하세요

5. Sina 인터뷰 질문

li = [lambda :x for x in range(10)]

li 유형을 결정하시겠습니까? li의 요소는 어떤 유형입니까?

print(type(li))
print(type(li[0]))

#
#

li가 리스트 유형이고 리스트의 요소가 함수임을 알 수 있습니다. 그러면 리스트의 첫 번째 요소의 반환 값이 출력됩니다. 이때 반환 값은 무엇입니까?

#lambada 면접 질문

li = [lambda :x for x in range(10)]

res = li[0]()
print(res )

#Output: 9

li첫 번째 함수의 반환 값은 0이 아니라 9입니다. 기억하세요: 블로그의 코드는 함수가 실행되기 전에는 실행되지 않습니다. 직접 연습해보시고 인상도 깊어지세요

요약

위 글의 내용이 모두의 공부와 업무에 도움이 될지는 모르겠습니다. 질문이 있으시면 언제든지 메시지를 남겨주세요.

위 내용은 Python의 범위를 쉽게 이해하기 위한 5가지 지식 포인트에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
파이썬 목록을 어떻게 슬라이스합니까?파이썬 목록을 어떻게 슬라이스합니까?May 02, 2025 am 12:14 AM

slicepaythonlistisdoneusingthesyntaxlist [start : step : step] .here'showitworks : 1) startistheindexofthefirstelementtoinclude.2) stopistheindexofthefirstelemement.3) stepisincrementbetwetweentractionsoftortionsoflists

Numpy Array에서 수행 할 수있는 일반적인 작업은 무엇입니까?Numpy Array에서 수행 할 수있는 일반적인 작업은 무엇입니까?May 02, 2025 am 12:09 AM

NumpyAllowsForVariousOperationsOnArrays : 1) BasicArithmeticLikeadDition, Subtraction, A 및 Division; 2) AdvancedOperationsSuchasmatrixmultiplication; 3) extrayintondsfordatamanipulation; 5) Ag

파이썬으로 데이터 분석에 어레이가 어떻게 사용됩니까?파이썬으로 데이터 분석에 어레이가 어떻게 사용됩니까?May 02, 2025 am 12:09 AM

Arraysinpython, 특히 Stroughnumpyandpandas, areestentialfordataanalysis, setingspeedandefficiency

목록의 메모리 풋 프린트는 파이썬 배열의 메모리 풋 프린트와 어떻게 비교됩니까?목록의 메모리 풋 프린트는 파이썬 배열의 메모리 풋 프린트와 어떻게 비교됩니까?May 02, 2025 am 12:08 AM

ListSandnumpyArraysInpythonHavedifferentmoryfootPrints : ListSaremoreFlexibleButlessMemory-Efficer, whilumpyArraySareOptimizedFornumericalData.1) ListSTorERENFERENCESTOOBJECTS, OverHeadAround64ByTeson64-BitSyStems.2) NumpyArraysTATACONTACOTIGUOU

실행 파이썬 스크립트를 배포 할 때 환경 별 구성을 어떻게 처리합니까?실행 파이썬 스크립트를 배포 할 때 환경 별 구성을 어떻게 처리합니까?May 02, 2025 am 12:07 AM

ToensurePythonScriptTscriptsBecorrectelyRossDevelopment, Staging and Production, UsethesEStrategies : 1) EnvironmberVariblesForsimplesettings, 2) ConfigurationFilesforcomplexSetups 및 3) DynamicLoadingForAdAptability

파이썬 어레이를 어떻게 슬라이스합니까?파이썬 어레이를 어떻게 슬라이스합니까?May 01, 2025 am 12:18 AM

Python List 슬라이싱의 기본 구문은 목록 [start : stop : step]입니다. 1. Start는 첫 번째 요소 인덱스, 2.Stop은 첫 번째 요소 인덱스가 제외되고 3. Step은 요소 사이의 단계 크기를 결정합니다. 슬라이스는 데이터를 추출하는 데 사용될뿐만 아니라 목록을 수정하고 반전시키는 데 사용됩니다.

어떤 상황에서 목록이 배열보다 더 잘 수행 될 수 있습니까?어떤 상황에서 목록이 배열보다 더 잘 수행 될 수 있습니까?May 01, 2025 am 12:06 AM

ListSoutPerformArraysin : 1) DynamicsizingandFrequentInsertions/Deletions, 2) StoringHeterogeneousData 및 3) MemoryEfficiencyForsParsEdata, butMayHavesLightPerformanceCosceperationOperations.

파이썬 어레이를 파이썬 목록으로 어떻게 변환 할 수 있습니까?파이썬 어레이를 파이썬 목록으로 어떻게 변환 할 수 있습니까?May 01, 2025 am 12:05 AM

TOCONVERTAPYTHONARRAYTOALIST, USETHELIST () CONSTUCTORORAGENERATERATOREXPRESSION.1) importTheArrayModuleAndCreateAnarray.2) USELIST (ARR) 또는 [XFORXINARR] TOCONVERTITTOALIST.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

DVWA

DVWA

DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

안전한 시험 브라우저

안전한 시험 브라우저

안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.