Python의 30가지 실무 기술을 요약합니다.
이 기사에서는 python에 대한 관련 지식을 제공합니다. 객체 확인, 여러 줄 문자열 사용, 함수에서 여러 값 반환 등을 포함하여 프로그래밍 프로세스의 몇 가지 일반적인 사용 기술을 주로 요약합니다. , 모든 사람에게 도움이 되기를 바랍니다.
추천 학습: python 튜토리얼
팁 1 두 숫자를 제자리에서 바꾸기
Python은 한 줄에서 할당하고 바꾸는 직관적인 방법을 제공합니다. 아래 예를 참조하세요.
x, y = 10, 20print(x, y) x, y = y, xprint(x, y) #1 (10, 20)#2 (20, 10)
올바른 할당은 새로운 튜플을 생성합니다. 그리고 왼쪽에 있는 것은 즉시 (인용되지 않은) 튜플을 이름 <a>
和 <b>
으로 압축 해제합니다.
할당이 완료된 후 새 튜플은 역참조되고 가비지 수집용으로 표시됩니다. 변수의 교환도 마지막에 발생합니다.
팁 2 비교 연산자 연결.
비교 연산자 집합은 때때로 유용할 수 있는 또 다른 트릭입니다.
n = 10 result = 1 < n < 20 print(result) # True result = 1 > n <= 9 print(result) # False
팁 3 조건부 할당에는 삼항 연산자를 사용하세요.
삼항 연산자는 조건 연산자라고도 알려진 if-else 문의 단축형입니다.
[on_true] if [expression] else [on_false]
다음은 코드를 간결하고 간결하게 만드는 데 사용할 수 있는 몇 가지 예입니다.
다음 명령문은 "y가 9이면 x에 10을 할당하고, 그렇지 않으면 x에 20을 할당합니다"와 같은 의미를 갖습니다. 필요한 경우 연산자 연결을 확장할 수 있습니다.
x = 10 if (y == 9) else 20
마찬가지로 클래스 객체에도 동일한 작업을 수행할 수 있습니다.
x = (classA if y == 1 else classB)(param1, param2)
위의 예에서 classA와 classB는 두 개의 클래스이며, 그 중 하나가 클래스 생성자가 호출됩니다.
다음은 No.의 예시입니다. 가장 작은 숫자를 평가하는 조건을 추가합니다.
def small(a, b, c): return a if a <= b and a <= c else (b if b <= a and b <= c else c) print(small(1, 0, 1))print(small(1, 2, 2))print(small(2, 2, 3))print(small(5, 4, 3))#Output#0 #1 #2 #3
리스트 컴프리헨션에서는 삼항 연산자를 사용할 수도 있습니다.
[m**2 if m > 10 else m**4 for m in range(50)]#=> [0, 1, 16, 81, 256, 625, 1296, 2401, 4096, 6561, 10000, 121, 144, 169, 196, 225, 256, 289, 324, 361, 400, 441, 484, 529, 576, 625, 676, 729, 784, 841, 900, 961, 1024, 1089, 1156, 1225, 1296, 1369, 1444, 1521, 1600, 1681, 1764, 1849, 1936, 2025, 2116, 2209, 2304, 2401]
Tip 4 여러 줄 문자열 사용하기
기본 방법은 C 언어에서 파생된 백슬래시를 사용하는 것입니다.
multiStr = "select * from multi_row \ where row_id < 5"print(multiStr)# select * from multi_row where row_id < 5
또 다른 비결은 삼중 따옴표를 사용하는 것입니다.
multiStr = """select * from multi_row where row_id < 5"""print(multiStr)#select * from multi_row #where row_id < 5
위 방법의 일반적인 문제는 적절한 들여쓰기가 부족하다는 것입니다. 들여쓰기를 시도하면 문자열에 공백이 삽입됩니다.
그래서 최종 해결책은 문자열을 여러 줄로 나누고 전체 문자열을 괄호로 묶는 것입니다.
multiStr= ("select * from multi_row ""where row_id < 5 ""order by age") print(multiStr)#select * from multi_row where row_id < 5 order by age
팁 5 목록 요소를 새 변수에 저장하기
목록을 사용하여 no를 초기화할 수 있습니다. 변하기 쉬운. 리스트를 언패킹할 때 변수 개수는 그 개수를 초과해서는 안 됩니다. 목록의 요소.
testList = [1,2,3]x, y, z = testListprint(x, y, z)#-> 1 2 3
팁 6 가져온 모듈의 파일 경로를 인쇄하세요
코드에서 가져온 모듈의 절대 위치를 알고 싶다면 다음 트릭을 사용하세요.
import threading import socketprint(threading)print(socket)#1- <module 'threading' from '/usr/lib/python2.7/threading.py'>#2- <module 'socket' from '/usr/lib/python2.7/socket.py'>
팁 7 대화형 "_" 연산자를 사용하세요
이것은 우리 중 많은 사람들이 모르는 유용한 기능입니다.
Python 콘솔에서는 표현식을 테스트하거나 함수를 호출할 때마다 결과가 임시 이름 _(밑줄)로 전송됩니다.
>>> 2 + 13>>> _3>>> print _3
"_"는 마지막으로 실행된 표현식의 출력을 나타냅니다.
Tip 8 Dictionary/Set Comprehension
List Comprehension을 사용하는 것처럼 Dictionary/Set Comprehension도 사용할 수 있습니다. 사용하기 쉽고 효과적입니다. 여기에 예가 있습니다.
testDict = {i: i * i for i in xrange(10)} testSet = {i * 2 for i in xrange(10)}print(testSet)print(testDict) #set([0, 2, 4, 6, 8, 10, 12, 14, 16, 18]) #{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}
참고 - 두 문장의 유일한 차이점은 <:>입니다. 또한 위 코드를 Python3에서 실행하려면 .
팁 9 스크립트 디버깅
모듈의 도움으로 Python 스크립트에 중단점을 설정할 수 있습니다. 아래 예를 따르십시오.
import pdb pdb.set_trace()
스크립트의 어느 곳에나
팁 10 파일 공유 설정
Python을 사용하면 서버 루트에서 파일을 공유하는 데 사용할 수 있는 HTTP 서버를 실행할 수 있습니다. 다음은 서버를 시작하는 명령입니다.
Python 2
python -m SimpleHTTPServer
Python 3
python3 -m http.server
위 명령은 기본 포트 8000에서 서버를 시작합니다. 위 명령의 마지막 매개변수로 사용자 지정 포트를 전달하여 사용할 수도 있습니다.
Tip 11 Python에서 개체 검사
dir() 메서드를 호출하여 Python에서 개체를 검사할 수 있습니다. 이것은 간단한 예입니다.
test = [1, 3, 5, 7]print( dir(test) )
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delslice__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__setslice__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
Tip 12 if 문을 단순화하세요
여러 값의 유효성을 검사하려면 다음과 같은 방법으로 수행할 수 있습니다.
if m in [1,3,5,7]:
대신:
if m==1 or m==3 or m==5 or m==7:
또는 '[1,3,5,7]' 대신 '{1,3,5,7}'을 'in' 연산자로 사용할 수 있습니다. 각 요소에 액세스하기 위해 O(1)을 전달했습니다.
Tip 13 런타임 시 Python 버전 감지
때때로 현재 실행 중인 Python 엔진이 지원되는 버전보다 낮은 경우 프로그램을 실행하고 싶지 않을 수도 있습니다. 이렇게 하려면 다음 코드 조각을 사용할 수 있습니다. 또한 현재 사용되는 Python 버전을 사람이 읽을 수 있는 형식으로 인쇄합니다.
import sys#Detect the Python version currently in use.if not hasattr(sys, "hexversion") or sys.hexversion != 50660080: print("Sorry, you aren't running on Python 3.5\n") print("Please upgrade to 3.5.\n") sys.exit(1) #Print Python version in a readable format.print("Current Python version: ", sys.version)
또는 위 코드에서 sys.hexversion!= 50660080을 sys.version_info >= (3, 5)로 바꿀 수 있습니다. 이것은 지식이 풍부한 독자의 조언입니다.
Python 2.7에서 실행 시 출력됩니다.
Python 2.7.10 (default, Jul 14 2015, 19:46:27)[GCC 4.8.2] on linux Sorry, you aren't running on Python 3.5Please upgrade to 3.5.
在 Python 3.5 上运行时的输出。
Python 3.5.1 (default, Dec 2015, 13:05:11)[GCC 4.8.2] on linux Current Python version: 3.5.2 (default, Aug 22 2016, 21:11:05) [GCC 5.3.0]
技巧14 组合多个字符串
如果您想连接列表中所有可用的标记,请参见以下示例。
>>> test = ['I', 'Like', 'Python', 'automation']
现在,让我们从上面给出的列表中的元素创建一个字符串。
>>> print ''.join(test)
技巧15 反转 string/list 的四种方法
反转列表本身
testList = [1, 3, 5]testList.reverse()print(testList)#-> [5, 3, 1]
在循环中迭代时反转
for element in reversed([1,3,5]): print(element)#1-> 5#2-> 3#3-> 1
反转一个字符串
"Test Python"[::-1]
这使输出为“nohtyP tseT”
使用切片反转列表
[1, 3, 5][::-1]
上面的命令将输出 [5, 3, 1]。
技巧16 玩枚举
使用枚举器,在循环中很容易找到索引。
testlist = [10, 20, 30]for i, value in enumerate(testlist): print(i, ': ', value)#1-> 0 : 10#2-> 1 : 20#3-> 2 : 30
技巧17 在 Python 中使用枚举。
我们可以使用以下方法来创建枚举定义。
class Shapes: Circle, Square, Triangle, Quadrangle = range(4)print(Shapes.Circle)print(Shapes.Square)print(Shapes.Triangle)print(Shapes.Quadrangle)#1-> 0#2-> 1#3-> 2#4-> 3
技巧18 从函数返回多个值。
支持此功能的编程语言并不多。但是,Python 中的函数确实会返回多个值。
请参考以下示例以查看它的工作情况。
# function returning multiple values.def x(): return 1, 2, 3, 4# Calling the above function.a, b, c, d = x()print(a, b, c, d)
#-> 1 2 3 4
技巧19 使用 splat 运算符解包函数参数。
splat 运算符提供了一种解压参数列表的艺术方式。为清楚起见,请参阅以下示例。
def test(x, y, z): print(x, y, z)testDict = {'x': 1, 'y': 2, 'z': 3} testList = [10, 20, 30]test(*testDict)test(**testDict)test(*testList)#1-> x y z#2-> 1 2 3#3-> 10 20 30
技巧20 使用字典来存储 switch。
我们可以制作一个字典存储表达式。
stdcalc = { 'sum': lambda x, y: x + y, 'subtract': lambda x, y: x - y}print(stdcalc['sum'](9,3))print(stdcalc['subtract'](9,3))#1-> 12#2-> 6
技巧21 计算一行中任意数字的阶乘。
Python 2.x.
result = (lambda k: reduce(int.__mul__, range(1,k+1),1))(3)print(result)#-> 6
Python 3.x.
import functools result = (lambda k: functools.reduce(int.__mul__, range(1,k+1),1))(3)print(result)
#-> 6
技巧22 查找列表中出现频率最高的值。
test = [1,2,3,4,2,2,3,1,4,4,4]print(max(set(test), key=test.count))#-> 4
技巧23 重置递归限制。
Python 将递归限制限制为 1000。我们可以重置它的值。
import sys x=1001print(sys.getrecursionlimit())sys.setrecursionlimit(x)print(sys.getrecursionlimit())#1-> 1000#2-> 1001
请仅在需要时应用上述技巧。
技巧24 检查对象的内存使用情况。
在 Python 2.7 中,32 位整数消耗 24 字节,而在 Python 3.5 中使用 28 字节。为了验证内存使用情况,我们可以调用 方法。
Python 2.7.
import sys x=1print(sys.getsizeof(x))#-> 24
Python 3.5.
import sys x=1print(sys.getsizeof(x))#-> 28
技巧25 使用 __slots__ 减少内存开销。
你有没有观察到你的 Python 应用程序消耗了大量资源,尤其是内存?这是使用<__slots__>
类变量在一定程度上减少内存开销的一种技巧。
import sysclass FileSystem(object): def __init__(self, files, folders, devices): self.files = files self.folders = folders self.devices = devicesprint(sys.getsizeof( FileSystem ))class FileSystem1(object): __slots__ = ['files', 'folders', 'devices'] def __init__(self, files, folders, devices): self.files = files self.folders = folders self.devices = devicesprint(sys.getsizeof( FileSystem1 ))#In Python 3.5#1-> 1016#2-> 888
显然,您可以从结果中看到内存使用量有所节省。但是当一个类的内存开销不必要地大时,你应该使用 __slots__
。仅在分析应用程序后执行此操作。否则,您将使代码难以更改并且没有真正的好处。
技巧26 Lambda 模仿打印功能。
import sys lprint=lambda *args:sys.stdout.write(" ".join(map(str,args)))lprint("python", "tips",1000,1001)#-> python tips 1000 1001
技巧27 从两个相关序列创建字典。
t1 = (1, 2, 3)t2 = (10, 20, 30)print(dict (zip(t1,t2)))#-> {1: 10, 2: 20, 3: 30}
技巧28 在线搜索字符串中的多个前缀。
print("http://www.baidu.com".startswith(("http://", "https://")))print("https://juejin.cn".endswith((".com", ".cn")))#1-> True#2-> True
技巧29 形成一个统一的列表,不使用任何循环。
import itertools test = [[-1, -2], [30, 40], [25, 35]]print(list(itertools.chain.from_iterable(test)))#-> [-1, -2, 30, 40, 25, 35]
如果您有一个包含嵌套列表或元组作为元素的输入列表,请使用以下技巧。但是,这里的限制是它使用了 for 循环。
def unifylist(l_input, l_target): for it in l_input: if isinstance(it, list): unifylist(it, l_target) elif isinstance(it, tuple): unifylist(list(it), l_target) else: l_target.append(it) return l_target test = [[-1, -2], [1,2,3, [4,(5,[6,7])]], (30, 40), [25, 35]]print(unifylist(test,[]))#Output => [-1, -2, 1, 2, 3, 4, 5, 6, 7, 30, 40, 25, 35]
统一包含列表和元组的列表的另一种更简单的方法是使用 Python 的 < more_itertools > 包。它不需要循环。只需执行 < pip install more_itertools >,如果还没有的话。
import more_itertools test = [[-1, -2], [1, 2, 3, [4, (5, [6, 7])]], (30, 40), [25, 35]]print(list(more_itertools.collapse(test)))#Output=> [-1, -2, 1, 2, 3, 4, 5, 6, 7, 30, 40, 25, 35]
技巧30 在 Python 中实现真正的 switch-case 语句。
这是使用字典来模仿 switch-case 构造的代码。
def xswitch(x): return xswitch._system_dict.get(x, None) xswitch._system_dict = {'files': 10, 'folders': 5, 'devices': 2}print(xswitch('default'))print(xswitch('devices'))#1-> None#2-> 2
推荐学习:python学习教程
위 내용은 Python의 30가지 실무 기술을 요약합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

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

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

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

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

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

뜨거운 주제











PHP와 Python은 고유 한 장점과 단점이 있으며 선택은 프로젝트 요구와 개인 선호도에 달려 있습니다. 1.PHP는 대규모 웹 애플리케이션의 빠른 개발 및 유지 보수에 적합합니다. 2. Python은 데이터 과학 및 기계 학습 분야를 지배합니다.

Python과 JavaScript는 커뮤니티, 라이브러리 및 리소스 측면에서 고유 한 장점과 단점이 있습니다. 1) Python 커뮤니티는 친절하고 초보자에게 적합하지만 프론트 엔드 개발 리소스는 JavaScript만큼 풍부하지 않습니다. 2) Python은 데이터 과학 및 기계 학습 라이브러리에서 강력하며 JavaScript는 프론트 엔드 개발 라이브러리 및 프레임 워크에서 더 좋습니다. 3) 둘 다 풍부한 학습 리소스를 가지고 있지만 Python은 공식 문서로 시작하는 데 적합하지만 JavaScript는 MDNWebDocs에서 더 좋습니다. 선택은 프로젝트 요구와 개인적인 이익을 기반으로해야합니다.

CentOS 시스템에서 Pytorch GPU 가속도를 활성화하려면 Cuda, Cudnn 및 GPU 버전의 Pytorch를 설치해야합니다. 다음 단계는 프로세스를 안내합니다. CUDA 및 CUDNN 설치 CUDA 버전 호환성 결정 : NVIDIA-SMI 명령을 사용하여 NVIDIA 그래픽 카드에서 지원하는 CUDA 버전을보십시오. 예를 들어, MX450 그래픽 카드는 CUDA11.1 이상을 지원할 수 있습니다. Cudatoolkit 다운로드 및 설치 : NVIDIACUDATOOLKIT의 공식 웹 사이트를 방문하여 그래픽 카드에서 지원하는 가장 높은 CUDA 버전에 따라 해당 버전을 다운로드하여 설치하십시오. CUDNN 라이브러리 설치 :

Docker는 Linux 커널 기능을 사용하여 효율적이고 고립 된 응용 프로그램 실행 환경을 제공합니다. 작동 원리는 다음과 같습니다. 1. 거울은 읽기 전용 템플릿으로 사용되며, 여기에는 응용 프로그램을 실행하는 데 필요한 모든 것을 포함합니다. 2. Union 파일 시스템 (Unionfs)은 여러 파일 시스템을 스택하고 차이점 만 저장하고 공간을 절약하고 속도를 높입니다. 3. 데몬은 거울과 컨테이너를 관리하고 클라이언트는 상호 작용을 위해 사용합니다. 4. 네임 스페이스 및 CGroup은 컨테이너 격리 및 자원 제한을 구현합니다. 5. 다중 네트워크 모드는 컨테이너 상호 연결을 지원합니다. 이러한 핵심 개념을 이해 함으로써만 Docker를 더 잘 활용할 수 있습니다.

Minio Object Storage : Centos System Minio 하의 고성능 배포는 Go Language를 기반으로 개발 한 고성능 분산 객체 저장 시스템입니다. Amazons3과 호환됩니다. Java, Python, JavaScript 및 Go를 포함한 다양한 클라이언트 언어를 지원합니다. 이 기사는 CentOS 시스템에 대한 Minio의 설치 및 호환성을 간단히 소개합니다. CentOS 버전 호환성 Minio는 다음을 포함하되 이에 국한되지 않는 여러 CentOS 버전에서 확인되었습니다. CentOS7.9 : 클러스터 구성, 환경 준비, 구성 파일 설정, 디스크 파티셔닝 및 미니를 다루는 완전한 설치 안내서를 제공합니다.

CentOS 시스템에 대한 Pytorch 분산 교육에는 다음 단계가 필요합니다. Pytorch 설치 : 전제는 Python과 PIP가 CentOS 시스템에 설치된다는 것입니다. CUDA 버전에 따라 Pytorch 공식 웹 사이트에서 적절한 설치 명령을 받으십시오. CPU 전용 교육의 경우 다음 명령을 사용할 수 있습니다. PipinStalltorchtorchvisiontorchaudio GPU 지원이 필요한 경우 CUDA 및 CUDNN의 해당 버전이 설치되어 있는지 확인하고 해당 PyTorch 버전을 설치하려면 설치하십시오. 분산 환경 구성 : 분산 교육에는 일반적으로 여러 기계 또는 단일 기계 다중 GPU가 필요합니다. 장소

CentOS 시스템에 Pytorch를 설치할 때는 적절한 버전을 신중하게 선택하고 다음 주요 요소를 고려해야합니다. 1. 시스템 환경 호환성 : 운영 체제 : CentOS7 이상을 사용하는 것이 좋습니다. Cuda 및 Cudnn : Pytorch 버전 및 Cuda 버전은 밀접하게 관련되어 있습니다. 예를 들어, pytorch1.9.0은 cuda11.1을 필요로하고 Pytorch2.0.1은 cuda11.3을 필요로합니다. CUDNN 버전도 CUDA 버전과 일치해야합니다. Pytorch 버전을 선택하기 전에 호환 CUDA 및 CUDNN 버전이 설치되었는지 확인하십시오. 파이썬 버전 : Pytorch 공식 지점

파이썬은 자동화, 스크립팅 및 작업 관리가 탁월합니다. 1) 자동화 : 파일 백업은 OS 및 Shutil과 같은 표준 라이브러리를 통해 실현됩니다. 2) 스크립트 쓰기 : PSUTIL 라이브러리를 사용하여 시스템 리소스를 모니터링합니다. 3) 작업 관리 : 일정 라이브러리를 사용하여 작업을 예약하십시오. Python의 사용 편의성과 풍부한 라이브러리 지원으로 인해 이러한 영역에서 선호하는 도구가됩니다.
