Share

Xでシェア
LINEでシェア

Pythonの仕様

の続きです。

数学って面白い!に勝手にコメントする

の1問目で話した、Pythonで変数の型を変更するということについて説明します。

Pythonは変数の型について下の図のようにプログラムの間で変更することができます。



a=str(a) 
bestr(b)#aとbを文字列に変換

a=+" "+b#aにaとc間に半角スペースの文字列を入れます。

b, a = input(a).split()#bにaの半角スペースまでの部分、aに後ろの部分を代入

a=int(a)
b=int(b)#一応int型らしいのでintに変換


ただし、これは新しくメモリを割り当てているので、メモリの上ではaと名付けられた別の変数になります。文字列型と整数型では使用するメモリの量も違いますし、記憶のプロトコルも違います、内部的にはどうなっているのか気になるので調べてみます。

~~調査中~~

Pythonのsys.getsizeof 関数を使って実際にどれくらいのメモリを使っているのか調べてみます。

import sys
a=3
b=6

a=str(a)
b=str(b)

x1=sys.getsizeof(a)
x2=sys.getsizeof(b)

a=a+' '+b

x3=sys.getsizeof(a)

b,a = a.split(' ')

a=int(a)
b=int(b)

x4=sys.getsizeof(a)
x5=sys.getsizeof(b)

print(a)
print(b)

print('3を文字列で記録したときの容量')
print(x1)
print('6を文字列で記録したときの容量')
print(x2)
print('3 6を文字列で記録したときの容量')
print(x3)
print('6を整数で記録したときの容量')
print(x4)
print('3を整数で記録したときの容量')
print(x5)

出力はこうなります、単位はバイトです。

使用しているメモリの量を見てもらえばわかるように、文字列の場合と、整数の場合で必要な量のメモリを使用しているころがわかります。文字列も半角文字1文字なら50バイトで「3 6」と3文字になるとちゃっかり2バイト増やして52バイト使用しているのが面白いです。

これでわかる通り、ソースコード上では2変数に見えますけれども、内部的には整数型4変数分くらいのメモリを使用しているので「設問の不備を突いた」やりかただというわけです。

次回の記事に続きます。

私たちのサービス

100万人の顧客一人ひとりと向き合えるAIマーケティング。

WordPressを、もっと快適に。もっと安全に。

採用の痛みからの解放。採用戦略から運用まで伴走します。

困ってることの正体、一緒に探します。

30分無料相談

オンライン

お気軽にオンラインでご相談ください。Webサイトやマーケティングのお悩みに対応します。

吉川 敦文

吉川 敦文

代表

高橋 文樹

高橋 文樹

CTO

ギブス

ギブス

Wizard 責任者

池田 秀貴

池田 秀貴

Webディレクター

お問い合わせ

ご質問やお見積もりのご依頼など、お気軽にお問い合わせください。