はじめに
はじめましてjyup(じゅぴ)と申します。
普段はAssetto corsa(AC)というレースゲームのレーサー兼AC外部アプリ開発者兼AC サードパーティーサーバー管理者をしています。
今回はpythonに出てくるワードに関しての初心者向け備忘録です。
初心者じゃなくてもこういう意味だったんだみたいなのはあると思うのでぜひ見ていってください。
またこの記事に出てくるpythonコード(エラーコードを除く)はgithubに公開されていますので是非合わせてごらんください。
https://github.com/jyup-escape/qitta_1
オール明けに書いた記事ですので誤字脱字などがあると思いますが、pythonのコードはすべて検証済みです
(改定 2025/10/19 github linkの貼り忘れに気づき訂正しました)
コード上部に出てくるもの
ここではimport~変数指定などまでです。
#!/usr/bin/env python3
Githubなどにあるpythonを見るとたまに
#!/usr/bin/env python3
import os
とか書いてありますよね
私は思いました、これ、書く意味なくないかと
まず意味から説明しますと、
Linux環境でスクリプトの1行目に書かれる文字列『Shebang(シバン)』というものです。
『shebang』はそのスクリプトを実行するためのインタープリタを示す表記です。
なので結果としてwindowsでは要りません。
import,from
これはもう要点中の要点なので皆さん知っていると思いますがimportとfromの違いを説明します。
import
importはモジュールを指定するためのものです。
例えば
cat = "cat"
というモジュールがあるとします。
そしたらこのモジュールを呼び出すpythonファイルmain.pyで
import animal
print(animal.cat)
これで実行すると、
>python3 main.py
cat
>
となるはずです。
from
fromはimportで呼び出すモジュールの一部(変数、関数)を利用する場合の物です。
先ほどのモジュールファイルに
cat = "cat"
dog = "dog"
とします。
そしてmain.pyでanimalモジュールからdogを取得したいとすると
from animal import dog
print(animal.dog)
にして実行すると
>python3 import_from/main.py
Traceback (most recent call last):
File "D:\projects\qiita\main.py", line 2, in <module>
print(animal.dog)
^^^^^^
NameError: name 'animal' is not defined
となってしまいます。
これはfromですでにanimal.dogのanimalを指定していると思ってください。
なので正しい書き方は
from animal import dog
print(dog)
実行すると
> python3 main.py
dog
>
成功ですね
変数定義
変数定義はいたって簡単です。
まずその前に少し中級者向けの値の種類の説明です
種類 | 型名 | 例 | 説明 |
---|---|---|---|
文字列 | str | "cat","hello" | テキスト |
整数 | int | 3,-42 | 小数点のない数値 |
小数 | float | 3.14,1.234 | 小数を含む数値 |
真偽値 | bool | True/False | 真(True)か偽(False)か |
リスト | list | [1,2,3]/["cat","dog"] | 複数の値を順番に並べたもの(変更可) |
辞書(json) | dict | {"cat":"neko","dog":"inu"} | キー(cat)と値(neko)のペアでデータを保持 |
集合 | set | {1,2,3} | 重複の内容その集まり |
None型 | NoneType | None | 「何もない」を示す特別な値 |
変数定義
先ほどの変数定義の具体例も一緒に提示します。
a = 10 # int(整数)
b = 3.14 # float(小数)
c = "hello" # str(文字列)
d = True # bool(真偽値)
e = [1, 2, 3] # list(リスト)
f = {"cat": "neko", "dog": "inu"} # dict(辞書)
g = None # NoneType(何もない)
このように変数名 = 値
という形で変数を定義します。
基本的に文字列が値の場合はhi="hello"
のように"で囲います。
但し例外として、NoneTypeとboolの際は
proxy = None
poweron = True
といったように囲わない場合もあります。
コード中部に出てくるもの
ここではclass~関数までです
おそらくここが一番めんどくさく、筆者からしてもめんどくさいところです。
if
筆者はこの下にあるclassのコードを書いていてふと思いました。
なぜifの説明をしていないのかと。そう思いclassの説明文作成を切り上げ戻ってきました。
ifの意味はそのままです。
まぁコードで説明します。
power = "on"
if power == "on":
print("The device is powered on.")
else:
print("The device is powered off.")
これはもし、パワーがonであれば"The device is powerd on."そうでなければ"The device is powered off."と出力するというコードです。
フォーマットとしては
if 変数など == 値:
処理
else #違う場合
違う場合の処理
というものです。
また、ほかにも種類があり、
permission = "root"
if permission == "root" or "admin":
print("Access granted.")
else:
print("Access denied.")
これはもしpermissionがrootもしくはadminであればという処理です。
orを入れるともしくはという意味になります。
scoreA = 80
scoreB = 90
if scoreA == 60:
print("合格ラインです!")
elif scoreA >= 70:
print("良い成績です!")
elif scoreA <= 59:
print("残念、不合格です...")
if scoreA != scoreB:
print("scoreAとscoreBは異なる値です。")
if scoreA not in (70, 80, 90):
print("scoreAは70、80、90のいずれでもありません。")
if scoreB in (80, 90, 100):
print("scoreBは80、90、100のいずれかの値です。")
演算子 | 例 | 意味 |
== | x == y | x と y は等しい |
!= | x != y | x と y は等しくない |
> | x > y | x は y より大きい |
< | x < y | x は y より小さい |
>= | x >= y | x は y 以上(等しいか大きい) |
<= | x <= y | x は y 以下(等しいか小さい) |
in | x in y | x は y に含まれる |
not | x not in y | x は y に含まれない |
といった感じです。
関数
基本的にコード中部は関数まみれです。
まず関数とはですが、一連の処理を再利用できるようにまとめたものです。
コードを書いてしまえば説明は簡単です。
def calculation(a,b):
result = a + b
return result
if __name__ == "__main__":
x = 5
y = 7
sum_result = calculation(x, y)
print(f"The sum of {x} and {y} is {sum_result}")
> python main.py
The sum of 5 and 7 is 12
急に難しくなりましたね
まず一個ずつ説明しましょう。
def calculation(a,b):
ここは関数の指定ですフォーマットとしては
def 関数名(引数)
です
なのでここでは
calculationという関数は引数としてa,bを受け付けますという意味です。
次に
result = a + b
ここは先ほどやった変数定義です。
resultはaとbの和ですという意味です。
return result
ここは戻り値の設定です。戻り値とは関数を呼び出したということは結果を期待しているのでその結果を返してあげることです。
フォーマットとしては
return 返したい変数など
です。
if __name__ == "__main__":
ここはコードの下部に出てくるもので説明します。
sum_result = calculation(x,y)
ここでは関数を呼び出しています。
この関数は結果が欲しい関数なので、
結果を保存する変数 = 関数(引数)
となります。
返り値が2つある場合
返り値が二つある場合です。def calculation(a,b):
result = a + b
result2 = a * b
return result,result2
if __name__ == "__main__":
x = 5
y = 7
sum_result = calculation(x, y)
print(f"The sum of {x} and {y} is {sum_result[0]}")
print(f"The product of {x} and {y} is {sum_result[1]}")
> python def/main2.py
The sum of 5 and 7 is 12
The product of 5 and 7 is 35
はい、すでに前回と変わったところだけを説明していきます
return result,result2
ここで戻り値を2つ指定します。
print(f"The sum of {x} and {y} is {sum_result[0]}")
print(f"The product of {x} and {y} is {sum_result[1]}")
ん?sum_result[0]の[0]の部分はなんだ?と思うと思います。
これはいたって簡単で変数がlistの場合(先ほどの値の意味参照)listの一部を呼び出したい場合に[リストの番号]で呼び出せます。
リストの順番は、
[0,1,2,3,4,5....]
となっています。1番目を呼び出したいときは02番目は1といった感じです(listnumber=n-1)
class
とても楽しい関数は終わり!とでもいうと思いましたか?
classもなんと関数関連です!!!楽しみましょう!!!!!!!
まずclassの意味を説明します。
classとは関数の集合体です。
これもコードで説明した方が早いのでコードで説明します。
class calculation:
def __init__(self, a, b):
self.a = a
self.b = b
def add(self):
return self.a + self.b
def sub(self):
return self.a - self.b
def mul(self):
return self.a * self.b
def div(self):
if self.b != 0:
return self.a / self.b
else:
return "Division by zero is not allowed."
if __name__ == "__main__":
x = 5
y = 7
calc = calculation(x, y)
print(f"The sum of {x} and {y} is {calc.add()}")
print(f"The difference of {x} and {y} is {calc.sub()}")
print(f"The product of {x} and {y} is {calc.mul()}")
print(f"The quotient of {x} and {y} is {calc.div()}")
さらに難しくなりましたね(笑)
まぁでも至って簡単でclassは教室だと思ってください。
class(教室)はdef(生徒)をまとめるものです。
まず、
def __init__(self, a, b):
self.a = a
self.b = b
で渡された変数を初期化します。classではselfで変数を呼び出せるようになりました。
def add(self):
return self.a + self.b
ここでselfの中に入っている変数aとbの和の計算をします
(中略)
calc = calculation(x, y)
print(f"The sum of {x} and {y} is {calc.add()}")
ここではdefでやったように、変数 = class(引数)
という形です。
こうしてあげることでprintにもある通り変数.関数名()
で呼び出すことができます。
私がclassを使う際はいろいろな処理の結果をlistにまとめたり、通信でサーバーに渡す際に重宝しています。
コードの下部にあるもの
もうこれは一つだけです。
if name == "main":
ほとんどのコードに呪文のように書いてあります。
まぁまず__name__とは何ぞやと、
簡単に言うとモジュール・関数・クラスなどについている名前のようなものです
def cat():
print("Meow!")
class MyClass:
pass
print(MyClass.__name__)
print(cat.__name__)
出力結果は
> python name/main.py
MyClass
cat
となります。
じゃあ__main__とは何かというと
別ファイルからモジュールとしてインポートされる際はモジュールの名前。
ターミナルなどのスクリプトで直接実行されると__main__となります。
なので、
if __name__ == "__main__":
はコマンドから呼び出されると必ず条件が適合するため、必ず発火します。
そのため、初めに呼び出す関数(ほとんどの場合main()
)を発火させることができます。
最後に
最後まで見てくださりありがとうございます。
普段X(旧Twitter)でいろいろ投稿したり独り言を言ったりしているのでぜひフォローしていただけると幸いです。
@jyup_se_cb