매일 학습 '종류 () 및 분류 ()'사이의 차이 '평가 ()와 간부 ()'의 차이

학습 새로운 지식 일일 요약

그리고 차이의 정렬 종류 (인터뷰에해야 할 수도 있습니다)

먼저 진술 :
영구적 인 과정, 다음 예제 : 정렬 방법은 목록이 치료 참고 정렬 할 수 있습니다 목록 (리스트)에 적용된다 :

lis = [1, 3, 45, 34, 23, 55, 18]
lis.sort()   # 永久性的改变顺序
print(lis.sort())  # None
#为了避免人们误解,python设计者用返回值为None的方法告诉我们,原来的列表已经被改变了。
print(lis)   #[1, 3, 18, 23, 34, 45, 55]  验证 sort() 是永久性改变顺序

정렬 정렬 작업은 모든 반복 가능 객체를 위해 만들어 질 수있다

lis = [1, 3, 45, 34, 23, 55, 18]
lis1 = sorted(lis)
print(lis1)   #[1, 3, 18, 23, 34, 45, 55]  进行了排序,临时性的
print(lis)    #[1, 3, 45, 34, 23, 55, 18]  验证 sorted 临时排序
aaa=sorted({1: 'D', 2: 'B', 3: 'B', 4: 'E', 5: 'A'})
print(aaa)  #[1, 2, 3, 4, 5]  这里没看懂

목록 정렬 방법은 기존 작업의 목록을 반환 (반환 값은 None입니다)

내장 된 기능은 원래의 기초로 운용하기보다는, 새로운 정렬 된 목록을 반환

평가 () 및 간부의 차이 ()에

첫 번째 문장 요약 :
평가는 지정된 식의 값을 계산하는 간단한 연산 식을 수행 할 수 있으며, 할당의 모든 유형을 지원하지 않습니다

평가 함수 정의 :

eval(expression, globals=None, locals=None)

식 : 필수 파라미터는 문자열 또는 임의의 코드가 객체 인스턴스 (함수를 생성 할 수 컴파일) 일 수있다. 이 문자열 인 경우, (글로벌과 로컬 네임 스페이스로 전역과 지역 주민의 인수를 사용)를 파이썬 발현 분석 및 해석 처리됩니다.

전역 : 선택적 매개 변수는 전역 이름 공간을 나타낸다는 (글로벌 변수를 저장하기 위해), 제공되는 경우, 사전 객체 여야합니다.

지역 주민들은 : 현재 로컬 네임 스페이스 (지역 변수를 저장) 나타내는 선택적 매개 변수가 제공되는 경우 어떤지도 객체가 될 수 있습니다. 이 매개 변수를 무시한다면, 그것은 전역에게 같은 값을 취할 것입니다.

전역과 지역 주민을 무시하는 경우, 그들은 평가 () 전역 네임 스페이스가 환경 기능과 로컬 네임 스페이스라고 걸릴 것입니다.

반환 값 :

발현이 타겟 코드이고, 상기 오브젝트 코드를 생성하면, 모드 파라미터는 함수 "Exec에서 '이면 eval () 함수가 없음의 값을 반환되어 컴파일;

그렇지 않으면, 표현은 인쇄로 출력 문을, (), 평가 후면은 () 없음의 값을 반환하는 경우;

그렇지 않으면, 그 결과는 함수의 평가 식 ()의 반환 값의 표현이고;

x = 10
def func():
  y = 20
  a = eval('x + y')
  print('a: ', a)
  b = eval('x + y', {'x': 1, 'y': 2})
  print('b: ', b)
  c = eval('x + y', {'x': 1, 'y': 2}, {'y': 3, 'z': 4})
  print('c: ', c)
  d = eval('print(x, y)')
  print('d: ', d)
func()

a: 30
b: 3
c: 4
d: None
  

출력의 해석 :

Y는 = 20, X = 10 : 변수 A, 전역과 지역 주민을위한 평가 함수 파라미터는 무시되므로, 변수 X와 Y는 모두 가변으로하는 평가 기능의 범위에 따라, 즉 환경 값 불린다 = X + Y = 30

변수 B 만 제공된 평가 함수 파라미터 전역 주민 무시 파라미터, 즉 열차 전역 변수의 값을 취한다 : = X + Y = 3 X = 1, Y = 2, B

변수 C는 전역 및 주민 평가 함수 파라미터가 제공되어, 지역 주민의 로컬 범위, 즉 변수 Y를 찾기 위해, 범위 내의 모든 전역 확인할 변수 x를 시작 평가 함수 : X = 1, Y는 = 3 , C = X + Y = 4

변수 D를 들어, 인쇄 () 함수를 계산하지 않고 계산식되지 않고, 따라서 없음을 반환하지 않기 때문에

Exec은 () : 복잡한 간부 파이썬 코드를 수행 할 수있는 동적 실행 파이썬 코드를 나타내고

기능 정의 :

exec(object[, globals[, locals]])

매개 변수 :

대상 : 필수 매개 변수는 파이썬 코드를 지정해야합니다 나타냅니다. 그것은 문자열 또는 코드 개체를해야합니다. 객체가 먼저 파이썬 문 세트에 해결하고, (구문 오류가 발생하지 않는 한)를 실행하는 문자열입니다 경우. 오브젝트 코드 객체 인 경우, 그것은 단순한 실행합니다.

전역 : 선택적 매개 변수의 평가 기능

주민 : 선택적 매개 변수의 평가 기능

반환 값 :

함수의 간부 반환 값은 항상 없음입니다.

파이썬이 간부의 함수 인 것이 아니라, 내장 문 (문)하지만, 파이썬 2의 execfile () 함수를했다. 파이썬 3은 문과 갈 수있는 execfile 간부를 () 함수는 새로운 간부 (기능)에 통합하는 기능입니다 통과 할 때 그것은 이해 될 수있다.

() 함수 () 함수 평가 간부 간의 차이

평가 () 함수 만 계산치 단일 발현 간부 () 함수를 동적으로 실행할 수있는 반면, 코드 세그먼트.

평가 () 함수는 값을 반환 할 수 있으며, 간부 () 함수는 값은 항상 없음입니다 반환합니다.

예 : 우리는 예 1에 넣어은 시도 간부 인 함수 eval 함수에 의해 대체된다 :

x = 10
def func():
  y = 20
  a = exec('x + y')
  print('a: ', a)
  b = exec('x + y', {'x': 1, 'y': 2})
  print('b: ', b)
  c = exec('x + y', {'x': 1, 'y': 2}, {'y': 3, 'z': 4})
  print('c: ', c)
  d = exec('print(x, y)')
  print('d: ', d)
func()

输出结果:
a: None
b: None
c: None
d: None

예 두

x = 10
expr = """
z = 30
sum = x + y + z
print(sum)
"""
def func():
  y = 20
  exec(expr)
  exec(expr, {'x': 1, 'y': 2})
  exec(expr, {'x': 1, 'y': 2}, {'y': 3, 'z': 4})
func()

输出结果:
60
33
34

출력의 해석 :

상기 설명과 첫 두 출력의 실행 동안 평가 함수와 같이, 너무 많은 설명을하지 않는다. X = 1, Y = 3은 의심의 여지가있다 : 마지막 번호 34에 대해서는, 해당 알 수있다. 이유는 실제로 매우 간단 Z 또는 대신 사 30에, 우리는 할 수 있습니다 합리적인 코드 실행 프로세스를 볼 필요가, 그 실행에 동일합니다 :

x = 1
y = 2
def func():
  y = 3
  z = 4
  z = 30
  sum = x + y + z
  print(sum)
func()

추천

출처www.cnblogs.com/chmily/p/11720929.html