목차
generator, 생성기 개체를 생성하는 방법에는 두 가지가 있습니다. 하나는 괄호를 사용한 목록 생성입니다.
Python의 for 루프에서 사용할 수 있는 것은 iterable Iterable이라고 하며, list/set/tuple/str/dict 및 기타 데이터 구조와 생성기를 포함하여 다음 명령문을 사용하여 객체가 반복 가능한지 여부를 확인할 수 있습니다.
list는 삽입을 지원하지 않습니다.
py3과 py2의 차이점
什么是元类? 使用场景
GIL(Global Interpreter Lock)
全局解释器锁
GIL的设计初衷?
为什么要加在解释器,而不是在其他层?
GIL的实现是线程不安全?为什么?
什么是 lambda 表达式?
什么是深拷贝和浅拷贝?
백엔드 개발 파이썬 튜토리얼 Python 8부작 에세이에 대해 이야기해 봅시다.

Python 8부작 에세이에 대해 이야기해 봅시다.

Apr 13, 2023 pm 03:10 PM
python 문서 회로망

동지 여러분, 오늘은 Python의 기본 문제를 검토하도록 안내하겠습니다. Python이 해석된 언어이고 효율성이 다른 언어보다 낮다는 것은 모두 알고 있지만, 구매하세요. 이것은 많은 시나리오에서는 사소한 일입니다

이해하기 쉽고 배우기 쉬운 구문으로 짧은 시간에 더 많은 작업을 완료할 수 있으며 개발 효율성도 높아집니다

동시에 Python이 함께 제공됩니다. 만들어진 라이브러리는 프로그램 개발에 사용할 수 있습니다. Python은 네트워크, 파일, GUI, 데이터베이스, 텍스트 등과 같은 많은 내용을 포함하는 매우 완전한 기본 코드 라이브러리를 제공합니다. . "내장 배터리 (배터리 포함)"라고 생생하게 알려져 있습니다. Python으로 개발되었으므로 많은 함수를 처음부터 작성할 필요가 없으며 이미 만들어진 함수를 사용하면 됩니다.

Python에는 내장 라이브러리 외에도 다른 사람들이 직접 사용할 수 있도록 개발한 타사 라이브러리도 많이 있습니다. 물론, 개발한 코드가 잘 캡슐화되어 있으면 다른 사람이 사용할 수 있는 타사 라이브러리로도 사용할 수 있습니다.

Python 생성기란 무엇인가요?

generator, 생성기 개체를 생성하는 방법에는 두 가지가 있습니다. 하나는 괄호를 사용한 목록 생성입니다.

g1 = (x for x in range(10))

다른 하나는 함수 정의에 있습니다. Yield 키워드가 포함되어 있습니다. :

def fib(max):
n, a, b = 0, 0, 1
while n < max:yield b
a, b = b, a + b
n = n + 1
return 'done'g2 = fib(8)
로그인 후 복사

생성자 객체 g1과 g2의 경우, 더 이상 요소가 없으면 next(g1)을 통해 계속해서 다음 요소의 값을 얻을 수 있습니다. StopIteration 오류가 보고됩니다

for 루프를 통해 요소의 값을 가져올 수도 있습니다.

생성기의 장점은 메모리를 많이 차지하지 않고, 사용할 때 요소의 값만 계산하면 된다는 것입니다.

Python 반복자란 무엇인가요?

Python의 for 루프에서 사용할 수 있는 것은 iterable Iterable이라고 하며, list/set/tuple/str/dict 및 기타 데이터 구조와 생성기를 포함하여 다음 명령문을 사용하여 객체가 반복 가능한지 여부를 확인할 수 있습니다.

from collections import Iterableisinstance(x, Iterable)
로그인 후 복사

Iterator Iterator는 next() 함수에 의해 호출될 수 있고 StopIteration이 모두 Iterator일 때까지 계속해서 다음 값을 반환한다는 의미입니다. 그러나 목록과 같은 데이터 구조는 사용할 수 없습니다. 다음 명령문 목록은 Iterator가 됩니다.

iter([1,2,3,4,5])
로그인 후 복사

Generator는 모두 Iterator이지만 Iterator가 반드시 Generator일 필요는 없습니다.

리스트와 튜플의 차이점은 무엇인가요?

list에는 가변 길이가 있지만 튜플은 변경할 수 없습니다.

list는 요소의 값을 변경할 수 있지만

list는 삽입을 지원하지 않습니다.

    Python에서 list와 dict는 어떻게 구현되나요?
  • List: 본질적으로 순차적 테이블이지만 테이블의 확장은 매번 기하급수적입니다. 따라서 데이터가 동적으로 추가되고 삭제될 때 테이블의 물리적 구조는 자주 변경되지 않습니다. 순차 테이블 순회(angular를 통해 인덱스는 테이블 헤더의 물리적 주소와 결합되어 대상 요소의 위치를 ​​계산함)의 효율성을 활용하여 Python 목록의 전반적인 성능을 상대적으로 좋게 만듭니다

dict: 본질적으로 순차 목록이지만 각 요소의 저장 위치 인덱스는 삽입 순서에 따라 결정되지 않고 해시 알고리즘 및 기타 메커니즘을 통해 키에 의해 동적으로 생성됩니다. 값이 저장되어야 하는 위치와 값이 저장됩니다. 따라서 dict의 쿼리 시간 복잡도는 O(1)입니다. 따라서 dict의 키는 해시 가능한 객체, 즉 불변 객체만 될 수 있습니다.

파이썬에서 멀티스레딩을 사용해 멀티코어 CPU를 함께 사용할 수 있나요?

Python에는 GIL(Global Interpreter Lock)이라는 것이 있는데, 이는 여러 스레드 중 하나만 실행되도록 보장합니다.

스레드의 실행 속도는 매우 빨라서 스레드가 병렬로 실행되는 것으로 착각하게 되지만 실제로는 모두 차례로 실행됩니다. GIL 레벨 처리 후에는 실행 오버헤드가 증가합니다.

멀티 코어 작업은 여러 프로세스를 통해 달성할 수 있습니다.

py3과 py2의 차이점

print는 py3에서는 함수이지만 py2에서는 키워드일 뿐입니다

py3 파일의 기본 인코딩은 utf8이고 py2 파일의 기본 인코딩은 ascii입니다

py3의 str은 유니코드 문자열인 반면, py2의 str은 bytes

py3의 range()는 반복 가능한 객체를 반환하고, py2의 range()는 목록을 반환하고, xrange()는 반복 가능한 객체를 반환하고, py3의 Division은 float를 반환하고, py2의 나누기는 int를 반환합니다

가변 객체와 불변 객체

가변 객체: list, dict, set

불변 객체: bool, int, float, tuple, str …

반복자와 반복자의 차이점 반복 가능한 객체

Iterable 객체 클래스인 경우 __iter__() 매직 메서드를 사용자 정의해야 하며 범위 및 목록 클래스의 인스턴스화된 객체는 모두 반복 가능한 객체입니다

Iteration Iter 클래스인 경우 __iter__() 및 __next__() 매직 메소드. iter() 함수를 사용하여 반복 가능한 객체의 반복자를 만듭니다

Closure

Closure는 외부 함수의 변수 또는 매개 변수를 사용하고 외부 함수는 다음과 같습니다. 함수는 내부 함수를 반환합니다

可以保存外部函数内的变量,不会随着外部函数调用完而销毁

什么是装饰器?

装饰器是一个接收函数作为参数的闭包函数

它可以在不修改函数内部源代码的情况下,给函数添加额外的功能

import time
def calc_time(func):
def inner():
t1 = time.time()
func()
t2 = time.time()
print('cost time: {}s'.format(t2-t1))
return inner
로그인 후 복사

什么是元类? 使用场景

元类是创建类的类,type还有继承自type的类都是元类

作用: 在类定义时(new, init)和 类实例化时(call) 可以添加自定义的功能

使用场景: ORM框架中创建一个类就代表数据库中的一个表,但是定义这个类时为了统一需要把里面的类属性全部改为小写,这个时候就要用元类重写new方法,把attrs字典里的key转为小写

GIL(Global Interpreter Lock)

全局解释器锁

全局解释器锁(Global Interpreter Lock)是计算机程序设计语言解释器用于同步线程的一种机制,它使得任何时刻仅有一个线程在执行。

即便在多核处理器上,使用 GIL 的解释器也只允许同一时间执行一个线程,常见的使用 GIL 的解释器有CPython与Ruby MRI。可以看到GIL并不是Python独有的特性,是解释型语言处理多线程问题的一种机制而非语言特性。

GIL的设计初衷?

单核时代高效利用CPU, 针对解释器级别的数据安全(不是thread-safe 线程安全)。首先需要明确的是GIL并不是Python的特性,它是在实现Python解析器(CPython)时所引入的一个概念。

当Python虚拟机的线程想要调用C的原生线程需要知道线程的上下文,因为没有办法控制C的原生线程的执行,所以只能把上下文关系传给原生线程,同理获取结果也是线 程在python虚拟机这边等待。那么要执行一次计算操作,就必须让执行程序的线程组串行执行。

为什么要加在解释器,而不是在其他层?

展开 GIL锁加在解释器一层,也就是说Python调用的Cython解释器上加了GIL锁,因为你python调用的所有线程都是原生线程。原生线程是通过C语言提供原生接口,相当于C语言的一个函数。

你一调它,你就控制不了了它了,就必须等它给你返回结果。只要已通过python虚拟机 ,再往下就不受python控制了,就是C语言自己控制了。

加在Python虚拟机以下加不上去,只能加在Python解释器这一层。

GIL的实现是线程不安全?为什么?

python2.x和3.x都是在执行IO操作的时候,强制释放GIL,使其他线程有机会执行程序。

Python2.x Python使用计数器ticks计算字节码,当执行100个字节码的时候强制释放GIL,其他线程获取GIL继续执行。ticks可以看作是Python自己的计数器,专门作用于GIL,释放后归零,技术可以调整。

Python3.x Python使用计时器,执行时间达到阈值后,当前线程释放GIL。总体来说比Python3.x对CPU密集型任务更好,但是依然没有解决问题。

什么是 lambda 表达式?

简单来说,lambda表达式通常是当你需要使用一个函数,但是又不想费脑袋去命名一个函数的时候使用,也就是通常所说的匿名函数。

lambda表达式一般的形式是:关键词lambda后面紧接一个或多个参数,紧接一个冒号“:”,紧接一个表达式

什么是深拷贝和浅拷贝?

赋值(=),就是创建了对象的一个新的引用,修改其中任意一个变量都会影响到另一个。

浅拷贝 copy.copy:创建一个新的对象,但它包含的是对原始对象中包含项的引用(如果用引用的方式修改其中一个对象,另外一个也会修改改变)

深拷贝:创建一个新的对象,并且递归的复制它所包含的对象(修改其中一个,另外一个不会改变){copy模块的deep.deepcopy()函数}​

위 내용은 Python 8부작 에세이에 대해 이야기해 봅시다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 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 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

MySQL은 지불해야합니다 MySQL은 지불해야합니다 Apr 08, 2025 pm 05:36 PM

MySQL에는 무료 커뮤니티 버전과 유료 엔터프라이즈 버전이 있습니다. 커뮤니티 버전은 무료로 사용 및 수정할 수 있지만 지원은 제한되어 있으며 안정성이 낮은 응용 프로그램에 적합하며 기술 기능이 강합니다. Enterprise Edition은 안정적이고 신뢰할 수있는 고성능 데이터베이스가 필요하고 지원 비용을 기꺼이 지불하는 응용 프로그램에 대한 포괄적 인 상업적 지원을 제공합니다. 버전을 선택할 때 고려 된 요소에는 응용 프로그램 중요도, 예산 책정 및 기술 기술이 포함됩니다. 완벽한 옵션은없고 가장 적합한 옵션 만 있으므로 특정 상황에 따라 신중하게 선택해야합니다.

설치 후 MySQL을 사용하는 방법 설치 후 MySQL을 사용하는 방법 Apr 08, 2025 am 11:48 AM

이 기사는 MySQL 데이터베이스의 작동을 소개합니다. 먼저 MySQLworkBench 또는 명령 줄 클라이언트와 같은 MySQL 클라이언트를 설치해야합니다. 1. MySQL-Uroot-P 명령을 사용하여 서버에 연결하고 루트 계정 암호로 로그인하십시오. 2. CreateABase를 사용하여 데이터베이스를 작성하고 데이터베이스를 선택하십시오. 3. CreateTable을 사용하여 테이블을 만들고 필드 및 데이터 유형을 정의하십시오. 4. InsertInto를 사용하여 데이터를 삽입하고 데이터를 쿼리하고 업데이트를 통해 데이터를 업데이트하고 DELETE를 통해 데이터를 삭제하십시오. 이러한 단계를 마스터하고 일반적인 문제를 처리하는 법을 배우고 데이터베이스 성능을 최적화하면 MySQL을 효율적으로 사용할 수 있습니다.

다운로드 후 MySQL을 설치할 수 없습니다 다운로드 후 MySQL을 설치할 수 없습니다 Apr 08, 2025 am 11:24 AM

MySQL 설치 실패의 주된 이유는 다음과 같습니다. 1. 권한 문제, 관리자로 실행하거나 Sudo 명령을 사용해야합니다. 2. 종속성이 누락되었으며 관련 개발 패키지를 설치해야합니다. 3. 포트 충돌, 포트 3306을 차지하는 프로그램을 닫거나 구성 파일을 수정해야합니다. 4. 설치 패키지가 손상되어 무결성을 다운로드하여 확인해야합니다. 5. 환경 변수가 잘못 구성되었으며 운영 체제에 따라 환경 변수를 올바르게 구성해야합니다. 이러한 문제를 해결하고 각 단계를 신중하게 확인하여 MySQL을 성공적으로 설치하십시오.

MySQL 다운로드 파일이 손상되어 설치할 수 없습니다. 수리 솔루션 MySQL 다운로드 파일이 손상되어 설치할 수 없습니다. 수리 솔루션 Apr 08, 2025 am 11:21 AM

MySQL 다운로드 파일은 손상되었습니다. 어떻게해야합니까? 아아, mySQL을 다운로드하면 파일 손상을 만날 수 있습니다. 요즘 정말 쉽지 않습니다! 이 기사는 모든 사람이 우회를 피할 수 있도록이 문제를 해결하는 방법에 대해 이야기합니다. 읽은 후 손상된 MySQL 설치 패키지를 복구 할 수있을뿐만 아니라 향후에 갇히지 않도록 다운로드 및 설치 프로세스에 대해 더 깊이 이해할 수 있습니다. 파일 다운로드가 손상된 이유에 대해 먼저 이야기합시다. 이에 대한 많은 이유가 있습니다. 네트워크 문제는 범인입니다. 네트워크의 다운로드 프로세스 및 불안정성의 중단으로 인해 파일 손상이 발생할 수 있습니다. 다운로드 소스 자체에도 문제가 있습니다. 서버 파일 자체가 고장 났으며 물론 다운로드하면 고장됩니다. 또한 일부 안티 바이러스 소프트웨어의 과도한 "열정적 인"스캔으로 인해 파일 손상이 발생할 수 있습니다. 진단 문제 : 파일이 실제로 손상되었는지 확인하십시오

MySQL 설치 후 시작할 수없는 서비스에 대한 솔루션 MySQL 설치 후 시작할 수없는 서비스에 대한 솔루션 Apr 08, 2025 am 11:18 AM

MySQL이 시작을 거부 했습니까? 당황하지 말고 확인합시다! 많은 친구들이 MySQL을 설치 한 후 서비스를 시작할 수 없다는 것을 알았으며 너무 불안했습니다! 걱정하지 마십시오.이 기사는 침착하게 다루고 그 뒤에있는 마스터 마인드를 찾을 수 있습니다! 그것을 읽은 후에는이 문제를 해결할뿐만 아니라 MySQL 서비스에 대한 이해와 문제 해결 문제에 대한 아이디어를 향상시키고보다 강력한 데이터베이스 관리자가 될 수 있습니다! MySQL 서비스는 시작되지 않았으며 간단한 구성 오류에서 복잡한 시스템 문제에 이르기까지 여러 가지 이유가 있습니다. 가장 일반적인 측면부터 시작하겠습니다. 기본 지식 : 서비스 시작 프로세스 MySQL 서비스 시작에 대한 간단한 설명. 간단히 말해서 운영 체제는 MySQL 관련 파일을로드 한 다음 MySQL 데몬을 시작합니다. 여기에는 구성이 포함됩니다

MySQL은 인터넷이 필요합니까? MySQL은 인터넷이 필요합니까? Apr 08, 2025 pm 02:18 PM

MySQL은 기본 데이터 저장 및 관리를위한 네트워크 연결없이 실행할 수 있습니다. 그러나 다른 시스템과의 상호 작용, 원격 액세스 또는 복제 및 클러스터링과 같은 고급 기능을 사용하려면 네트워크 연결이 필요합니다. 또한 보안 측정 (예 : 방화벽), 성능 최적화 (올바른 네트워크 연결 선택) 및 데이터 백업은 인터넷에 연결하는 데 중요합니다.

고로드 애플리케이션의 MySQL 성능을 최적화하는 방법은 무엇입니까? 고로드 애플리케이션의 MySQL 성능을 최적화하는 방법은 무엇입니까? Apr 08, 2025 pm 06:03 PM

MySQL 데이터베이스 성능 최적화 안내서 리소스 집약적 응용 프로그램에서 MySQL 데이터베이스는 중요한 역할을 수행하며 대규모 트랜잭션 관리를 담당합니다. 그러나 응용 프로그램 규모가 확장됨에 따라 데이터베이스 성능 병목 현상은 종종 제약이됩니다. 이 기사는 일련의 효과적인 MySQL 성능 최적화 전략을 탐색하여 응용 프로그램이 고 부하에서 효율적이고 반응이 유지되도록합니다. 실제 사례를 결합하여 인덱싱, 쿼리 최적화, 데이터베이스 설계 및 캐싱과 같은 심층적 인 주요 기술을 설명합니다. 1. 데이터베이스 아키텍처 설계 및 최적화 된 데이터베이스 아키텍처는 MySQL 성능 최적화의 초석입니다. 몇 가지 핵심 원칙은 다음과 같습니다. 올바른 데이터 유형을 선택하고 요구 사항을 충족하는 가장 작은 데이터 유형을 선택하면 저장 공간을 절약 할 수있을뿐만 아니라 데이터 처리 속도를 향상시킬 수 있습니다.

MySQL 설치 후 데이터베이스 성능을 최적화하는 방법 MySQL 설치 후 데이터베이스 성능을 최적화하는 방법 Apr 08, 2025 am 11:36 AM

MySQL 성능 최적화는 설치 구성, 인덱싱 및 쿼리 최적화, 모니터링 및 튜닝의 세 가지 측면에서 시작해야합니다. 1. 설치 후 innodb_buffer_pool_size 매개 변수와 같은 서버 구성에 따라 my.cnf 파일을 조정해야합니다. 2. 과도한 인덱스를 피하기 위해 적절한 색인을 작성하고 Execution 명령을 사용하여 실행 계획을 분석하는 것과 같은 쿼리 문을 최적화합니다. 3. MySQL의 자체 모니터링 도구 (showprocesslist, showstatus)를 사용하여 데이터베이스 건강을 모니터링하고 정기적으로 백업 및 데이터베이스를 구성하십시오. 이러한 단계를 지속적으로 최적화함으로써 MySQL 데이터베이스의 성능을 향상시킬 수 있습니다.

See all articles