独学pythonの道1-python基礎
14964 ワード
廖雪峰の公式サイトでpythonを学び、以下はpythonの基礎と関数の2つのモジュールの学習ノートで、内容は基本的に上の内容を引用しています.最初のブログはめちゃくちゃで、うまく整理されていません. 1.出力
python:print(‘a%d%s’%(2,'3')
c++:printf("a%d%s",2,'3')
2.リストは配列に相当するが、宣言方法には違いがある:
len(classmates)は長さを得ることができます.classmates【0】(または他の数値)はlist内の各位置の要素にアクセスできます.
append,insert,popなどは直接使える(c中stlの使い方に似ている)
最後の要素を取得する場合は、インデックスの位置の計算に加えて、
Cとの違い:
1.最後のエレメントを取得する場合は、インデックスの位置の計算に加えて、
2.tuple:メタグループは、初期化すると変更できません.append(),insert()のような方法もありません.他の要素を取得する方法はlistと同じで、通常は
次の点に注意してください.
1つの要素しかないtupleを定義するには、次のように定義します.
定義されているのはtupleではなく、
したがって、1要素のみのtuple定義には、コンマ
Pythonは、1つの要素しかないtupleを表示するときにも、カンマ
三.じょうけんけってい
ロジックはc++と似ていて、書き方に違いがあります
1.if後かっこなし、2.Elifの書き方が違います.3.ifの後にコロンを付ける
四.ループ
1.forサイクル
リスト内の各要素を操作し、書き方はc++より大幅に節約しました.
関数range(x)を用いて0-xの整数を取得することもできる
問題の結果は5050です.
2.whileサイクル:
ifと同じように括弧がなく、裏口にはコロンをつけます.
サイクル中のbreakとcontinueの用法はc++と同じである.
五.dict&set
Pythonには辞書:dictのサポート、dictフルネームdictionaryが内蔵されており、他の言語ではmapとも呼ばれ、キー値(key-value)で格納され、検索速度が極めて速い.
dictで実現すると、「名前」-「成績」の対照表が1つ必要で、名前に基づいて成績を直接検索すると、この表がどんなに大きくても、検索速度は遅くなりません.Pythonでdictを次のように書きます.
dictのkeyは可変オブジェクトでなければなりません.
set:setは数学的な意味での無秩序と重複要素のない集合と見なすことができるため、2つのsetは数学的な意味での交差、並列などの操作を行うことができる.
setとdictの唯一の違いは、対応するvalueが格納されていないことだけですが、setの原理はdictと同じなので、同じように可変オブジェクトを入れることはできません.2つの可変オブジェクトが等しいかどうかを判断できないため、set内部に「重複要素がない」ことを保証することはできません.リストをsetに入れて、間違いが報告されるかどうか見てみましょう.
可変オブジェクト:listなど
ろくかんすう
python関数ライブラリ:https://docs.python.org/3/library/functions.html#abs
1.関数の定義
Pythonでは、関数を使用する
c++書き慣れたpythonには小さな間違いがあります.
def my_abs(x): if x >= 0: return x else: return -x def my_abs(x): if x>=0: return x; else return -x;
まずpythonはc++とは異なり、各行にセミコロンを付ける必要があります.そしてelseの後ろのドアにもコロンが必要です.最後に、pythonには{}で囲まれていないので、インデントが正しいことを保証しなければなりません.そうしないと、エラーが発生します.
上記のコードをpyファイルとして保存した後、そのファイルの現在のディレクトリの下でPythonインタプリタを起動します.(私のパソコンではE:Users博偉DesktopPYファイル>python)です.そして関数をインポートして使えます
>>> from my_abs import my_abs >>> my_abs(-9)
9
空関数(何の役に立つか分からないので、先にコードしてください)
何もしない空の関数を定義するには、
欠落している
パラメータチェック
1.パラメータの個数が間違っている場合、Python解釈器は自動的に検出され、放出される
2.タイプエラー
しかしabs関数にタイプチェックを付けないと検出されません.pythonのパラメータはタイプを持つ必要がないので、関数内部でパラメータタイプが間違っているかどうかを判断します.この新聞の間違いは意外にも自分で書かなければならない.
pythonの関数は複数の変数を返すことができ、その原理は実際にはtupleを返すことである.
パラメータ:
1.デフォルトのパラメータ:
巣滴cもありました.
デフォルトパラメータを定義するには、デフォルトパラメータが不変のオブジェクトを指す必要があります.
例えばL=[]ではなく、L=noneでは廖雪峰の例を見ることができます.
2.可変パラメータ
これはcよりずっと便利だと言える.
3.キーワードパラメータ
可変パラメータを使用すると、0つまたは任意のパラメータを入力できます.これらの可変パラメータは、関数呼び出し時に自動的にtupleに組み込まれます.キーワードパラメータを使用すると、0つまたは任意のパラメータ名を含むパラメータを入力できます.これらのキーワードパラメータは、関数内で自動的にdictに組み立てられます.
キーワードパラメータの命名
キーワードパラメータの場合、関数の呼び出し元は、制限されていない任意のキーワードパラメータを入力できます.どのようなものが入ってきたのかは、関数内部でチェックする必要があります
パラメータの組み合わせ
Pythonで関数を定義するには、必須パラメータ、デフォルトパラメータ、可変パラメータ、キーワードパラメータ、名前付きキーワードパラメータの5つのパラメータを組み合わせて使用できます.ただし、パラメータ定義の順序は、必須パラメータ、デフォルトパラメータ、可変パラメータ、ネーミングキーパラメータ、キーワードパラメータである必要があります.
1つの星はlistのすべての要素がargsの2つの星に入るのは辞書に伝わります
関数呼び出しの際、Pythonインタプリタは自動的にパラメータ位置とパラメータ名に従って対応するパラメータを入力します.
最も不思議なのはtupleとdictを通じて、上記の関数を呼び出すこともできます.
したがって、パラメータがどのように定義されているかにかかわらず、任意の関数について、
python:print(‘a%d%s’%(2,'3')
c++:printf("a%d%s",2,'3')
classmates = ['Michael', 'Bob', 'Tracy']
len(classmates)は長さを得ることができます.classmates【0】(または他の数値)はlist内の各位置の要素にアクセスできます.
append,insert,popなどは直接使える(c中stlの使い方に似ている)
最後の要素を取得する場合は、インデックスの位置の計算に加えて、
-1
インデックスを使用して、最後の要素を直接取得できます.>>> classmates[-1]
Cとの違い:
1.最後のエレメントを取得する場合は、インデックスの位置の計算に加えて、
-1
インデックスとして、最後のエレメントを直接取得できます.>>> classmates[-1]
2.tuple:メタグループは、初期化すると変更できません.append(),insert()のような方法もありません.他の要素を取得する方法はlistと同じで、通常は
classmates[0]
・、classmates[-1]
を使用できますが、別の要素に値を付けることはできません.次の点に注意してください.
1つの要素しかないtupleを定義するには、次のように定義します.
>>> t = (1)
>>> t
1
定義されているのはtupleではなく、
1
この数です!これは括弧()
tupleと数学式中の括弧の両方を表すことができるため曖昧であるため、Pythonでは、この場合は括弧で計算し、計算結果は当然1
と規定している.したがって、1要素のみのtuple定義には、コンマ
,
を付けて曖昧さを解消する必要があります.>>> t = (1,)
>>> t
(1,)
Pythonは、1つの要素しかないtupleを表示するときにも、カンマ
,
を付けて、数学計算の意味で括弧と誤解しないようにします.三.じょうけんけってい
ロジックはc++と似ていて、書き方に違いがあります
age = 3
if age >= 18:
print('adult')
elif age >= 6:
print('teenager')
else:
print('kid')
1.if後かっこなし、2.Elifの書き方が違います.3.ifの後にコロンを付ける
四.ループ
1.forサイクル
sum = 0
for x in range(101):
sum = sum + x
print(sum)
リスト内の各要素を操作し、書き方はc++より大幅に節約しました.
関数range(x)を用いて0-xの整数を取得することもできる
問題の結果は5050です.
2.whileサイクル:
n = 1
while n <= 100:
print(n)
n = n + 1
print('END')
ifと同じように括弧がなく、裏口にはコロンをつけます.
サイクル中のbreakとcontinueの用法はc++と同じである.
五.dict&set
Pythonには辞書:dictのサポート、dictフルネームdictionaryが内蔵されており、他の言語ではmapとも呼ばれ、キー値(key-value)で格納され、検索速度が極めて速い.
dictで実現すると、「名前」-「成績」の対照表が1つ必要で、名前に基づいて成績を直接検索すると、この表がどんなに大きくても、検索速度は遅くなりません.Pythonでdictを次のように書きます.
>>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
>>> d['Michael']
95
dictのkeyは可変オブジェクトでなければなりません.
set:setは数学的な意味での無秩序と重複要素のない集合と見なすことができるため、2つのsetは数学的な意味での交差、並列などの操作を行うことができる.
setとdictの唯一の違いは、対応するvalueが格納されていないことだけですが、setの原理はdictと同じなので、同じように可変オブジェクトを入れることはできません.2つの可変オブジェクトが等しいかどうかを判断できないため、set内部に「重複要素がない」ことを保証することはできません.リストをsetに入れて、間違いが報告されるかどうか見てみましょう.
可変オブジェクト:listなど
ろくかんすう
python関数ライブラリ:https://docs.python.org/3/library/functions.html#abs
1.関数の定義
Pythonでは、関数を使用する
def
文を定義し、関数名、括弧、括弧のパラメータとコロン:
を順に書き出し、インデントブロックに関数体を記述し、関数の戻り値をreturn
文で返します.c++書き慣れたpythonには小さな間違いがあります.
def my_abs(x): if x >= 0: return x else: return -x def my_abs(x): if x>=0: return x; else return -x;
まずpythonはc++とは異なり、各行にセミコロンを付ける必要があります.そしてelseの後ろのドアにもコロンが必要です.最後に、pythonには{}で囲まれていないので、インデントが正しいことを保証しなければなりません.そうしないと、エラーが発生します.
上記のコードをpyファイルとして保存した後、そのファイルの現在のディレクトリの下でPythonインタプリタを起動します.(私のパソコンではE:Users博偉DesktopPYファイル>python)です.そして関数をインポートして使えます
>>> from my_abs import my_abs >>> my_abs(-9)
9
空関数(何の役に立つか分からないので、先にコードしてください)
何もしない空の関数を定義するには、
pass
文を使用します.def nop():
pass
pass
文は何もしないで、何の役に立つの?実際にはpass
プレースホルダとして使えるので、例えば今まだ関数の書き方を考えていないコードであれば、まず1つpass
を置いて、コードを実行させることができます.pass
他の文にも使えます.if age >= 18:
pass
欠落している
pass
コードを実行すると構文エラーが発生します.パラメータチェック
1.パラメータの個数が間違っている場合、Python解釈器は自動的に検出され、放出される
TypeError
:>>> my_abs(1, 2)
Traceback (most recent call last):
File " ", line 1, in
TypeError: my_abs() takes 1 positional argument but 2 were given
2.タイプエラー
>>> my_abs('A')
Traceback (most recent call last):
File " ", line 1, in
File " ", line 3, in my_abs
TypeError: bad operand type
しかしabs関数にタイプチェックを付けないと検出されません.pythonのパラメータはタイプを持つ必要がないので、関数内部でパラメータタイプが間違っているかどうかを判断します.この新聞の間違いは意外にも自分で書かなければならない.
def my_abs(x):
if not isinstance(x, (int, float)):
raise TypeError('bad operand type')
if x >= 0:
return x
else:
return -x
pythonの関数は複数の変数を返すことができ、その原理は実際にはtupleを返すことである.
パラメータ:
1.デフォルトのパラメータ:
def power(x, n=2):
s = 1
while n > 0:
n = n - 1
s = s * x
return s
巣滴cもありました.
デフォルトパラメータを定義するには、デフォルトパラメータが不変のオブジェクトを指す必要があります.
例えばL=[]ではなく、L=noneでは廖雪峰の例を見ることができます.
2.可変パラメータ
これはcよりずっと便利だと言える.
*nums
nums
このリストのすべての要素を可変パラメータとして渡すことを示す.この書き方はかなり役に立ち、よく見られます.def calc(*numbers):
sum = 0
for n in numbers:
sum = sum + n * n
return sum
>>> calc(1, 2)
5
>>> calc()
0
3.キーワードパラメータ
可変パラメータを使用すると、0つまたは任意のパラメータを入力できます.これらの可変パラメータは、関数呼び出し時に自動的にtupleに組み込まれます.キーワードパラメータを使用すると、0つまたは任意のパラメータ名を含むパラメータを入力できます.これらのキーワードパラメータは、関数内で自動的にdictに組み立てられます.
def person(name, age, **kw):
print('name:', name, 'age:', age, 'other:', kw)
>>> person('Bob', 35, city='Beijing')
name: Bob age: 35 other: {'city': 'Beijing'}
>>> person('Adam', 45, gender='M', job='Engineer')
name: Adam age: 45 other: {'gender': 'M', 'job': 'Engineer'}
キーワードパラメータの命名
キーワードパラメータの場合、関数の呼び出し元は、制限されていない任意のキーワードパラメータを入力できます.どのようなものが入ってきたのかは、関数内部でチェックする必要があります
kw
キーワードパラメータに名前を付けるときは、特に注意してください.可変パラメータがない場合は、*
を特殊区切り記号として付けなければなりません.欠落している場合*
Pythonインタプリタは位置パラメータと名前付きキーワードパラメータを認識できませんパラメータの組み合わせ
Pythonで関数を定義するには、必須パラメータ、デフォルトパラメータ、可変パラメータ、キーワードパラメータ、名前付きキーワードパラメータの5つのパラメータを組み合わせて使用できます.ただし、パラメータ定義の順序は、必須パラメータ、デフォルトパラメータ、可変パラメータ、ネーミングキーパラメータ、キーワードパラメータである必要があります.
def f1(a, b, c=0, *args, **kw):
print('a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw)
def f2(a, b, c=0, *, d, **kw):
print('a =', a, 'b =', b, 'c =', c, 'd =', d, 'kw =', kw)
1つの星はlistのすべての要素がargsの2つの星に入るのは辞書に伝わります
関数呼び出しの際、Pythonインタプリタは自動的にパラメータ位置とパラメータ名に従って対応するパラメータを入力します.
>>> f1(1, 2)
a = 1 b = 2 c = 0 args = () kw = {}
>>> f1(1, 2, c=3)
a = 1 b = 2 c = 3 args = () kw = {}
>>> f1(1, 2, 3, 'a', 'b')
a = 1 b = 2 c = 3 args = ('a', 'b') kw = {}
>>> f1(1, 2, 3, 'a', 'b', x=99)
a = 1 b = 2 c = 3 args = ('a', 'b') kw = {'x': 99}
>>> f2(1, 2, d=99, ext=None)
a = 1 b = 2 c = 0 d = 99 kw = {'ext': None}
最も不思議なのはtupleとdictを通じて、上記の関数を呼び出すこともできます.
>>> args = (1, 2, 3, 4)
>>> kw = {'d': 99, 'x': '#'}
>>> f1(*args, **kw)
a = 1 b = 2 c = 3 args = (4,) kw = {'d': 99, 'x': '#'}
>>> args = (1, 2, 3)
>>> kw = {'d': 88, 'x': '#'}
>>> f2(*args, **kw)
a = 1 b = 2 c = 3 d = 88 kw = {'x': '#'}
したがって、パラメータがどのように定義されているかにかかわらず、任意の関数について、
func(*args, **kw)
のような形式で呼び出すことができます.