C#erがpythonを書くにあたっての覚え書きです。正確性を欠いている可能性あるので詳細は公式を参照してください。
所々で公式のリファレンスマニュアルへのリンクを貼っていますが、まずは公式のチュートリアルのほうを見たほうがとっつきやすいです。
機能関連
ファイル操作
やりたいこと | コード | 説明・リンク等 |
---|---|---|
テキストモードで開く(読み取り専用) |
open(path, 'r') 1
|
|
UTF-8と見なして開く(読み取り専用) | open(path, 'r', 'utf-8') |
エンコード指定 |
Shift_JISと見なして開く(読み取り専用) | open(path, 'r', 'shift_jis') |
|
テキストモードで開く(書き込み専用) |
open(path, 'w') 1
|
|
バイナリモードで開く(読み取り専用) | open(path, 'rb') |
|
バイナリモードで開く(書き込み専用) | open(path, 'wb') |
open() 関数が返す file object の型はモードに依存します。
型変換
やりたいこと | コード | 説明・リンク等 |
---|---|---|
小数や文字列を整数型に変換する | int(...) |
|
浮動小数点数に変換する | float(...) |
|
文字列に変換する | str(...) |
バイナリと型との変換
pack, unpack
コンソール出力
やりたいこと | コード | 説明・リンク等 |
---|---|---|
コンソールに出力する(改行つき) | print(...) |
カンマで区切って複数指定可能。print(..., end='') のようにすると改行をなくせる |
コマンドライン引数
import sys
for s in sys.argv:
print(s)
argv[0] はスクリプトの名前となりますが、フルパス名かどうかは、OSによって異なります。コマンドライン引数に -c を付けて Pythonを起動した場合、 argv[0] は文字列 '-c' となります。スクリプト名なしでPythonを起動した場合、 argv[0] は空文字列になります。
文法関連
コーディングスタイル
インデントが構造と対応します。(インデントが崩れると構文解析エラー(?)になったり、意図しないプログラムになる恐れがあります。)
関数
def 関数名(引数,...):
...
return 戻り値
return
は無くてもよい。
制御構文
行末のコロンを忘れずに。
C# | Python | 補足 | |
---|---|---|---|
条件分岐 | if(条件式) |
if 条件式: |
else if はPythonではelif
|
要素列挙してループ | foreach(型名 変数 in リスト) |
for 変数 in リスト: |
|
整数を0,1,...,n-1 | for(i=0;i<n;i++) |
for i in range(n):
|
要素数を得るには len(対象)
|
繰り返し | while(条件式) |
while 条件式: |
do while にあたるものは無さそう |
for
やwhile
の中などで処理をしたくないときは、pass
文が使える。
# 無限ループの例
while True:
pass
例外処理構文
C# | Python | 補足 |
---|---|---|
try |
try |
|
catch |
except |
|
finally |
finally |
|
(なし) | else |
例外が発生しなかったときに実行される |
try:
~~~
except ValueError:
~~~
else:
~~~
finally:
~~~
https://docs.python.org/ja/3/library/exceptions.html
https://docs.python.org/ja/3/tutorial/errors.html
定数
C# | Python | 補足 | |
---|---|---|---|
null | null |
None |
|
真 | true |
True |
|
偽 | false |
False |
演算子
C# | Python | 補足 | |
---|---|---|---|
整数除算 | 整数/整数 |
整数//整数 |
|
論理積 | a&& b |
a and b |
|
論理和 | a|| b |
a or b |
|
論理否定 |
! a |
not a |
比較演算子を a<
x&&
x<
b の代わりに a<
x<
b と書くことができる
グローバル変数の使用
JavaScriptのノリで書くと、思った動きにならないので注意。C#erどこいった
ざっくり:
関数内から外側の変数にアクセスしたい場合は、関数内でglobal
を付けて変数宣言する必要がある。付けないとローカル変数扱いになるよう。
ただ、割とややこしい挙動をするらしい・・
予約語
組み込み関数名 - docs.python.orgや、よく使うライブラリの名称も避けたほうが無難。