検索
ホームページバックエンド開発Python チュートリアルPython の実践スキルを 30 個まとめます

この記事では、python に関する関連知識を提供します。主に、オブジェクトのチェック、複数行の文字列の使用、関数のフォロー、複数の値の返しなど、プログラミング プロセスでの一般的な使用テクニックをまとめています。関連コンテンツですので、皆様のお役に立てれば幸いです。

Python の実践スキルを 30 個まとめます

推奨学習: python チュートリアル

ヒント 1 2 つの数値をその場で交換する

Python は、直感的な代入と交換を 1 行で実行する方法。以下の例を参照してください。

x, y = 10, 20print(x, y)
 x, y = y, xprint(x, y)
 #1 (10, 20)#2 (20, 10)

右側の代入により、新しいタプルがシードされます。そして、左側のものは、その (引用符で囲まれていない) タプルをすぐに解凍して、名前 <a></a><b></b> を作成します。

割り当てが完了すると、新しいタプルは参照解除され、ガベージ コレクションの対象としてマークされます。変数の交換も最後に行われます。


ヒント 2 比較演算子の連鎖。

比較演算子の集計は、場合によっては役立つもう 1 つのテクニックです。

n = 10 result = 1  n <hr><h2 id="ヒント-条件付き代入には三項演算子を使用します"> ヒント 3 条件付き代入には三項演算子を使用します。 </h2><p>三項演算子は、if-else ステートメントのショートカットであり、条件演算子とも呼ばれます。 </p><pre class="brush:php;toolbar:false">[on_true] if [expression] else [on_false]

コードをコンパクトかつ簡潔にするために使用できる例をいくつか示します。

次のステートメントは、「y が 9 の場合は 10 を x に代入し、それ以外の場合は 20 を x に代入します」と同じ意味を持ちます。必要に応じて、演算子の連鎖を拡張できます。

x = 10 if (y == 9) else 20

同様に、クラス オブジェクトでも同じことができます。

x = (classA if y == 1 else classB)(param1, param2)

上の例では、classA と classB は 2 つのクラスで、そのうちの 1 つのクラス コンストラクターが呼び出されます。

以下は「いいえ」の例です。最小の数値を評価する条件を追加します。

def small(a, b, c):
	return a if a <p>リスト内包表記で三項演算子を使用することもできます。 </p><pre class="brush:php;toolbar:false">[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]

ヒント 4 複数行の文字列の使用

基本的な方法は、C 言語から派生したバックスラッシュを使用することです。

multiStr = "select * from multi_row \
where row_id <p>もう 1 つのヒントは、三重引用符を使用することです。 </p><pre class="brush:php;toolbar:false">multiStr = """select * from multi_row 
where row_id <p>上記の方法でよくある問題は、適切なインデントが欠如していることです。インデントしようとすると、文字列にスペースが挿入されます。 </p><p>したがって、最終的な解決策は、文字列を複数の行に分割し、文字列全体を括弧で囲むことです。 </p><pre class="brush:php;toolbar:false">multiStr= ("select * from multi_row ""where row_id <hr><h2 id="ヒント-リストの要素を新しい変数に保存する">ヒント 5 リストの要素を新しい変数に保存する</h2><p>リストを使用して no を初期化できます。変数。リストを展開するときは、変数の数がこの数を超えてはなりません。リスト内の要素。 </p><pre class="brush:php;toolbar:false">testList = [1,2,3]x, y, z = testListprint(x, y, z)#-> 1 2 3

ヒント 6 インポートされたモジュールのファイル パスを出力する

コード内でインポートされたモジュールの絶対位置を知りたい場合は、次のヒントを使用してください。

import threading 
import socketprint(threading)print(socket)#1- <module>#2- <module></module></module>

ヒント 7 対話型の「_」演算子を使用する

これは、多くの人が知らない便利な機能です。

Python コンソールでは、式をテストしたり関数を呼び出したりするたびに、結果が一時的な名前 _ (アンダースコア) に送信されます。

>>> 2 + 13>>> _3>>> print _3

「_」は、最後に実行された式の出力を指します。


ヒント 8 辞書/集合内包表記

リスト内包表記を使用するのと同じように、辞書/集合内包表記も使用できます。これらは使いやすく、同様に効果的です。ここに一例を示します。

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}

注 - 2 つのステートメントの唯一の違いは <:> です。また、上記のコードを Python3 で実行するには、 を に置き換えます。


ヒント 9 スクリプトのデバッグ

モジュールを使用して、Python スクリプトにブレークポイントを設定できます。以下の例に従ってください。

import pdb
pdb.set_trace()

スクリプト内の任意の場所に を指定し、そこにブレークポイントを設定できます。これはとても便利です。


ヒント 10 ファイル共有の設定

Python では HTTP サーバーを実行でき、これを使用してサーバー ルートからファイルを共有できます。以下はサーバーを起動するコマンドです。

Python 2

python -m SimpleHTTPServer

Python 3

python3 -m http.server

上記のコマンドは、デフォルトのポート 8000 でサーバーを起動します。カスタム ポートを上記のコマンドの最後のパラメータとして渡すことで、カスタム ポートを使用することもできます。


ヒント 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']

ヒント 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」として使用することもできます。 ' set は O(1) の各要素にアクセスできるため、' 演算記号です。


ヒント 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__></__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 的 包。它不需要循环。只需执行 ,如果还没有的话。

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 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事はCSDNで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
Python vs. C:曲線と使いやすさの学習Python vs. C:曲線と使いやすさの学習Apr 19, 2025 am 12:20 AM

Pythonは学習と使用が簡単ですが、Cはより強力ですが複雑です。 1。Python構文は簡潔で初心者に適しています。動的なタイピングと自動メモリ管理により、使いやすくなりますが、ランタイムエラーを引き起こす可能性があります。 2.Cは、高性能アプリケーションに適した低レベルの制御と高度な機能を提供しますが、学習しきい値が高く、手動メモリとタイプの安全管理が必要です。

Python vs. C:メモリ管理とコントロールPython vs. C:メモリ管理とコントロールApr 19, 2025 am 12:17 AM

PythonとCは、メモリ管理と制御に大きな違いがあります。 1。Pythonは、参照カウントとガベージコレクションに基づいて自動メモリ管理を使用し、プログラマーの作業を簡素化します。 2.Cには、メモリの手動管理が必要であり、より多くの制御を提供しますが、複雑さとエラーのリスクが増加します。どの言語を選択するかは、プロジェクトの要件とチームテクノロジースタックに基づいている必要があります。

科学コンピューティングのためのPython:詳細な外観科学コンピューティングのためのPython:詳細な外観Apr 19, 2025 am 12:15 AM

科学コンピューティングにおけるPythonのアプリケーションには、データ分析、機械学習、数値シミュレーション、視覚化が含まれます。 1.numpyは、効率的な多次元配列と数学的関数を提供します。 2。ScipyはNumpy機能を拡張し、最適化と線形代数ツールを提供します。 3. Pandasは、データ処理と分析に使用されます。 4.matplotlibは、さまざまなグラフと視覚的な結果を生成するために使用されます。

PythonとC:適切なツールを見つけるPythonとC:適切なツールを見つけるApr 19, 2025 am 12:04 AM

PythonまたはCを選択するかどうかは、プロジェクトの要件に依存するかどうかは次のとおりです。1)Pythonは、簡潔な構文とリッチライブラリのため、迅速な発展、データサイエンス、スクリプトに適しています。 2)Cは、コンピレーションと手動メモリ管理のため、システムプログラミングやゲーム開発など、高性能および基礎となる制御を必要とするシナリオに適しています。

データサイエンスと機械学習のためのPythonデータサイエンスと機械学習のためのPythonApr 19, 2025 am 12:02 AM

Pythonは、データサイエンスと機械学習で広く使用されており、主にそのシンプルさと強力なライブラリエコシステムに依存しています。 1)Pandasはデータ処理と分析に使用され、2)Numpyが効率的な数値計算を提供し、3)SCIKIT-LEARNは機械学習モデルの構築と最適化に使用されます。これらのライブラリは、Pythonをデータサイエンスと機械学習に理想的なツールにします。

Pythonの学習:2時間の毎日の研究で十分ですか?Pythonの学習:2時間の毎日の研究で十分ですか?Apr 18, 2025 am 12:22 AM

Pythonを1日2時間学ぶだけで十分ですか?それはあなたの目標と学習方法に依存します。 1)明確な学習計画を策定し、2)適切な学習リソースと方法を選択します。3)実践的な実践とレビューとレビューと統合を練習および統合し、統合すると、この期間中にPythonの基本的な知識と高度な機能を徐々に習得できます。

Web開発用のPython:主要なアプリケーションWeb開発用のPython:主要なアプリケーションApr 18, 2025 am 12:20 AM

Web開発におけるPythonの主要なアプリケーションには、DjangoおよびFlaskフレームワークの使用、API開発、データ分析と視覚化、機械学習とAI、およびパフォーマンスの最適化が含まれます。 1。DjangoandFlask Framework:Djangoは、複雑な用途の迅速な発展に適しており、Flaskは小規模または高度にカスタマイズされたプロジェクトに適しています。 2。API開発:フラスコまたはdjangorestFrameworkを使用して、Restfulapiを構築します。 3。データ分析と視覚化:Pythonを使用してデータを処理し、Webインターフェイスを介して表示します。 4。機械学習とAI:Pythonは、インテリジェントWebアプリケーションを構築するために使用されます。 5。パフォーマンスの最適化:非同期プログラミング、キャッシュ、コードを通じて最適化

Python vs. C:パフォーマンスと効率の探索Python vs. C:パフォーマンスと効率の探索Apr 18, 2025 am 12:20 AM

Pythonは開発効率でCよりも優れていますが、Cは実行パフォーマンスが高くなっています。 1。Pythonの簡潔な構文とリッチライブラリは、開発効率を向上させます。 2.Cのコンピレーションタイプの特性とハードウェア制御により、実行パフォーマンスが向上します。選択を行うときは、プロジェクトのニーズに基づいて開発速度と実行効率を比較検討する必要があります。

See all articles

ホット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ヘンタイを無料で生成します。

ホットツール

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、