pythonとvbの混乱しやすいところ as
import tkinter as tk の意味:import tkinter as tk
tkinter モジュールを tk という短い名前にして使うという意味です。
例: tk.Tk() は、本当は tkinter.Tk() と同じ。
tk.Tk() の意味:
Tk は tkinter が定義した「メインウィンドウを作るクラス」
tk.Tk() は、そのクラスのインスタンスを作っています
root = tk.Tk() のようにすると、root がそのウィンドウになります
まとめると:
tk はあなたがつけた tkinter モジュールの省略名(ローカル変数)
Tk は tkinter 内に元からあるクラス名
tk.Tk() は、「tkinter の Tk クラスを使ってインスタンスを作る」という処理です
例(たとえ)でイメージ
python
コピーする
編集する
import math as m
x = m.sqrt(9) # → math.sqrt(9) と同じ。m は自分でつけた省略名。
同じように:
import tkinter as tk
win = tk.Tk() # → tkinter.Tk() と同じ。tk は自分で決めた省略名。
tkinter as tk とされているが、文法としては tk as tkinter のほうが正しいのではないか?
一見すると、tk as tkinter のほうが「名前の意味」として自然に見えるかもしれません。
でも、Python の文法としては 「逆」です。
正しい文法はこうです:
import tkinter as tk
これはこう読む:
「tkinter モジュールを tk という名前で使えるようにする」
この書き方はエラーになります:
import tk as tkinter # ← 文法的に間違い(ImportError になります)
「tk というモジュールを tkinter という名前で使う」
…という意味になりますが、tk というモジュールは存在しないため エラーになります。
一般ルール: import A as B
書き方 意味
import A as B モジュール A を B という名前で使う
import tkinter as tk tkinter を tk という短縮名で使う
なぜこう書くか?
tkinter という綴りは長いので、tk という省略名で使いやすくするためです。
これは NumPy や pandas などでもよく使われます:
import numpy as np
import pandas as pd
結論
tkinter as tk ではなく tkinter を tk として使う のが正しい考え方
書き方は常に import 本物のモジュール名 as 好きな省略名
as は「〜として」という意味の英単語そのままです
vb では dim new tk as tkinter となるはずだが
Visual Basic (VB) の文法に基づくと 完全に正しいです。
でも、Python と VB は文法やインポートの考え方がまったく異なるため、表面上似ていても動作の仕組みが違います。
Visual Basic の場合:
VB の変数宣言は、変数名が先、型(クラス名)が後ろになります。
Dim newtk As Tkinter
意味:
newtk はインスタンスの名前(変数)
Tkinter は型(クラス名・オブジェクトの種類)
Python の場合:
Python には Dim のような型宣言は基本的に不要です。
代わりに「どこから何をインポートするか」を import 文で書きます。
import tkinter as tk
root = tk.Tk()
tkinter モジュールを tk という名前で使う(ここでは「tk = tkinter」のように見える)
tk.Tk() は tkinter.Tk() の省略形
root は Tk() クラスのインスタンス(ウィンドウ)
違いの本質:
たとえば VB から Python に変換すると:
VB のコード例:
Imports Tkinter
Dim win As New Tkinter.Window
Python で同等のことをするなら:
import tkinter as tk
win = tk.Tk()
結論
VB の「Dim 変数名 As 型名」と、Python の「変数 = クラス()」は 似たような役割だが、文法も処理の流れも違う。
Python では as は「別名をつける」ために使う。
VB の型指定の As とは意味が違う。