The document discusses various aspects of Python programming within the context of Cisco Systems and includes information about learning resources, technical details, and programming concepts. It covers multiple Python functionalities such as ping operations, program structure, and installation on different operating systems. Additionally, it highlights the significance of Python in network management and introduces ongoing Python training sessions.
KubernetestとWindows Server Containerでコンテナクラスタ環境を構築する際、コンテナ間ネットワークの構築を自動的に構成する方法について解説します。マネジメントプレーンであるKubernetes、ネットワークのコントロールプレーンの一つであるFlannelと各Windowsノードで実際のルーティング設定を行うCNIについて解説します。さらにWindows Server 1709以降でKubernetes対応したといわれるWindows Containerのネットワーク機能、Host Networking Service (HNS)についても解説します。
5. タブ補完
例えば、sys モジュールのメソッド、属性を表示したい
In [1]: import s[TAB] # <- sまでタイプしてTAB モジュール補完候補表示
set setattr slice sorted staticmethod str sum
super sys
In [2]: import sys
In [3]: sys.[TAB] # <- sys.までタイプしてTAB補完候補表示
In [4]: sys.__class__
.sys.__class__ sys.__delattr__ ...
6. イントロスペクション
例えば、re モジュールについて調べたい
In [1]: import re
In [2]: re? # オブジェクトに関する情報を表示(省略あり)
In [3]: re?? # オブジェクトに関する情報を表示(省略なし)
In [4]: %pdoc re # docstring表示
In [5]: %pdef re.search # re.searchの宣言部表示
In [6]: %psource re.search #re.search メソッドのソースコード表示
In [7]: %p?le re.search #re.search が定義されているファイルのソースコードを表示
7. マジックコマンド
IPythonの独自のコマンド
%[TAB] #マジックコマンドの一覧
%alias %autocall %autoindent ...
※automagicがON(デフォルトでON)だと、%を付けなくても実行できる。
In [1]: alias #これで実行できる
ところでマジックコマンドに定義されてないのに、ls とかが動くのはなぜ?
%alias #シェルコマンドがマップされている
[('cat', 'cat'), ('clear', 'clear'), ('less', 'less'), ('mkdir', 'mkdir'), ...]
%alias d date # エイリアスの追加。 dと打つとdateが実行される
8. シェルアクセス
IPythonを終了せずにシェルコマンドを実行したい
In [1]: !cal # cal コマンドが直接シェルに渡される
In [2]: d = !date # date コマンドの結果を d に代入
In [3]: d # <class 'IPython.genutils.SList'> 特殊なリストになる
In [4]: !echo $$PATH # $$で環境変数へのアクセス
9. キャッシュ
アウトプットキャッシュ
Out という辞書に格納
_1 == Out[1] == _oh[1]
_, __, ___ ※ 最新3つの履歴
インプットキャッシュ
In という辞書に格納
_i1 == In[1]
_i, _ii, _iii ※ 最新3つの履歴
In [1]: print datetime.now()
datetime.nowをもう一回実行したい
In [2]: _i1 # これだと文字列が入ってるだけなので
Out[2]: u'print datetime.now()n'
In [3]: exec _i1 #ひとつ前のを実行なら、 exec _i だけでもオッケー。もしくは、%r でも可。
10. 履歴
In [1]: _dh # cd したディレクトリが入った辞書(終了後も保存)
In [2]: _oh # Out の履歴が入った辞書
In [3]: %hist # 実行コマンド履歴(In の履歴)
In [4]: %rep # 直前のOutを次のプロンプトに表示
In [0]: spam = python
In [1]: spam
Out [1]: python
In [2]: %rep
In [3]: python
%rep に引数を渡すことも出来る。 %rep 1 とか %rep 1-3 5 とか %rep datetime とかも可
しかし、なぜか自分の Leopard python2.5.1 ipython0.91で動かない!Linuxでは動いた。
%rep datetime と文字列を指定した
場合は、履歴をたどって最初にその
文字列が見つかったOutを使用する
11. ブックマーク
よく行くディレクトリをブックマークしておきたい
In [1]: %bookmark home #カレントディレクトリをブックマーク
In [2]: %bookmark -l #ブックマーク一覧
Current bookmarks:
home -> /Users/hfunai
In [3]: cd -b home # home=/Users/hfunai へ移動
In [4]: %bookmark -d home # ブックマークからhomeを削除
ブックマークは、IPythonを終了しても保存される
13. ディレクトリスタック
In [1]: %pushd # カレントディレクトリをスタックに入れる
Out[0]: [' ']
In [2]: %dirs # ディレクトリスタックを表示
Out[1]: [' ']
In [3]: %cd /SourceCodes
In [4]: %pushd # カレントディレクトリをスタックに入れる
Out[3]: [' /SourceCodes', ' ']
In [5]: %cd /usr/lib/python2.5/site-packages/
In [6]: %popd # ディレクトリスタックの[0]へ移動
In [7]: %pwd # '/Users/hfunai/SourceCodes' を表示
14. ストレージ
IPython終了後も値を保存しておいて、また使いたい
In [1]: spam = Python Tokai
In [2]: %store spam
一旦、IPythonを終了
In [1]: spam
Out[1]: 'python tokai' #spamを上書き
In [2]: spam = Python Nagoya
In [3]: store -r spam # Python Tokai が復活(もう一度保存するまで前の値が残ってる)
In [4]: store -d spam # Python Tokai がをストレージから削除
In [5]: store # 引数なしだと一覧表示
15. マクロ
%macro [マクロ名] 1-3 5
In [1]: import os
In [2]: import sys
ln [3]: import re
In [4]: from datetime import datetiem # spellミス!
In [5]: from datetime import datetime
%macro mymacro 1-3 5 # 4は飛ばす
In [6]: mymacro #マクロを実行
マクロはストレージに
保存しておくと便利
16. ログ
ログをファイルに保存する
%logstart
In [1]: import os
In [2]: import sys
In [3]: import re
%logstop # %logo?で一時的に停止、%logonで再開
IPythonを抜けて、シェルで実行
$ ipython -logplay ipython_log.py
ログファイルの内容を実行してから、IPythonシェルが開始する。
17. ソースコード編集
In [1]: %cpaste #クリップボードにあるソースをペーストしたいとき
In [2]: %edit #エディタを開いて編集(設定ファイルでエディタを指定)
In [3]: %edit 1-10 #1-10のInをエディタで
In [4]: %save 1-10 #1-10のInをファイルへ保存
簡易バージョン管理
%editごとに一時ファイルが作成されるのを利用
In [5]: %edit _i2 # In [2] の内容を編集
In [6]: %edit _i3 # In [3] の内容を編集
クラスとか関数を定義したいとき
は、%editで書くと、便利。
export EDITOR=vim
しておきましょう。
簡易バージョン管理は別に使わない
よなあ。