모아두기 추천하는 파이썬 활용팁 20가지!
1. 혼란스러운 연산
이 섹션에서는 일부 Python의 혼란스러운 연산을 비교합니다.
1.1 치환을 사용한 무작위 샘플링과 치환 없는 무작위 샘플링
import random random.choices(seq, k=1) # 长度为k的list,有放回采样 random.sample(seq, k) # 长度为k的list,无放回采样
1.2 람다 함수의 매개변수
func = lambda y: x + y # x的值在函数运行时被绑定 func = lambda y, x=x: x + y # x的值在函数定义时被绑定
1.3 copy 및 deepcopy
import copy y = copy.copy(x) # 只复制最顶层 y = copy.deepcopy(x) # 复制所有嵌套部分
복사 및 변수 앨리어싱 결합 시 함께 사용하면 혼동하기 쉽습니다.
a = [1, 2, [3, 4]] # Alias. b_alias = a assert b_alias == a and b_alias is a # Shallow copy. b_shallow_copy = a[:] assert b_shallow_copy == a and b_shallow_copy is not a and b_shallow_copy[2] is a[2] # Deep copy. import copy b_deep_copy = copy.deepcopy(a) assert b_deep_copy == a and b_deep_copy is not a and b_deep_copy[2] is not a[2]
별칭을 수정하면 원본 변수에 영향을 미칩니다. (얕은) 복사본의 요소는 원본 목록에 있는 요소의 별칭인 반면, 전체 복사는 재귀적으로 복사됩니다. 딥 카피 수정은 원래 변수에 영향을 주지 않습니다.
2、常用工具
2.1 读写 CSV 文件
import csv # 无header的读写 with open(name, 'rt', encoding='utf-8', newline='') as f: # newline=''让Python不将换行统一处理 for row in csv.reader(f): print(row[0], row[1]) # CSV读到的数据都是str类型 with open(name, mode='wt') as f: f_csv = csv.writer(f) f_csv.writerow(['symbol', 'change']) # 有header的读写 with open(name, mode='rt', newline='') as f: for row in csv.DictReader(f): print(row['symbol'], row['change']) with open(name, mode='wt') as f: header = ['symbol', 'change'] f_csv = csv.DictWriter(f, header) f_csv.writeheader() f_csv.writerow({'symbol': xx, 'change': xx})
注意,当 CSV 文件过大时会报错:_csv.Error: field larger than field limit (131072),通过修改上限解决
import sys csv.field_size_limit(sys.maxsize)
csv 还可以读以 \t 分割的数据
f = csv.reader(f, delimiter='\t')
2.2 迭代器工具
itertools 中定义了很多迭代器工具,例如子序列工具:
import itertools itertools.islice(iterable, start=None, stop, step=None) # islice('ABCDEF', 2, None) -> C, D, E, F itertools.filterfalse(predicate, iterable) # 过滤掉predicate为False的元素 # filterfalse(lambda x: x < 5, [1, 4, 6, 4, 1]) -> 6 itertools.takewhile(predicate, iterable) # 当predicate为False时停止迭代 # takewhile(lambda x: x < 5, [1, 4, 6, 4, 1]) -> 1, 4 itertools.dropwhile(predicate, iterable) # 当predicate为False时开始迭代 # dropwhile(lambda x: x < 5, [1, 4, 6, 4, 1]) -> 6, 4, 1 itertools.compress(iterable, selectors) # 根据selectors每个元素是True或False进行选择 # compress('ABCDEF', [1, 0, 1, 0, 1, 1]) -> A, C, E, F
序列排序:
sorted(iterable, key=None, reverse=False) itertools.groupby(iterable, key=None) # 按值分组,iterable需要先被排序 # groupby(sorted([1, 4, 6, 4, 1])) -> (1, iter1), (4, iter4), (6, iter6) itertools.permutations(iterable, r=None) # 排列,返回值是Tuple # permutations('ABCD', 2) -> AB, AC, AD, BA, BC, BD, CA, CB, CD, DA, DB, DC itertools.combinations(iterable, r=None) # 组合,返回值是Tuple itertools.combinations_with_replacement(...) # combinations('ABCD', 2) -> AB, AC, AD, BC, BD, CD
多个序列合并:
itertools.chain(*iterables) # 多个序列直接拼接 # chain('ABC', 'DEF') -> A, B, C, D, E, F import heapq heapq.merge(*iterables, key=None, reverse=False) # 多个序列按顺序拼接 # merge('ABF', 'CDE') -> A, B, C, D, E, F zip(*iterables) # 当最短的序列耗尽时停止,结果只能被消耗一次 itertools.zip_longest(*iterables, fillvalue=None) # 当最长的序列耗尽时停止,结果只能被消耗一次
2.3 计数器
计数器可以统计一个可迭代对象中每个元素出现的次数。
import collections # 创建 collections.Counter(iterable) # 频次 collections.Counter[key] # key出现频次 # 返回n个出现频次最高的元素和其对应出现频次,如果n为None,返回所有元素 collections.Counter.most_common(n=None) # 插入/更新 collections.Counter.update(iterable) counter1 + counter2; counter1 - counter2 # counter加减 # 检查两个字符串的组成元素是否相同 collections.Counter(list1) == collections.Counter(list2)
2.4 带默认值的 Dict
当访问不存在的 Key 时,defaultdict 会将其设置为某个默认值。
import collections collections.defaultdict(type) # 当第一次访问dict[key]时,会无参数调用type,给dict[key]提供一个初始值
2.5 有序 Dict
import collections collections.OrderedDict(items=None) # 迭代时保留原始插入顺序
3、高性能编程和调试
3.1 输出错误和警告信息
向标准错误输出信息
import sys sys.stderr.write('')
输出警告信息
import warnings warnings.warn(message, category=UserWarning) # category的取值有DeprecationWarning, SyntaxWarning, RuntimeWarning, ResourceWarning, FutureWarning
控制警告消息的输出
$ python -W all # 输出所有警告,等同于设置warnings.simplefilter('always') $ python -W ignore # 忽略所有警告,等同于设置warnings.simplefilter('ignore') $ python -W error # 将所有警告转换为异常,等同于设置warnings.simplefilter('error')
3.2 代码中测试
有时为了调试,我们想在代码中加一些代码,通常是一些 print 语句,可以写为:
# 在代码中的debug部分 if __debug__: pass
一旦调试结束,通过在命令行执行 -O 选项,会忽略这部分代码:
$ python -0 main.py
3.3 代码风格检查
使用 pylint 可以进行不少的代码风格和语法检查,能在运行之前发现一些错误
pylint main.py
3.4 代码耗时
耗时测试
$ python -m cProfile main.py
测试某代码块耗时
# 代码块耗时定义 from contextlib import contextmanager from time import perf_counter @contextmanager def timeblock(label): tic = perf_counter() try: yield finally: toc = perf_counter() print('%s : %s' % (label, toc - tic)) # 代码块耗时测试 with timeblock('counting'): pass
代码耗时优化的一些原则
전체 코드가 아닌 성능 병목 현상이 발생하는 위치를 최적화하는 데 집중하세요. 전역 변수를 사용하지 마세요. 지역 변수는 전역 변수보다 빠르게 조회되며, 함수 내에서 전역 변수를 정의하는 코드 실행은 일반적으로 15%-30% 더 빠릅니다. 속성에 액세스하려면 . 자주 액세스되는 클래스 멤버 변수 self.member를 로컬 변수에 넣으려면 from module import name을 사용하는 것이 더 빠릅니다. 내장된 데이터 구조를 사용해 보세요. str, list, set, dict 등은 C로 구현되어 매우 빠르게 실행됩니다. 불필요한 중간 변수 및 copy.deepcopy() 생성을 피하세요. a + ':' + b + ':' + c와 같은 문자열 연결은 쓸모없는 중간 변수를 많이 생성하며 ':',join([a, b, c])는 생성되지 않습니다. 효율적인 소수. 또한 문자열 연결이 필요한지 여부를 고려해야 합니다. 예를 들어 print(':'.join([a, b, c]))는 print(a, b, c, sep=':'보다 효율성이 떨어집니다. ).
위 내용은 모아두기 추천하는 파이썬 활용팁 20가지!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

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

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

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

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

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

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

뜨거운 주제











PHP는 주로 절차 적 프로그래밍이지만 객체 지향 프로그래밍 (OOP)도 지원합니다. Python은 OOP, 기능 및 절차 프로그래밍을 포함한 다양한 패러다임을 지원합니다. PHP는 웹 개발에 적합하며 Python은 데이터 분석 및 기계 학습과 같은 다양한 응용 프로그램에 적합합니다.

PHP는 웹 개발 및 빠른 프로토 타이핑에 적합하며 Python은 데이터 과학 및 기계 학습에 적합합니다. 1.PHP는 간단한 구문과 함께 동적 웹 개발에 사용되며 빠른 개발에 적합합니다. 2. Python은 간결한 구문을 가지고 있으며 여러 분야에 적합하며 강력한 라이브러리 생태계가 있습니다.

PHP는 1994 년에 시작되었으며 Rasmuslerdorf에 의해 개발되었습니다. 원래 웹 사이트 방문자를 추적하는 데 사용되었으며 점차 서버 측 스크립팅 언어로 진화했으며 웹 개발에 널리 사용되었습니다. Python은 1980 년대 후반 Guidovan Rossum에 의해 개발되었으며 1991 년에 처음 출시되었습니다. 코드 가독성과 단순성을 강조하며 과학 컴퓨팅, 데이터 분석 및 기타 분야에 적합합니다.

Python은 부드러운 학습 곡선과 간결한 구문으로 초보자에게 더 적합합니다. JavaScript는 가파른 학습 곡선과 유연한 구문으로 프론트 엔드 개발에 적합합니다. 1. Python Syntax는 직관적이며 데이터 과학 및 백엔드 개발에 적합합니다. 2. JavaScript는 유연하며 프론트 엔드 및 서버 측 프로그래밍에서 널리 사용됩니다.

VS 코드는 Windows 8에서 실행될 수 있지만 경험은 크지 않을 수 있습니다. 먼저 시스템이 최신 패치로 업데이트되었는지 확인한 다음 시스템 아키텍처와 일치하는 VS 코드 설치 패키지를 다운로드하여 프롬프트대로 설치하십시오. 설치 후 일부 확장은 Windows 8과 호환되지 않을 수 있으며 대체 확장을 찾거나 가상 시스템에서 새로운 Windows 시스템을 사용해야합니다. 필요한 연장을 설치하여 제대로 작동하는지 확인하십시오. Windows 8에서는 VS 코드가 가능하지만 더 나은 개발 경험과 보안을 위해 새로운 Windows 시스템으로 업그레이드하는 것이 좋습니다.

Sublime 텍스트로 Python 코드를 실행하려면 먼저 Python 플러그인을 설치 한 다음 .py 파일을 작성하고 코드를 작성한 다음 CTRL B를 눌러 코드를 실행하면 콘솔에 출력이 표시됩니다.

VS 코드는 파이썬을 작성하는 데 사용될 수 있으며 파이썬 애플리케이션을 개발하기에 이상적인 도구가되는 많은 기능을 제공합니다. 사용자는 다음을 수행 할 수 있습니다. Python 확장 기능을 설치하여 코드 완료, 구문 강조 및 디버깅과 같은 기능을 얻습니다. 디버거를 사용하여 코드를 단계별로 추적하고 오류를 찾아 수정하십시오. 버전 제어를 위해 git을 통합합니다. 코드 서식 도구를 사용하여 코드 일관성을 유지하십시오. 라인 도구를 사용하여 잠재적 인 문제를 미리 발견하십시오.

Visual Studio Code (VSCODE)에서 코드를 작성하는 것은 간단하고 사용하기 쉽습니다. vscode를 설치하고, 프로젝트를 만들고, 언어를 선택하고, 파일을 만들고, 코드를 작성하고, 저장하고 실행합니다. VSCODE의 장점에는 크로스 플랫폼, 무료 및 오픈 소스, 강력한 기능, 풍부한 확장 및 경량 및 빠른가 포함됩니다.
