2.3Python言語の基盤

2.3 Python言語の基本##

1 言語セマンティクス##

括弧ではなくインデント###

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')

Duck typing

プログラミングでは、ダックタイピング(英語:ダックタイピング)は動的タイピングのスタイルです。このスタイルでは、オブジェクトの効果的なセマンティクスは、特定のクラスから継承したり、特定のインターフェイスを実装したりすることによってではなく、「現在のメソッドとプロパティのコレクション」によって決定されます。この概念の名前は、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配列、およびユーザー定義の型(クラス)をすべて変更できます。

文字列とタプルは変更できません。

2 スカラータイプ##

このタイプは、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 ()

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}'

この文字列では:

template.format(4.5560,'Argentine Pesos',1)

'4.56 Argentine Pesos are worth US$1'

Recommended Posts

2.3Python言語の基盤
Pythonの基盤を統合する(2)
Pythonの基盤を統合する(4)
Python(6)の基盤を統合する
pythonは解釈された言語ですか?
pythonは解釈された言語ですか
Python(5)の基盤を統合する
Pythonの基盤を統合する(3)
なぜpythonを接着剤言語と呼ぶのか
Pythonはクロスプラットフォームの言語コードです
python言語は無料ですか、それとも有料ですか?
pythonは主流の言語になることができますか?
CentOS7はPython言語開発環境を構成します
Python CookBook
Python FAQ
Python3モジュール
python(you-get)
Python文字列
Pythonの基本
Pythonの基本2
Python exec
Pythonノート
Python3タプル
CentOS + Python3.6 +
Python Advanced(1)
Pythonデコレータ
Pythonマルチスレッド
Pythonツールチェーン
Python3リスト
Pythonマルチタスク-日常
Pythonの概要
pythonの紹介
Pythonアナリティック
Pythonの基本
Python言語の本質:Itertoolsライブラリ
07.Python3関数
python言語の利点は何ですか
Pythonの基本3
Pythonマルチタスクスレッド
Python関数
python sys.stdout
Pythonはスクリプト言語としてカウントされますか?
python演算子
Pythonエントリ-3
Centos 7.5 python3.6
Python文字列
pythonキューキュー
Pythonの基本4
Pythonの基本5
C言語プログラムを呼び出すPythonのメソッド分析