Pythonは、R、C ++、Javaのような括弧の代わりに、タブまたはスペースを使用してコード構造を整理します。
デフォルトのインデントとして4つのスペースを使用し、タブキーを4つのスペースに設定することをお勧めします
さらに、複数のステートメントをセミコロンで区切ることができます。
a =5; b =6; c =7
pythonでは、数値、文字列、データ構造、関数、クラス、およびモジュールはすべて、Pythonオブジェクトとして理解できる独自の「ボックス」を持っています。以下のすべてのオブジェクトは、オブジェクトによって直接参照されます。
括弧を使用する
result =f(x,y,z)
C ++やJavaなどの言語とは異なり、pythonのオブジェクト参照には独自のタイプがありません。ただし、タイプごとにタイプを確認できます。
a =5type(a)
int
タイプ情報はオブジェクト自体に保存されます。
Pythonは強力な型と見なすことができます。つまり、すべてのオブジェクトには明確な型があります。したがって、次の計算は成り立たないでしょう。ただし、Visual Basicは「5」を整数(int)に変換し、JavaScriptは5を文字列(string)に変換します。
'5'+5
TypeError Traceback (most recent call last)
in ()
----> 1 '5' + 5
TypeError: Can't convert 'int' object to str implicitly
ただし、intとfloatの間には暗黙の変換があります。
a =4.5
b =2print('a is {0}, b is {1}'.format(type(a),type(b)))
a is <class 'float'>, b is <class 'int'>
a / b
2.25
各オブジェクトのタイプを知ることは非常に重要であるため、 isinstance
関数を使用してオブジェクトのタイプを表示できます。
a =5isinstance(a, int)
True
aとbがintタイプかfloatタイプかを確認します
a=5;b=4.5
isinstance(a,(int, float))
True
isinstance(a,(int, float))
True
属性は、現在のオブジェクト内の他のいくつかのpythonオブジェクトを参照します。メソッドは、オブジェクトの内部データにアクセスできる現在のオブジェクトのいくつかの関数を参照します。
obj.attribute_name
を通してあなたは見ることができます:
a='foo'
a.<Press Tab>
getattr関数を介して属性とメソッドにアクセスできます。
getattr(a,'split')
プログラミングでは、ダックタイピング(英語:ダックタイピング)は動的タイピングのスタイルです。このスタイルでは、オブジェクトの効果的なセマンティクスは、特定のクラスから継承したり、特定のインターフェイスを実装したりすることによってではなく、「現在のメソッドとプロパティのコレクション」によって決定されます。この概念の名前は、James Whitcomb Rileyによって提案されたダックテストに由来します(以下の「履歴」セクションを参照)。「ダックテスト」は次のように表すことができます。
「アヒルのように歩き、アヒルのように泳ぎ、アヒルのように鳴く鳥を見ると、この鳥はアヒルと呼ぶことができます。」
アヒルのタイプでは、問題はオブジェクト自体のタイプではなく、それがどのように使用されるかです。
たとえば、オブジェクトが反復原理を実装できる場合、そのオブジェクトは反復可能です。このオブジェクトに魔法のメソッド __iter__
があるかどうかを確認できます。または、検出するiter関数を自分で作成します。
def isiterable(obj):try:iter(obj)return True
except TypeError: # not iterable
return False
isiterable('a string')
True
isiterable([1,2,3])
True
isiterable(5)
False
この関数は主に、複数のタイプを受け入れることができる関数を作成するために使用されます。たとえば、任意のシーケンス(list、tuple、ndarray)またはイテレーターを受信する関数を作成します。受信したものがリストでない場合は、人為的にリストに変換します。
if not isinstance(x, list) and isiterable(x): #xがリストではなく、xが反復可能である場合
x =list(x) #xをリストに変換する
たとえば、some_module.pyファイルを作成しました。
# some_module.py PI =3.14159
def f(x):return x +2
def g(a, b):return a + b
次に、他のファイルには、複数のインポート方法があります。
# 1 import some_module
result = some_module.f(5)
pi = some_module.PI
# 2 from some_module import f, g, PI
result =g(5, PI)
# 3 import some_module as sm
from some_module import PI as pi, g as gf
r1 = sm.f(pi)
r2 =gf(6, pi)
2つの参照が同じオブジェクトを参照しているかどうかを確認するには、isとnotを使用します。
a =[1,2,3]
b = a
c =list(a)
a is b
True
a is not c
True
c = list(a)
のリスト関数は新しいリストを作成するため、cは新しいリストであり、元のaを指していません。
のもう1つの一般的な方法は、インスタンスがnoneであるかどうかを確認することです。
a = None
a is None
True
さらに、+、-、==、<=、&、|なども演算子と見なされます。これについては詳しく説明しません。この[リンク](http://www.runoob.com/python/python-operators.html)を直接確認できます。
pythonオブジェクトでは、リスト、dict、NumPy配列、およびユーザー定義の型(クラス)をすべて変更できます。
文字列とタプルは変更できません。
このタイプは、None、str、bytes、float、bool、intを指します
ival =123554
ival **6
3557466836753811461234217695296
fval =7.234
fval2 =5.43e-5
5 /2
2.5
# 商を取る
5 //2
2
# 残りを取る
5 %2
1
a ='one way of writing a string'
b ="another way"
c ="""
This is a longer string that
spans multiple lines
"""
c.count('\n') #3つのキャリッジリターンがあります
3
文字列タイプは不変です:
a[10]='f'
TypeError Traceback (most recent call last)
in ()
1 a[10] = 'f'
TypeError: 'str' object does not support item assignment
他のタイプを文字列に変換します。
a =5.6
s =str(a)
s
'5.6'
文字列は一連のUnicode文字であるため、リストやタプルのようにシーケンスとして扱うことができます。
s ='python'list(s)
[' p', 'y', 't', 'h', 'o', 'n']
s[:3]
' pyt'
バックスラッシュは、キャリッジリターンなどの特殊な文字を指定するために使用されます\ n
s ='12\\34'print(s)
12\34
プレフィックスrを使用すると、多くのバックスラッシュを入力しなくても、目的の文字列形式を直接書き込むことができます。
s = r'this\has\no\special\characters'
# 実際の
s
' this\has\no\special\characters'
# 加算は、2つの文字列を連結するために使用されます
s + s
' this\has\no\special\charactersthis\has\no\special\characters'
文字列テンプレート、つまりフォーマットは非常に重要なトピックです。文字列ojecjtにはフォーマットメソッドがあります。
template ='{0:.2f} {1:s} are worth US${2:d}'
template
'{0:.2 f} {1:s} are worth US${2:d}'
この文字列では:
{0:.2 f}
:最初のパラメータはfloat型で、小数点以下2桁です
{1: s)
:2番目のパラメーターを文字列タイプに変更します
{2: d)
:3番目のパラメーターを正確な整数に変更します
template.format(4.5560,'Argentine Pesos',1)
'4.56 Argentine Pesos are worth US$1'
Recommended Posts