了解python的人都知道,要运行python代码可有有多种方式,比如python自带的idle可实现实时交互,也可通过pycharm集成开发环境通过鼠标右键或点击右上角运行按钮进行运行,还有一种就是在命令行中通过pyhton 来运行。接下来我们就讲解一下通过命令行运行python代码并传递参数给模块。
有时候我们在安装一些python第三方库的时候,会通过源码的方式进行安装,通过源码安装需要执行一个命令:
python install
还有在打包模块的时候也会执行一个命令:
python build
那么当我们通过命令行去执行一个python模块的时候,可不可以用这种方式传递一个或几个参数给模块内部使用呢?答案是肯定的。下面来看个例子,假如有个打印欢迎词的模块。这个模块的功能就是打印出不同来宾的姓名及欢迎语。
示例代码
#
print("热烈欢迎【张三】来我司莅临指导")
#调用,在命令行中执行:
python
#输出结果:
"热烈欢迎【张三】来我司莅临指导"
运行上面的代码,没问题可以实现我们想要的功能,但是今天是张三来视察,如果明天来的是李四呢,我们还要修改源码,把张三改成李四,后天是王五来了,继续改代码。显然这样不是很合理。
改进一下,如果我们把模块里面的具体人名改成一个变量名,然后在外面调用时再把具体的人名传进去,这样就不用每天代码改来改去了,是不是会好一点呢。接下来就隆重介绍一下python中argv属性。argv是sys库中的一个列表类型的属性,这个列表中的第一个值存放的是模块的文件名,如,后面的值就是在用命令行执行模块时传递的参数值,多个参数用空格分开。
#
import sys
print()
#这时在执行python 时会输出如下结果:
[""]
#那么在后面再加个参数,python zhangsan,再看一下结果:
["","zhangsan"]
通过上面代码可以看到,在模块中成功接收到了外面传递进来的参数值。那么我们把原来的代码修改一下:
#
import sys
name = ''
if len() >= 2:
name = [1]
print("热烈欢迎【%s】来我司莅临指导" % name)
#调用,在命令行中执行:
python 张三
python 李四
python 王五
#输出结果:
"热烈欢迎【张三】来我司莅临指导"
"热烈欢迎【李四】来我司莅临指导"
"热烈欢迎【王五】来我司莅临指导"
这样就可以在不该源代码的情况下实现来我们想要的功能。