Python3 基本構文

エンコーディング

デフォルトでは、Python3 ソースファイルはUTF-8エンコードされ、すべての文字列は unicode 文字列です。

もちろん、ソースファイルに別のエンコーディングを指定することもできます:

# -*- coding: cp-1252 -*-

上記の定義は、ソースファイルで Windows-1252 文字セットの文字エンコーディングを使用することを許可します。対応する適切な言語は、ブルガリア語、ベラルーシ語、マケドニア語、ロシア語、セルビア語です。


識別子

  • 最初の文字は英字(a-z, A-Z)またはアンダースコアで始まる必要があります_ 。
  • 識別子の残りの部分は、英字、数字、アンダースコアで構成されます。
  • 識別子は大文字と小文字を区別します。count と Count は異なる識別子です。
  • 識別子の長さに厳格な制限はありませんが、簡潔に保つことをお勧めします(通常は20文字以内)。
  • 予約キーワードの使用は禁止されています。たとえば、if、for、class などは識別子として使用できません。

有効な識別子:

age = 25                # 普通变量名,最常见
user_name = "Alice"     # 用下划线连接单词,清晰易读
_total = 100            # 下划线开头通常表示“内部使用”或“私有”
MAX_SIZE = 1024         # 全大写通常表示“常量”(固定不变的值)
calculate_area()        # 函数名,动词+名词
StudentInfo             # 类名,首字母大写(驼峰命名法)
__private_var           # 双下划线开头,有特殊含义

無効な識別子:

2nd_place = "silver"    # 错误:以数字开头
user-name = "Bob"       # 错误:包含连字符
class = "Math"          # 错误:使用关键字
$price = 9.99          # 错误:包含特殊字符
for = "loop"           # 错误:使用关键字

Python 3 は Unicode 文字を識別子として使用できます。中国語(漢字)を変数名として使用でき、非 ASCII 識別子も許可されています。

姓名 = "张三"  # 合法
π = 3.14159   # 合法

識別子が有効かどうかをテストする:

例

def is_valid_identifier(name):
    try:
        exec(f"{name} = None")
        return True
    except:
        return False

print(is_valid_identifier("2var"))  # False
print(is_valid_identifier("var2"))  # True

Python 予約キーワード

予約語はキーワードです。これらを識別子名として使用することはできません。Python の標準ライブラリは keyword モジュールを提供しており、現在のバージョンのすべてのキーワードを出力できます:

>>> import keyword
>>> keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
>>> 
カテゴリキーワード説明
論理値Trueブール真値
Falseブール偽値
None空値または無値を表します
論理演算and論理 AND 演算
or論理 OR 演算
not論理 NOT 演算
条件制御if条件判断文
elifそれ以外の場合(else if の略)
elseそれ以外の分岐
ループ制御for反復ループ
while条件ループ
breakループを抜ける
continue現在のループの残りの部分をスキップして、次の反復に進みます
例外処理tryコードブロックの実行を試みる
except例外をキャッチする
finally例外が発生するかどうかに関係なく実行されるコードブロック
raise例外をスローする
関数定義def関数を定義する
return関数から値を返す
lambda無名関数を作成する
クラスとオブジェクトclassクラスを定義する
delオブジェクト参照を削除する
モジュールのインポートimportモジュールをインポート
fromモジュールから特定の部分をインポート
asインポートしたモジュールまたはオブジェクトにエイリアスを作成する
スコープglobalグローバル変数を宣言する
nonlocal非ローカル変数を宣言する(ネストされた関数用)
非同期プログラミングasync非同期関数を宣言する
await非同期操作の完了を待つ
その他assertアサーション。条件が真かどうかをテストするために使用されます
inメンバーシップをチェックする
isオブジェクトの同一性をチェックする(同じオブジェクトかどうか)
pass空文。プレースホルダーとして使用される
withコンテキストマネージャー。リソース管理に使用される
yieldジェネレーター関数から値を返す

その他の Python 予約キーワードのリファレンス:https://www.example.com/python3/python3-keyword.html。


コメント

Python では単行コメントは#で始まります。例は次のとおりです:

例(Python 3.0+)

#!/usr/bin/python3 # 第一个注释 print ("Hello, Python!") # 第二个注释

上記のコードを実行すると、出力結果は次のようになります:

Hello, Python!

複数行コメントは複数の#記号、および'''と""":

例(Python 3.0+)

#!/usr/bin/python3 # 第一个注释 # 第二个注释 '''第三注释 第四注释''' """第五注释 第六注释""" print ("Hello, Python!")

上記のコードを実行すると、出力結果は次のようになります:

Hello, Python!

行とインデント

Python の最大の特徴は、インデントを使用してコードブロックを表すことであり、中括弧を使用する必要はありません。{} 。

インデントのスペース数は変更可能ですが、同じコードブロック内の文は同じ数のインデントスペースを含む必要があります。例は次のとおりです:

例(Python 3.0+)

if True: print ("True") else: print ("False")

次のコードでは、最後の行の文のインデントスペース数が一致しないため、実行時エラーが発生します:

例

if True:
    print ("Answer")
    print ("True")
else:
    print ("Answer")
  print ("False")    # 缩进不一致,会导致运行错误

上記のプログラムはインデントが一致しないため、実行後に次のようなエラーが発生します:

 File "test.py", line 6
    print ("False")    # 缩进不一致,会导致运行错误
                                      ^
IndentationError: unindent does not match any outer indentation level

複数行の文

Python は通常1行に1つの文を書きますが、文が非常に長い場合は、バックスラッシュを使用できます\を使用して複数行の文を実現します。例:

total = item_one + \
        item_two + \
        item_three

例

item_one = 1
item_two = 2
item_three = 3
total = item_one + \
        item_two + \
        item_three
print(total) # 出力は 6

[]、{}、または () 内の複数行の文は、バックスラッシュを使用する必要はありません\、例:

total = ['item_one', 'item_two', 'item_three',
        'item_four', 'item_five']

数値(Number)型

Python の数値には、整数、ブール型、浮動小数点数、複素数の4つの型があります。

  • int(整数)、例 1。整数型は int の1つだけで、長整数として表されます。python2 の Long はありません。
  • bool(ブール)、例 True。
  • float(浮動小数点数)、例 1.23、3E-2
  • complex(複素数) - 複素数は実部と虚部から構成され、形式は a + bj です。a は実部、b は虚部、j は虚数単位を表します。例 1 + 2j、1.1 + 2.2j

文字列(String)

  • Python の一重引用符'と二重引用符"使用は完全に同じです。
  • 三重引用符を使用します(''' 或 """)を使用すると、複数行の文字列を指定できます。
  • エスケープ文字\。
  • バックスラッシュはエスケープに使用でき、rバックスラッシュをエスケープさせないようにできます。例えばr"this is a line with \n" 则 \nが表示され、改行ではありません。
  • 文字列をリテラルに連結します。例えば"this " "is " "string"は自動的に変換されますthis is string。
  • 文字列は+演算子で連結でき、*演算子で繰り返すことができます。
  • Python の文字列には2つのインデックス方式があり、左から右へは0で始まり、右から左へは-1で始まります。
  • Python の文字列は変更できません。
  • Python には独立した文字型はありません。1文字は長さ1の文字列です。
  • 文字列のスライスstr[start:end]、ここで start(含む)はスライスの開始インデックス、end(含まない)はスライスの終了インデックスです。
  • 文字列のスライスにはステップパラメータ step を追加できます。構文形式は次のとおりです:str[start:end:step]
word = '字符串'
sentence = "这是一个句子。"
paragraph = """这是一个段落,
可以由多行组成"""

例(Python 3.0+)

#!/usr/bin/python3 str='123456789' print(str) # 输出字符串 print(str[0:-1]) # 最初から最後から2番目までのすべての文字を出力 print(str[0]) # 输出字符串第一个字符 print(str[2:5]) # 3番目から6番目まで(6番目を含まない)の文字を出力 print(str[2:]) # 3番目以降のすべての文字を出力する print(str[1:5:2]) # 2番目から5番目までの、1つおきの文字を出力(ステップ2) print(str * 2) # 文字列を2回出力 print(str + 'こんにちは') # 文字列を連結する print('------------------------------') print('hello\nサンプル') # バックスラッシュ(\)+nを使用して特殊文字をエスケープする print(r'hello\nサンプル') # 文字列の前に r を付けると、raw文字列となり、エスケープは発生しない

ここでの r は raw、つまり raw string を指し、バックスラッシュを自動的にエスケープします。例えば:

>>> print('\n')       # 输出空行

>>> print(r'\n')      # 输出 \n
\n
>>>

上記の例の出力結果:

123456789
12345678
1
345
3456789
24
123456789123456789
123456789你好
------------------------------
hello
サンプル
hello\nサンプル

空行

関数間やクラスのメソッド間は空行で区切り、新しいコードの始まりを表します。クラスと関数エントリの間も1行の空行で区切り、関数エントリの開始を強調します。

空行はコードのインデントとは異なり、Python の構文の一部ではありません。空行を挿入しなくても、Python インタプリタはエラーになりません。しかし、空行は異なる機能や意味を持つコードのブロックを区切る役割があり、将来のコードの保守やリファクタリングを容易にします。

覚えておきましょう:空行もプログラムコードの一部です。


ユーザー入力の待機

次のプログラムを実行すると、Enterキーを押した後でユーザー入力を待ちます:

例(Python 3.0+)

#!/usr/bin/python3 input("\n\nEnterキーを押すと終了します。")

上記のコードでは、\n\n結果の出力前に、2つの新しい空行が出力されます。ユーザーがenterキーを押すと、プログラムは終了します。


同一行に複数の文を表示

Python は同じ行に複数の文を記述できます。文の間はセミコロンを使用します。;で区切ります。以下は簡単な例です:

例(Python 3.0+)

#!/usr/bin/python3 import sys; x = 'サンプル'; sys.stdout.write(x + '\n')

スクリプトで上記のコードを実行すると、出力結果は次のとおりです:

サンプル

対話型コマンドラインで実行すると、出力結果は次のとおりです:

>>> import sys; x = 'サンプル'; sys.stdout.write(x + '\n')
サンプル
7

ここの 7 は文字数を表し、サンプル6文字あり、\n1文字を表すため、合計すると7文字になります。

>>> import sys
>>> sys.stdout.write(" hi ")    # hi 前后各有 1 个空格
 hi 4

複数の文でコードグループを構成

インデントが同じ文の集まりは1つのコードブロックを構成し、これをコードグループと呼びます。

if、while、def、class のような複合文は、最初の行がキーワードで始まり、コロン( : )で終わります。その後の1行または複数行のコードがコードグループを構成します。

最初の行とそれに続くコードグループをまとめて節(clause)と呼びます。

以下の例のとおりです:

if expression : 
   suite
elif expression : 
   suite 
else : 
   suite

print 出力

printデフォルトの出力は改行されます。改行しないようにするには、変数の末尾に追加しますend="":

例(Python 3.0+)

#!/usr/bin/python3 x="a" y="b" # 改行して出力 print( x ) print( y ) print('---------') # 改行せずに出力 print( x, end=" " ) print( y, end=" " ) print()

上記の例の実行結果は次のとおりです:

a
b
---------
a b

詳細は以下を参照してください:Python2 と Python3 の print の改行なし


import と from...import

python ではimportまたはfrom...importを使用して、対応するモジュールをインポートします。

モジュール全体(somemodule)をインポートする形式は次のとおりです:import somemodule

特定のモジュールから特定の関数をインポートする形式は次のとおりです:from somemodule import somefunction

特定のモジュールから複数の関数をインポートする形式は次のとおりです:from somemodule import firstfunc, secondfunc, thirdfunc

特定のモジュール内のすべての関数をインポートする形式は次のとおりです:from somemodule import *

sys モジュールをインポート

import sys print('================Python import mode==========================') print ('コマンドライン引数は次のとおりです:') for i in sys.argv: print (i) print ('\npython のパスは',sys.path)

sys モジュールの argv, path メンバーをインポート

from sys import argv,path # 特定のメンバーをインポート print('================python from import===================================') print('path:',path) # path メンバーはすでにインポート済みなので、ここで参照するときに sys.path を付ける必要はありません

詳細は以下を参照できます:Python の import と from … import の主な違い


コマンドライン引数

多くのプログラムは、基本情報を確認するための操作を実行できます。Python では -h パラメータを使用して各パラメータのヘルプ情報を確認できます:

$ python -h
usage: python [option] ... [-c cmd | -m mod | file | -] [arg] ...
Options and arguments (and corresponding environment variables):
-c cmd : program passed in as string (terminates option list)
-d     : debug output from parser (also PYTHONDEBUG=x)
-E     : ignore environment variables (such as PYTHONPATH)
-h     : print this help message and exit

[ etc. ]

Python をスクリプト形式で実行する場合、コマンドラインから入力された引数を受け取ることができます。具体的な使用方法は参照できます:Python 3 コマンドライン引数。

その他の拡張