Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonが関数でタプルを定義できないのはなぜですか?


Python 3.0以降、パックされていないタプルを関数のパラメーターとして定義することはできなくなりました(PEP3113)。これは、関数を次のように定義しようとした場合を意味します-

def fn(a,(b,c)):
   pass


Pythonインタープリターは、タプルの最初のブラケットに構文エラーを表示します。代わりに、タプルオブジェクトをパラメーターとして定義し、関数内で解凍します。次のコードでは、2つのポイントのx座標とy座標を表す2つのタプルオブジェクトが、2つのポイント間の距離を計算するためのパラメーターとして渡されます。計算する前に、タプルオブジェクトはそれぞれのx座標とy座標で解凍されます。

def hypot(p1,p2):
   x1,y1=p1
   x2,y2=p2
   import math
   hyp=math.sqrt((x1-x2)**2+(y1-y2)**2)
   return hyp

x=(10,10)
y=(20,20)
print ("hyp=",hypot(x,y))

  1. 実行時にPython関数をどのように定義できますか?

    タイプモジュールをインポートし、その関数types.FunctionType()を次のように使用することで、Python関数を定義し、実行時に実行できます。 このコードは、示されているようにPythonプロンプトで機能します。まず、typesモジュールをインポートします。次に、コマンドdynf=…;を実行します。次に、関数dynf()を呼び出して、次のような出力を取得します >>> import types >>> dynf = types.FunctionType(compile('print "Really Works"&#

  2. Pythonタプル

    Pythonでは、タプルは順序付けられたコレクションです。 および不変 。つまり、タプルにアイテムを追加したり、タプルからアイテムを削除したりすることはできません。 括弧()を使用してタプルを作成します および少なくとも1つのコンマ( , ) 。 タプルは、スライスの結果もタプルになることを除いて、リストと同じようにインデックス付けおよびスライスできます。 タプルを作成する方法 colorsTuple = (red, green, blue) print(colorsTuple) 出力: (red, green, blue) 1つのアイテムのみでタプルを作成する タプルには少なくと