학습 새로운 지식 일일 요약
그리고 차이의 정렬 종류 (인터뷰에해야 할 수도 있습니다)
먼저 진술 :
영구적 인 과정, 다음 예제 : 정렬 방법은 목록이 치료 참고 정렬 할 수 있습니다 목록 (리스트)에 적용된다 :
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()