◇Pythonプログラミングにおける最重要事項
# -*- coding: utf-8 -*-
Pythonプログラミングにおける最重要ポイント
Pythonプログラミングにおける最重要ポイントは先頭に次の行を置くことです。
# -*- coding: utf-8 -*-
これなしではコメントですら日本語が許されません!!!
文字列定数は必ずuを付ける
文字列定数には必ずuを付加する習慣をつける必要があります。uを付けなければ日本語が化けます。 Pythonは日本語を排斥しようとするとんでもない文化差別言語なので、本来は絶対使うべきものではありません。
print "日本語" ## 化ける print u"日本語" ## 化けない
Pythonを世界から無くす運動をしましょう!
listの長さはなぜかメンバでなく外部関数
Pythonには一貫性という概念はありません。
例えばリストを空にするのは
list.clear()とメンバ関数なのに、長さを得るのは
len(list)と外部関数なのです。
こんなデタラメな言語は一刻も早く無くしてしまうべきです!!!
キー入力はinput()ではなくraw_input()
キー入力はinput()ではなくraw_input()で受けます。
input()は次のエラーになります。
NameError: name '入力した文字列' is not defined
input()は入力した文字列を解釈実行するというとんでもなく危険なもので絶対に使ってはなりません。
Pythonはバージョンが変わるとライブラリの仕様が全くことなるのか、 本やネットの記述は全くあてになりません。
Pythonは今後も安定した仕様は望めそうにありませんので、遊び以外には使えません。
sys.exit()では終了しない。os._exit(0)を使う
sys.exit(0)では終了しません。os._exit(0)を使います。
import sys import os ... なんだかんだ #sys.exit(0) os._exit(0)
Pythonはバージョンが変わるとライブラリの仕様が全くことなるのか、 本やネットの記述は全くあてになりません。
Pythonは今後も安定した仕様は望めそうにありませんので、遊び以外には使えません。
相対パスのimport
import文にはパスの概念はありません。
次のようにsys.path.append()で検索パスを追加します。
# ../../Software/Python/grovepiをimportしたい場合 import sys sys.path.append('../../Software/Python') import grovepi
文字列であっても基本は日本語が扱えない
例えば文字列のlistをstr()を使って表示しようとしても表示できません。
>>> list = ['abc','def'] >>> print list ['abc', 'def'] >>> list = ['abc','def','いろは'] >>> print list ['abc', 'def', '\xe3\x81\x84\xe3\x82\x8d\xe3\x81\xaf'] >>>表示するためにはstr(xx).decode('string-escape')を呼ぶ必要があります。
>>> list = ['abc','def','いろは'] >>> print list ['abc', 'def', '\xe3\x81\x84\xe3\x82\x8d\xe3\x81\xaf'] >>> print str(list).decode('string-escape') ['abc', 'def', 'いろは'] >>>
おそらくPythonの開発者は地球上に日本語というものがあることを知らないのでしょう。
基本的には日本ではPythonは使うべきではありません!。
複数行に渡る場合
複数行に渡る場合は行の最後に\(円マークあるいは逆スラッシュ)を入れます。
\の後ろにコメントを置くことはできません。
if( line=="quit" or line=="end" or # 行分割は行の最後に \ line=="exit" or line=="bye" ):DOSのバッチやB-SHELLなどの原始的スクリプトと同じレベルの言語もどきなのです。
基本マナー。グローバル領域に処理を書き散らかさない
例え単なる勉強用であってもグローバル領域に処理を書き連ねることはさけるべきです。
次のようdef main()を行い、処理はmain()内に置くべきです。
出来れば処理はClassに任せる形にする方が良いと考えます。
# -*- coding: utf-8 -*- # mainFunc.py import sys class MainEngine: def __init__(self,args_): self.args = args_ def doIt(self): print "hello "+str(self.args).decode('string-escape') def main(args_): mainEngine = MainEngine(args_) mainEngine.doIt() if __name__ == '__main__': main(sys.argv) ------- $ python mainFunc.py あいうえお hello ['mainFunc.py', 'あいうえお']
その他の注意事項(おぞましい仕様に関し)
pythonでは変数名を間違えるとエラーとはならず別の変数が定義されたものとなります。
# -*- coding: utf-8 -*- import time count = 0 msg = "count=" while( count<10 ): conut = count+1 # この間違いを発見してれない print msg+str(count) time.sleep(1)
このような吐き気を催すようなおぞましい仕様を便利と考える発想は全く理解できません。
| 固定リンク