Python のアスタリスクは、乗算の数値演算や累乗演算に使用されるだけでなく、複数のパラメーターの受信や変数の逆アセンブリを実現するために「変数の前に 1 つまたは 2 つのアスタリスクを追加する」という特別な使用法もあります。 「アスタリスクパラメータ」の使い方を詳しく紹介します。
1. アスタリスク変数とは何ですか?
最初に、アスタリスク変数は関数のパラメータを渡すために使用されます。この位置は Convert it で任意の数の非キーワード パラメータを受け取ります。 *b の位置でタプルに変換され、二重アスタリスクは、この位置が任意の数のキーワード パラメーターを受け取り、**b の位置で辞書に変換することを意味します:
#!/usr/bin/env python #coding=utf-8 #-------- def one(a,*b): """a是一个普通传入参数,*b是一个非关键字星号参数""" print(b) one(1,2,3,4,5,6) #-------- def two(a=1,**b): """a是一个普通关键字参数,**b是一个关键字双星号参数""" print(b) two(a=1,b=2,c=3,d=4,e=5,f=6)
#プログラム出力
(2, 3, 4, 5, 6) {'b': 2, 'c': 3, 'e': 5, 'f': 6, 'd': 4}
#出力からわかるように、最初の関数では、キーワードのない任意の数のパラメーターを *b の位置に渡すことができ、*b はこれらの受信パラメーターをタプルに変換します。次の呼び出し
one(1,2,3,4,5,6)
# one(a,*b) を渡した後は、
one(1,(2,3,4, 5 ,6))
#2 番目の関数では、**b の位置は任意の数のキーワード パラメーターを受け取ることができます。次の呼び出しでは
two(a=1,b=2,c=3,d)。 =4,e=5,f=6)
#one(a,*b) を渡すと、
two(a=1,{'b': 2, 'c': 3, ' e': 5, 'f': 6, 'd': 4})
一重アスタリスクと二重アスタリスクの基本的な使い方を理解した後、それらの拡張的な使い方を見てみましょう。
2. 単一のアスタリスク変数の例
単一のアスタリスク変数は、関数のパラメーター転送でのみ使用できるわけではありません。実際、通常の変数に単一のアスタリスク接頭辞を使用すると、変数を単一の要素に分割できます。 :
#!/usr/bin/env python #coding=utf-8 #-------- def one(*x): """输出传入的第一个参数""" print(x[0]) #-------- lst=["a","b","c","d"] stri="www.pythontab.com" one(stri,lst) one(*lst) one(*stri)
#プログラム出力
www.pythontab.com a w
#one(stri,lst)が初めて呼び出されるとき、one(*x)を置換した後、それは
one(([ "a","b","c","d"],"www.pythontab.com"))
#2 回目に one(*lst) を呼び出し、one(*x) を置き換えて、待ってください。価格は
one(("a","b","c","d")) と同じです
#one( を置き換えた後、one(*stri) が 3 回呼び出される*x)、それは
one(("w","w","w",".","q","i","n","g","s"," と同等です) w","o"," r","d",".","c","o","m"))
#変数の前に単一のアスタリスクを使用する場合、これは実際には変数の逆アセンブリ操作であり、変数内の個々の要素を分解し、one() 関数に渡した後、one() 関数は渡された要素を保存します。 print(x[0]) が最初の要素を抽出できる理由
これを検証するために、one() 関数を次のように変更します。
#!/usr/bin/env python #coding=utf-8 #-------- def one(*x): """一个错误的实例,尝试修改传入的第一个参数值,引发异常""" print(x[0]) x[0]="pythontab" lst=["a","b","c","d"] one(*lst)
#リストが変更できることはわかっています。リストが分割された後、one() 関数が渡され、関数内の最初の要素の値を変更しようとします。その結果、渡された値に関係なく、「TypeError」例外がトリガーされます。この結果の理由は上記で説明されています。one(*x) がこれらの受信パラメーターを受け取った後、元の型は何ですか? *x の位置にある場合、それらは「タプル」として保存され、タプルは変更できません
いくつかの例を見てみましょう :
#!/usr/bin/env python #coding=utf-8 #-------- def one(*x): """打印出传入参数""" for a in x: print(a) lst=["abc",123,"www.pythontab.com"] stri="abcd" dect={1:"one",2:"two",3:"three"} one(*lst) one(*stri) one(*dect)
#プログラム出力
abc 123 www.pythontab.com a b c d 1 2 3
#最初の 2 つの呼び出しは理解しやすいですが、最後に辞書要素を渡しましたが、実際には、単一のアスタリスクには値が含まれていないことがわかりました。辞書内のキーを常に読み取ります。辞書内の値を読みたい場合は、二重アスタリスク
三、二重アスタリスク変数の例
を使用する必要があります。セクション 2 の最後で、単一のアスタリスクを使用して辞書を分割し、それを関数に渡しますが、取得できるのは辞書のキーのみです。 ここでは、二重のアスタリスクを使用して辞書の値を取得する方法を示します。
#プログラム出力
#!/usr/bin/env python #coding=utf-8 #-------- def one(**x): """将传入的关键字参数的值保存成元组输出""" print(x) b=() for a in x.keys(): b+=(x[a],) print(b) dect={"one":1,"two":2,"three":3} one(**dect)
#辞書に二重アスタリスク接頭辞を使用することは、辞書をキーワードパラメータに分割することと同等です **dect は分割することと同等です 辞書は次のように分割されます
one=1, two=2, three=3
# 上記のキーワード パラメータを one(**x) に渡すことは、次と同等です (前のことを思い出してください。つまり、二重アスタリスクは受け取ったすべてのキーワード パラメータを辞書に保存します) )
one({"one":1,"two":2,"three":3})
# 辞書なので、辞書内のメソッドはすべて使用できます。辞書のキーを走査し、タプルを使用してこれらのキーに対応する値を追加し、最後にタプルを出力します
追伸: 注: これを使用してください。この方法で辞書を関数に渡す場合、名前付けは辞書のキーは Python 変数の命名規則に従う必要があります。上記の分析から、二重アスタリスクが最初に辞書をキーワード パラメータの形式に変換することは、辞書内のキーを使用するのと同じであることがわかります。キーが変数の命名規則に準拠していない場合は、「TypeError」例外がスローされます。上記の辞書のキーと値を逆にして、数字をキーとして使用してみてください。という疑問が起こります。
在一个函数的接收参数中,同时出现"非关键字参数(位置参数)"和"关键字参数"时,可以使用一个单星号来分隔这两种参数,例如:
#!/usr/bin/env python #coding=utf-8 #-------- def mix(a,b,*,x,y): """位置参数与关键字参数混合""" return a,b,x,y #星号前面的a和b是位置参数,星号后面的x和y是关键字参数,调用mix()函数并传入参数时,关键字参数一定要使用"变量名=值"的形式传入数据,如果同位置参数一样传入数据,就会引发一个TypeError异常 print(mix(1,2,x=3,y=4))
#程序输出
(1, 2, 3, 4)
#在上面的mix函数中,如果位置参数与关键字参数之间已经存在了一个单星号位置参数,那么,这个参数后面的就都是关键字参数,也不需要再使用星号来分隔他们了,例如
#!/usr/bin/env python #coding=utf-8 #-------- def mix(a,b,*c,x,y): """位置参数与关键字参数混合""" return a,b,c,x,y #在*c的位置可以输入任意多个位置参数值 print(mix(1,2,3,4,5,x=6,y=7))
#程序输出
(1, 2, (3, 4, 5), 6, 7)
如果我们要在一个函数中包含多种参数的组合,必须遵守这样的顺序:位置参数(必选参数),默认参数,单星号参数或星号分隔符,关键字参数,双星号参数;
请看下面的实例:
#!/usr/bin/env python #coding=utf-8 #-------- def mix(a,b=0,*c,x,**y): """位置参数与关键字参数混合""" return a,b,c,x,y print(mix(1,2,3,4,5,x=6,y=7,z=8))
#程序输出
(1, 2, (3, 4, 5), 6, {'y': 7, 'z': 8})

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

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

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

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

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

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

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

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


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

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

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

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

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

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