上篇已经说过需要使用python的背景了(java不会,.Net SDK没有与时俱进),没办法,只有去试试python。不过距离上一次使用python,已经过去了4年了。革命需要,必须快速把python捡起来,看懂项目,并编写python脚本。我大致总结如下几个方面,便可完成快速复习:
1.python程序的入口
首先python是一门解释型语言,按顺序执行。其次每个模块都有一个 __name__
属性,当其值是 __main__
时,表明该模块自身在运行,否则这个模块就是被引入。
dosomething1()
if(__name__=="__main__"):
print("Main")
else:
print(__name__)
dosomething2()
所以上述代码python test.py
执行顺序
- dosomething1()
- print("Main")
- dosomething2()
如果是被引入的,则执行顺序
- dosomething1()
- dosomething2()
2.python命令行参数
python test.py arg1 arg2 arg3
pyvmomi-community-samples
里面很多sample都是通过命令行参数来进行调试,然后有命令行解析方法解析命令,所以要运行这些示例,需要传命令行参数,在Visual Studio Code
中,可以去编辑launch.json
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Python: 当前文件",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"args": [
"--server",
"192.168.0.110",
"--username",
"administrator@vsphere.local",
"--password",
"VMware1!"
]
}
]
}
3.python代码缩进
python没有花括号{}
,全靠缩进来标识代码块,限制变量作用域,还有一点对于从.net过来的我来说很变态的一点,缩进不能空格和tab混用。空格还必须是4的倍数。算了,人家的领域,规规矩矩按照要求来吧。
这里还是借助Visual Studio Code
帮我们省点事吧。
Preference->Settings
- Insert Space:勾选,按Tab,就会插入空格
- Tab Size:填4,按Tab就是4个空格
4.python类
必需内容:
-
class关键字
-
__init__
构造函数 -
所有的类方法都必须包含self
-
创建实例,没有new关键字
-
继承用小括号()
-
class 派生类名(基类名)
-
-
私有变量,前面加两个下划线
- __private_attrs
-
公开变量,没有两个下划线
-
protected 类型的变量,只有一个下划线,即保护类型只能允许其本身与子类进行访问,不能用于 from module import *
-
重写很简单,什么关键字都没有,只要是继承了父类,直接可以定义与父类签名一样的方法,相对于其他编译型语言还是省了个关键字
-
#!/usr/bin/python # -*- coding: UTF-8 -*- class Parent: # 定义父类 def myMethod(self): print '调用父类方法' class Child(Parent): # 定义子类 def myMethod(self): print '调用子类方法'
-
5.python模块和包
模块
就是一个python文件
# 导入整体模块
import xxx
# 导入模块中的某部分内容
from xxx imoprt yyy
包
模块是文件,那么包就是一个文件夹
包是使用“带点的模块名称”来构造Python模块名称空间的一种方法。
例如A.B,即指定子模块B,在A包中。
包的文件夹必需内容:
__init__.py
:使Python将包含文件的目录文件夹视为包__init__.py
可以只是一个空文件,但是它也可以执行包的初始化代码,或者设置__all__
变量
6.python搜索路径
当导入一个python模块,Python 解析器对模块位置的搜索顺序是:
- 当前目录
- 如果不在当前目录,Python 则搜索在环境变量 PYTHONPATH 下的每个目录。
- 有些开源项目,引入本地包的时候,写的是全路径,这个基本都是PYTHONPATH 缺失当前项目,添加即可
- 如果都找不到,Python会察看默认路径。UNIX下,默认路径一般为/usr/local/lib/python/。
7.python安装whl
whl
其实就是一个压缩包,把后缀名改为.zip,是可以完美解压的。一般情况,一个whl文件就是一个python包。安装方式
#安装wheel
pip install wheel
#安装包
pip install xxxx.whl
8.python导出依赖和安装
一般一个python会有很多依赖,我们可以手动导出所有的依赖包:
- 导出
pip freeze > requestments.txt
- 安装:安装导出的requestments.txt的依赖
pip install -r requirements.txt
9.python安装git远程包
先上命令
pip install --upgrade git+https://gitee.com/RandyField/vsphere-automation-sdk-python.git
这个看起来是一个命令,其实内部经历了两个步骤
#克隆
git clone https://gitee.com/RandyField/vsphere-automation-sdk-python.git
#安装依赖
python setup.py install
参考链接
https://docs.python.org/3/tutorial/modules.html
https://docs.python.org/3/tutorial/modules.html#packages
https://blog.csdn.net/Iron_Ye/article/details/80044242