ExASIC
分享让工作更轻松

我的第一个Python程序

今天我们来学习写第一个Python程序。

目标:从命令行传入一个参数,比如人名,然后打印出欢迎信息。

我们大学期间都学过C语言或C++。那先来想想如果用C++该如何实现? 在C++中,命令行传参数是用char * argv[],即字符串的指针的数组。打印是用cout输入输出流。下面是C++实现的代码。

#include <iostream>

using namespace std;

int main(int argc, char *argv[]){
  cout << "hello " << argv[1] << "!" << endl;

  return 0;
}

编译命令 g++ -o hello hello.cpp,编译后生成可执行文件hello。 运行命令 ./hello bill,终端里输出hello bill! 。

所有的编程语言都只是思想或逻辑的描述,所以不同语言之间肯定有相同之处。我们用对比的方法来学习第一个Python程序。下面是Python的实现代码。

#!/usr/bin/env python

import sys

def main(argv) :
    print("hello " + argv[1] + "!")

if __name__ == '__main__' :
    main(sys.argv)

第1行:#!/usr/bin/env python用来指定执行本脚本所用的软件。是这Linux、Unix脚本的共同特性,与Python无关,Shell、Perl等其它脚本语言都有。操作系统先读取脚本的第一行,来决定用哪个软件来执行脚本,不依赖文件的后缀名。因此Linux中的脚本可以不带用后缀名。通常好的编程习惯是加上特定的后缀名,如Python加py,Perl加pl。

第3行:import sys类似C++的#include语句,用来包含(准确点叫导入)库文件。sys是与系统相关的库,包括argv、stdin、stdout等。我们这个例子里用到了argv,所以需要导入sys库。

第5行:def main(argv) : 定义一个函数。def是定义函数的关键字,main是函数名,圆括号里定义了函数参数。这个例子里定义了一个名叫main的函数,函数有一个参数argv。 我们注意到第5行的最后有一个冒号“:”,这是Python语言所特有的标记,相当于C++的大括号{},表明一个层次关系。

第6行:print("hello " + argv[1] + "!")是调用python语言内置的函数print()来向终端(屏幕)打印信息。括号里的“+”的作用是字符串的拼接,其中argv[1]是数组argv的第1个元素(从0开始计数)。

第8行:if __name__ == '__main__' : 意思是判断当前模块的名字是不是'__main__',如果是则执行后面的语句,如果不是则忽略后面的语句。一般情况下__name__的值总是等于'__main__'。只有一种例外的情况,当我们写的脚本被当作库文件导入到其它脚本时,__name__等于我们的脚本文件名。例如,我们这个脚本名叫hello.py,被导入到其它脚本时,__name__等于hello。

当然现在觉得复杂不好理解没有关系,照着写就行了。等以后学习写库文件的时候再深入学习。

第9行:main(sys.argv)调用了上面自定义的main()函数,并把命令行参数的字符串数组sys.argv传入main()函数。

运行Python脚本

方法一:

chmod +x hello.py
./hello.py bill

方法二:

python hello.py bill

结果输出: hello bill!

总结

我们来总结一下Python脚本的特点:

python缩进

"我的第一个Python程序"介绍了一个较规范的Python脚本的例子,并且跟C++语言作了对比。希望大家对文章末尾的总结多看几遍,慢慢体会。

练习题:

亲自写一遍这个hello.py脚本,并在电脑上执行一下。

阅读数:
更多文章:文章目录
解惑专区
(支持markdown插入源代码)
欢迎使用ExASIC订阅服务
仅用于ExASIC最新文章通知,方便及时阅读。
友情链接: IC技术圈问答ReCclayCrazyFPGA