国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

ホームページ バックエンド開発 Python チュートリアル Python で関數(shù)に注釈を付ける

Python で関數(shù)に注釈を付ける

Dec 27, 2024 pm 08:36 PM

Annotating Functions in Python

私は最近、Typescript の関數(shù)の注釈についてブログを投稿しました。少し勉強(qiáng)を終えて、Python で関數(shù)にアノテーションを付ける方法についてさらに理解しました。このブログでは、前回のブログと同様の例を使用して、Python 関數(shù)にアノテーションを付けることについて説明していきます。

Visual Studio Code で python.analysis.typeCheckingMode を Basic、standard、strict のいずれかに設(shè)定することで、型の注釈を検証できます。 Basic オプションと Standard オプションでは、必ずしも関數(shù)や変數(shù)に注釈を付ける必要はありませんが、strict オプションでは必ず注釈を付けます。

関數(shù)値

ショックを受けるかもしれません しかし、Python では関數(shù)を返したり、関數(shù)を値として渡すことができます。コールバック関數(shù)は、実際には次のように記述される Callable 型を使用して注釈が付けられます。

Callable[[argtype1, argtype2, argtype3], returnType]

たとえば、関數(shù) length(text: str) -> int には Callable[[str], int]

という注釈が付けられます

例:

JavaScript のこの関數(shù)

function multiplier(factor){
    return value => factor * value
}

const n = multiplier(6)
n(8) // 48

Python では次のように記述できます

def multiplier(factor):
? ? def inner(value):
? ? ? ? return value * factor
? ? return inner ? ? 

n = multiplier(6)
n(8) #48

次のように、(文字通り) int と float の両方の Union である、number という TypeAlias を作成できます。

from typing import TypeAlias, Union

number: TypeAlias = Union[int, float]

パラメータを JavaScript の數(shù)値 としてアプローチします。

したがって、この関數(shù)に注釈を付けるには、

def multiplier(factor: number) -> Callable[[number], number]:
    def inner(value: number) -> inner:
        return value * factor
    return inner

a = multiplier(4.5)
a(3) #13.5

汎用関數(shù)

古典的なジェネリック関數(shù)の例は次のとおりです

def pick(array, index):
    return array[index]

pick([1,2,3], 2) #3

TypeVar を使用して、一般的な冗長(zhǎng) (typescript よりも冗長(zhǎng)です) を作成できるようになりました。

from typing import TypeVar

T = TypeVar("T") # the argument and the name of the variable should be the same

それで、

from typing import TypeVar, Sequence

def pick(array: Sequence[T], index: int) -> T:
    return array[index]

print(pick([1,2,3,4], 2))

それでは、JavaScript でマップのように動(dòng)作するカスタム myMap 関數(shù)はどうでしょうか。そのようなものです;

覚えておいてください: Python の map() は List 型ではなく Iterable 型を返します

def myMap(array, fn):
    return map(fn, array)

def twice(n): return n * 2
print(myMap([1,2,3], twice))

Callable 型と TypeVar 型を組み合わせて使用??して、この関數(shù)に注釈を付けることができます。 観察してください...

from typing import TypeVar, Iterable, Callable

Input = TypeVar("Input")  # Input and "Input" must be the same
Output = TypeVar("Output")

def myMap(array: Iterable[Input], fn: Callable[[Input], Output]) -> Iterable[Output]:
    return map(fn, array)

def twice(n: int) -> int: return n * 2
print(myMap([1,2,3], twice))

または、呼び出し可能な関數(shù)にエイリアスを付けることもできます

from typing import TypeVar, Iterable, Callable

Input = TypeVar("Input")
Output = TypeVar("Output")

MappableFunction = Callable[[Input], Output]

def myMap(array: Iterable[Input], fn: MappableFunction[Input, Output]) -> Iterable[Output]:
    return map(fn, array)

MappableFunction がこれらのジェネリック型の入力と出力を受け取り、それらを Callable[[Input], Output] のコンテキストに適用することに注目してください。

myFilter 関數(shù)にどのように注釈が付けられるかを少し考えてください?

そう思いましたか?

from typing import Iterable, TypeVar, Callable

Input = TypeVar("Input")

def myFilter(array: Iterable[Input], fn: Callable[[Input], bool]) -> Iterable[Input]:
    return filter(fn, array)

その通りです

汎用クラス

クラスのアノテーションについて話すべきではないことは承知していますが、ジェネリック クラスについて説明する時(shí)間をください。

あなたが Typescript の出身なら、これがそれらを定義する方法です

class GenericStore<Type>{
    stores: Array<Type> = []

    constructor(){
        this.stores = []
    }

    add(item: Type){
        this.stores.push(item)
    }
}

const g1 = new GenericStore<string>(); //g1.stores: Array<string>
g1.add("Hello") //only string are allowed

しかし、Python ではそれらはかなり異なり、扱いにくいです。

  • 最初にジェネリック型をインポートし、次にそれをジェネリック クラスの子にします

この GenericStore クラスを Python で再作成するには

Callable[[argtype1, argtype2, argtype3], returnType]

Python で関數(shù)に注釈を付ける方法を?qū)Wぶ必要があるのはなぜですか?

前のブログで述べたように、これはよりスマートな型システムの構(gòu)築に役立ち、バグの可能性が減ります (特に mypy のような靜的ファイル チェッカーを使用する場(chǎng)合)。また、堅(jiān)牢な型システムを使用してライブラリ ( または SDK) を作成する場(chǎng)合、そのライブラリを使用する開発者の生産性が大幅に向上します (主にエディターの提案によるものです)

この文章に質(zhì)問や間違いがある場(chǎng)合は、下のコメント欄でお?dú)葺Xに共有してください ?

以上がPython で関數(shù)に注釈を付けるの詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國(guó)語(yǔ) Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見つけた場(chǎng)合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無(wú)料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無(wú)料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡(jiǎn)単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無(wú)料のコードエディター

SublimeText3 中國(guó)語(yǔ)版

SublimeText3 中國(guó)語(yǔ)版

中國(guó)語(yǔ)版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

PythonでAPI認(rèn)証を処理する方法 PythonでAPI認(rèn)証を処理する方法 Jul 13, 2025 am 02:22 AM

API認(rèn)証を扱うための鍵は、認(rèn)証方法を正しく理解して使用することです。 1。Apikeyは、通常、リクエストヘッダーまたはURLパラメーターに配置されている最も単純な認(rèn)証方法です。 2。BasicAuthは、內(nèi)部システムに適したBase64エンコード送信にユーザー名とパスワードを使用します。 3。OAUTH2は、最初にclient_idとclient_secretを介してトークンを取得し、次にリクエストヘッダーにbearertokenを持ち込む必要があります。 4。トークンの有効期限に対処するために、トークン管理クラスをカプセル化し、トークンを自動(dòng)的に更新できます。要するに、文書に従って適切な方法を選択し、重要な情報(bào)を安全に保存することが重要です。

Pythonの主張を説明します。 Pythonの主張を説明します。 Jul 07, 2025 am 12:14 AM

Assertは、Pythonでデバッグに使用されるアサーションツールであり、條件が満たされないときにアサーションエラーを投げます。その構(gòu)文は、アサート條件とオプションのエラー情報(bào)であり、パラメーターチェック、ステータス確認(rèn)などの內(nèi)部ロジック検証に適していますが、セキュリティまたはユーザーの入力チェックには使用できず、明確な迅速な情報(bào)と組み合わせて使用??する必要があります。例外処理を置き換えるのではなく、開発段階での補(bǔ)助デバッグにのみ利用できます。

Python Iteratorsとは何ですか? Python Iteratorsとは何ですか? Jul 08, 2025 am 02:56 AM

inpython、iteratoratorSareObjectsthatallopingthroughcollectionsbyimplementing __()and__next __()

Pythonタイプのヒントとは何ですか? Pythonタイプのヒントとは何ですか? Jul 07, 2025 am 02:55 AM

タイプヒントシンパソコンの問題と、ポテンシャルを使用して、dynamivitytedcodedededevelowingdeexpecifeedtypes.theyenhanceReadeadability、inableearlybugdetection、およびrequrovetoolingsusingsupport.typehintsareadddeduneadddedusingolon(:)

一度に2つのリストを繰り返す方法Python 一度に2つのリストを繰り返す方法Python Jul 09, 2025 am 01:13 AM

Pythonで2つのリストを同時(shí)にトラバースする一般的な方法は、Zip()関數(shù)を使用することです。これは、複數(shù)のリストを順番にペアリングし、最短になります。リストの長(zhǎng)さが一貫していない場(chǎng)合は、itertools.zip_longest()を使用して最長(zhǎng)になり、欠損値を入力できます。 enumerate()と組み合わせて、同時(shí)にインデックスを取得できます。 1.Zip()は簡(jiǎn)潔で実用的で、ペアのデータ反復(fù)に適しています。 2.zip_longest()は、一貫性のない長(zhǎng)さを扱うときにデフォルト値を入力できます。 3. Enumerate(Zip())は、トラバーサル中にインデックスを取得し、さまざまな複雑なシナリオのニーズを満たすことができます。

Python Fastapiチュートリアル Python Fastapiチュートリアル Jul 12, 2025 am 02:42 AM

Pythonを使用して最新の効率的なAPIを作成するには、Fastapiをお?jiǎng)幛幛筏蓼埂?biāo)準(zhǔn)のPythonタイプのプロンプトに基づいており、優(yōu)れたパフォーマンスでドキュメントを自動(dòng)的に生成できます。 FastAPIおよびASGIサーバーUVICORNをインストールした後、インターフェイスコードを記述できます。ルートを定義し、処理機(jī)能を作成し、データを返すことにより、APIをすばやく構(gòu)築できます。 Fastapiは、さまざまなHTTPメソッドをサポートし、自動(dòng)的に生成されたSwaggeruiおよびRedocドキュメントシステムを提供します。 URLパラメーターはパス定義を介してキャプチャできますが、クエリパラメーターは、関數(shù)パラメーターのデフォルト値を設(shè)定することで実裝できます。 Pydanticモデルの合理的な使用は、開発の効率と精度を改善するのに役立ちます。

PythonでAPIをテストする方法 PythonでAPIをテストする方法 Jul 12, 2025 am 02:47 AM

APIをテストするには、Pythonのリクエストライブラリを使用する必要があります。手順は、ライブラリのインストール、リクエストの送信、応答の確認(rèn)、タイムアウトの設(shè)定、再試行です。まず、pipinstallRequestsを介してライブラリをインストールします。次に、requests.get()またはrequests.post()およびその他のメソッドを使用して、get requestsを送信または投稿します。次に、respons.status_codeとresponse.json()を確認(rèn)して、返品結(jié)果が期待に準(zhǔn)拠していることを確認(rèn)します。最後に、タイムアウトパラメーターを追加してタイムアウト時(shí)間を設(shè)定し、再試行ライブラリを組み合わせて自動(dòng)再生を?qū)g現(xiàn)して安定性を高めます。

Python仮想環(huán)境のセットアップと使用 Python仮想環(huán)境のセットアップと使用 Jul 06, 2025 am 02:56 AM

仮想環(huán)境は、さまざまなプロジェクトの依存関係を分離できます。 Python獨(dú)自のvenvモジュールを使用して作成されたコマンドは、python-mvenvenvです。アクティベーション方法:WindowsはEnv \ Scripts \ Activateを使用し、MacOS/LinuxはSourceENV/Bin/Activateを使用します。インストールパッケージでは、pipinstallを使用し、pipfreeze> requincement.txtを使用して要件ファイルを生成し、pipinstall-rrequirements.txtを使用して環(huán)境を復(fù)元します。注意事項(xiàng)には、GITに提出しない、新しい端末が開かれるたびに再アクティブ化すること、およびIDEが自動(dòng)識(shí)別と切り替えを使用することが含まれます。

See all articles