zoukankan      html  css  js  c++  java
  • 【Python】快速复习指南-Quick Review

    上篇已经说过需要使用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

    https://blog.csdn.net/hhy_csdn/article/details/82263757

    https://www.cnblogs.com/kaerxifa/p/11473841.html

  • 相关阅读:
    SUSE10 SP2/SP3 无规律死机故障解决
    随机铃声
    linux添加开机启动项
    SUSE Linux ShutdownManager issue
    linux添加开机启动项
    两个正在运行的activity之间的通信
    android 获取屏幕大小
    Linux开机启动过程分析
    grid的宽度设为100%问题
    动态处理editGridPanel
  • 原文地址:https://www.cnblogs.com/RandyField/p/13429785.html
Copyright © 2011-2022 走看看