我的第一个Python程序

来源:admin  更新:2020-08-22 15:49  分类:网络技术  标签: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脚本的特点:

  • 第1行用env python来指定运行脚本的命令。比直接指定/usr/bin/python要更通用,因为用env python时写的代码与python安装路径、版本无关。

  • 定义函数用def关键字

  • 需要表明层次关系时需要用冒号“:”,如def、if的行尾加冒号。即使def或if内部层次只有一个语句。并且同一层次的语句必须保持相同的缩进。if语句块后续的语句必须与if保持相同的缩进。例如下图中,b = 1和c = 2属于if内部层次,只有当if条件成立时才执行。而d = 3与if并列,if语句块过后,始总会执行。

  • 利用if __name__ == '__main__' : 来实现类似C++的main函数的作用,让代码看起来更整洁,更利于被当作库文件来复用。

  • 与C++的不同之处一:每个语句末尾不需要加分号“;”

  • 与C++的不同之处二:变量的类型不需要提前定义,给它赋什么类型的值就是什么类型。

  • 与C++的不同之处三:不需要编译,可直接执行。

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


版权声明嗨网博客部分文章源自网络收集,不代表嗨网立场,如涉及侵权请联系嗨网删除。
其他若无特别说明则为嗨网原创文章、持续更新。未授权媒体、微信公众号不得使用嗨网内容。 个人自媒体可署名、保留原始链接的情况下转载
转载请注明 来源嗨网higrid.net,链接: https://higrid.net/posts/py-04.html
本站为非盈利网站,作品由网友提供上传,如无意中有侵犯您的版权,请联系删除