基本

MicroPythonを使ったデジタル入出力のガイドです。


Author:Pedro LimaLast revision:2024/12/05

“Python"ベルト(パイソンに毒はありません)で多くのツールを利用するには、MicroPythonの基本的な概念を理解することが不可欠です。このガイドは言語の基礎に焦点をあて、変数の型やリスト、タプル、関数、例外を取り扱い、効率的で強力なプログラムを作るのに役立ちます。

変数とデータ型

MicroPythonの変数は、明示的に型を宣言する必要はありません。型は代入する値から推測されます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# Different data types
integer_var = 42            # Integer
float_var = 3.14            # Float
string_var = "Hello!"       # String
boolean_var = True          # Boolean

# Print variable types
print(type(integer_var))  # Output: <class 'int'>
print(type(float_var))    # Output: <class 'float'>
print(type(string_var))   # Output: <class 'str'>
print(type(boolean_var))  # Output: <class 'bool'>

リスト

MicroPythonでのリストは、要素の集合を格納する多用途の手段です。任意のデータ型の組み合わせを格納でき、変更可能です。つまり、生成後変更することができます。

リストの生成

リストを生成するには、変数を宣言するときに、角括弧[]を後ろにつけます。リストの要素は、コンマ(,)で区切ります。

1
2
my_list = [1, 2, 3, "Four", True]
print(my_list)  # Output: [1, 2, 3, 'Four', True]

要素アクセス

リストは0から始まります。つまり、最初の要素のインデックスは0です。

1
2
print(my_list[0])  # Output: 1
print(my_list[3])  # Output: Four

リストを変更する

リスト内の要素に新しい値を代入して変更できます。

1
2
my_list[1] = 20
print(my_list)  # Output: [1, 20, 3, 'Four', True]

一般的なリストメソッド

1
2
3
4
5
my_list.append("New Item")  # Add an item
print(my_list)              # Output: [1, 20, 3, 'Four', True, 'New Item']

my_list.pop(2)              # Remove item at index 2
print(my_list)              # Output: [1, 20, 'Four', True, 'New Item']

タプル

タプルはリストに似ていますが、不変です。つまり、生成後に値を変更することはできません。固定要素を表現するのに有用です。

タプルの生成

1
2
my_tuple = (1, 2, 3, "Four", True)
print(my_tuple)  # Output: (1, 2, 3, 'Four', True)

要素アクセス

リスト同様、インデックスは0から始まります。

1
2
print(my_tuple[0])  # Output: 1
print(my_tuple[3])  # Output: Four

タプルを使う理由?

  • 効率性: タプルはリストよりメモリを消費しません。
  • 安全性: 不変性により、誤ってデータを変更することを防ぎます。

一般的なタプルメソッド

リストと比べるとタプルは限られていますが、いくつかの有用なメソッドがあります。

1
2
3
4
my_tuple = (1, 2, 3, 2, 4)

print(my_tuple.count(2))  # Output: 2 (number of times 2 appears)
print(my_tuple.index(3))  # Output: 2 (index of the first occurrence of 3)

関数

関数を使うと、再利用可能なコードブロックをカプセル化します。これにより、プログラムがモジュール化され、可読性を高めます。

関数を定義するには、defキーワードを使い、その後に、関数名とパラメータを書きます。ここでは、nameをパラメータに持つgreat()という関数を定義します。

1
2
def greet(name):
    print(f"Hello, {name}!")

その後、関数を呼び出し、名前を挿入します。

1
2
greet("Karl")  # Output: Hello, Karl!
greet("Alex")    # Output: Hello, Alex!

結果は以下です。

1
2
Hello Karl!
Hello Alex!

戻り値

関数は数値も受け付け、計算することもできます。ここでは、数値の二乗(数値を自分自身に掛ける)を求めます。

関数内で数値を計算するために、number * numberを使います。呼び出し元に計算結果を返すためにreturnを使います。

1
2
3
4
5
def square(number):
    return number * number

result = square(4)
print(result)  # Output: 16

デフォルト引数

パラメータを持つ関数では、デフォルト値を設定することができます。つまり、パラメータ無しで関数を呼び出すと、デフォルト値が使われます。

1
2
3
4
5
def greet(name="World"):
    print(f"Hello, {name}!")

greet()          # Output: Hello, World!
greet("Karl")   # Output: Hello, Karl!

オブジェクト

オブジェクトはPythonの基本で、MicroPythonはオブジェクト指向プログラミング(object-oriented programming: OOP)を完全にサポートします。オブジェクトはクラスのインスタンスで、プロパティ(属性)と振る舞い(メソッド)を持つことができます。これらの概念を噛み砕いていきましょう。

  • クラス: オブジェクトを生成するための設計図あるいはテンプレート。オブジェクトが持つ構造(属性)と振る舞い(メソッド)を定義します。クラスは、オブジェクトを生成するためのレシピのようなものと考えてください。
  • 属性: オブジェクト固有のデータを格納する変数。オブジェクトのプロパティあるいは特性で、例えば、犬の名前や犬種のようなものです。
  • メソッド: クラス内で定義された関数で、オブジェクトの属性への操作や特定の処理を実行します。オブジェクトの振る舞いを表現し、例えば、犬が鳴くのようなものです。

これらの概念配下のようになります。

クラス定義

classキーワードを使い、クラスを定義します。クラス内で、属性やメソッドを定義します。

1
2
3
4
5
6
7
8
9
class Dog:
    # Constructor method to initialize attributes
    def __init__(self, name, breed):
        self.name = name      # Attribute: name
        self.breed = breed    # Attribute: breed

    # Method: A behavior of the dog
    def bark(self):
        print(f"{self.name} says: Woof!")

オブジェクト生成

オブジェクトはクラスのインスタンスです。クラスの設計図から生成される特定の実体を表します。

1
2
3
4
5
6
7
8
9
# Create an object of the Dog class
my_dog = Dog("Denver", "Golden Retriever")

# Access attributes
print(my_dog.name)   # Output: Denver
print(my_dog.breed)  # Output: Golden Retriever

# Call a method
my_dog.bark()        # Output: Buddy says: Woof!

この例では、

  1. Dogクラスが設計図です。
  2. namebreedが属性(犬のプロパティ)です。
  3. bark()がメソッド(犬の振る舞い)です。

例外ハンドリング

MicroPythonでは、例外は、エラーを適切に処理し、プログラムが予期せず終了しないようにするための、強力な手段です。例外をキャッチし処理することで、回復したり他の手段を再実行したりできます。

例外は、我々が既に親しんでいるロジックとは少し異なる形式で使い、より強固なコードの作成ができるようになります。

基本構造

例外は、tryを使った簡単な構造で、finallyブロックはオプションです。

1
2
3
4
5
6
7
try:
    # Code that might raise an exception
    risky_operation()
except ExceptionType:
    # Code to handle the exception
finally:
    # Code that runs no matter what (optional)

一般的な例外

  • ZeroDivisionError: ゼロで割った時に発生します。
  • ValueError: 関数が不正な引数を受け取った時に発生します。
  • TypeError: 想定していない型に操作が適用されたときに発生します。

例: ZeroDivisionErrorの処理

ここでは、何かを0で割るという実施不可能なタスクで失敗するスクリプトを設定します。

1
2
3
4
try:
    result = 10 / 0
except ZeroDivisionError:
    print("Cannot divide by zero!")  # Output: Cannot divide by zero!

例: elsefinallyの使用

elsefinallyを使い、決定木を少し複雑にすることができます。

ここでは、まず割り算を試します。成功すればexceptはとばし、elseに移ります。これは値を表示します。そして、finallyで、"Completed!"というメッセージを表示します。

1
2
3
4
5
6
7
8
try:
    result = 10 / 2
except ZeroDivisionError:
    print("Cannot divide by zero!")
else:
    print(f"Result: {result}")  # Output: Result: 5.0
finally:
    print("Completed!")  # Always executes

カスタム例外の発生

カスタム例外も実装できます。

1
2
3
4
5
6
7
8
def check_positive(number):
    if number < 0:
        raise ValueError("Number must be positive!")

try:
    check_positive(-5)
except ValueError as e:
    print(e)  # Output: Number must be positive!

まとめ

MicroPythonは、簡単にマイクロコントローラー用のプログラムするための強固な基盤を提供しています。このガイドでは以下を説明しました。

  • 変数とデータ型
  • リストとタプル
  • 関数の定義と呼び出し
  • 適切なエラー回復のための例外処理

これらの基礎で、強力で効率的なアプリケーションを書く準備ができました。より高度なトピックを扱う、さらなるチュートリアルを参照してください。

オリジナルのページ

https://docs.arduino.cc/micropython/basics/essentials/

最終更新日

July 26, 2026

inserted by FC2 system