変数, スコープ, 型(type関数, isinstance関数, 変換)

Pythonの変数、スコープ、データ型について動作確認します。他の言語の経験があれば、すぐ理解できる内容がほとんどです。

変数

命名規約

Pythonには、以下のような命名規約があります。

  • 関数、変数は スネークケース (e.g. my_var)
  • クラスは キャメルケース (e.g. MyClass)
  • プライベート変数は _ で始める

なので、変数はスネークケースで記述します。

変数宣言

my_var = "Hello wold!"
print(my_var)

phpであれば $myVar 、 javascriptであれば let myVar といった感じでしょうか。
pythonは、先頭に何もつけません。

定数

  • Pythonではサポートしてません。
  • 全て大文字にしたら定数として扱うというルールのみ存在します。

スコープ

グローバル変数とローカル変数

# グローバル変数
global_var = "global"


def sample_print():
    # ローカル変数
    local_var = "local"
    print(global_var)
    print(local_var)


sample_print()
global
local

関数内でグローバル変数を変更

関数内でグローバル変数を変更したい場合、 global を利用します。

my_var = "global"


def sample_print():
    global my_var
    my_var = "local"
    return my_var


print(sample_print())
print(my_var)
local
local

基本データ型

文字列|str

文字列は、 ' または '' で囲み宣言します。
文字列の連結は、 + を利用します。

my_str1 = "Hello" + " world!"
print(my_str1)

my_str2 = "Hello"
my_str2 += " world!"
print(my_str2)
Hello world!
Hello world!

改行を入れたい場合、""" を利用します。\ を入れた行は改行されません。

print("""
aaa
bbb\
ccc
ddd
""")

aaa
bbbccc
ddd

長い文字列は、以下のように行を分けて記述できます。

my_str1 = ('aaa'
           'bbb'
           'ccc')
print(my_str1)

my_str2 = 'aaa' \
          'bbb' \
          'ccc'
print(my_str2)
aaabbbccc
aaabbbccc

文字列メソッド

261-python-string_pycharm.png

文字列であれば、続けて利用できるメソッドが存在します。

数値|int、float

整数は int型 で、小数部を持つ数は float型 になります。

# 足し算
print(1 + 1)

# 引き算
print(1 - 1)

# 掛け算
print(4 * 4)

# 割り算
print(4 / 2)

# 割り算(切り捨て)
print(5 // 2)

# 余り
print(10 % 3)

# 指数(4乗)
print(2 ** 4)
2
0
16
2.0
2
1
16
mathモジュール
数値操作用にmathモジュールが用意されています。
https://docs.python.jp/3/library/math.html

論理値|bool

先頭を大文字にして書きます。

my_boolean = True
print(my_boolean)

my_boolean = False
print(my_boolean)

print(True and False)
print(True or False)
print(not True)
True
False
False
True
False

型の取得と判定
( type関数とisinstance関数 )

type関数 で型の確認ができます。
isinstance関数 で型判定ができます。

def print_type(var):
    print("----------------------")
    print(type(var))

    if isinstance(var, str):
        print("This is string.")

    if isinstance(var, bool):
        print("This is bool.")

    if isinstance(var, int):
        print("This is int.")

    if isinstance(var, float):
        print("This is float.")

    if isinstance(var, list):
        print("This is list.")


print_type("hello")
print_type(True)
print_type(1)
print_type(1.0)
print_type([1, 2])
----------------------
<class 'str'>
This is string.
----------------------
<class 'bool'>
This is bool.
This is int.
----------------------
<class 'int'>
This is int.
----------------------
<class 'float'>
This is float.
----------------------
<class 'list'>
This is list.

型変換

int() を利用して、文字列から数値に型変換してみます。

my_var = "100"
print(type(my_var))       # <class 'str'>
print(type(int(my_var)))  # <class 'int'>

str() を利用して、文字列から数値に型変換してみます。

my_var = 100
print(type(my_var))       # <class 'int'>
print(type(str(my_var)))  # <class 'str'>

参考