python HelloWorld 的 4 种姿式,你知道几种

安装以后该干啥了?固然是要 say HelloWorld 了。
python

python.exe 就是个普通程序

和其它全部命令同样,在命令行中敲下 python 并回车的时候,操做系统去 PATH 路径中搜索到了 python.exe 并执行。从这一点看,它和其它程序并无什么不一样。好比说:notepad 会打开记事本,explorer 会打开资源管理器。windows

区别在于,python 是一个纯粹的命令行程序,它没有你们熟悉的窗口界面。bash

注意,可执行程序的 .exe 文件名后缀只是 Windows 系统下的命名风格,输入命令的时候是省略的。而且在 Linux 系统中可执行文件都没有 .exe 后缀,python 的命令风格是偏 Linux 风格的,因此后面提到 python 的时候直接说 python 而不是 python.exe服务器

python 的参数

执行命令行程序的时候,每每须要能够带上 参数(argument)。例如:函数

单独执行 notepad,打开一个新的无标题记事本,而若是执行 notepad hello.py,则会打开这个指定的文本文档(固然,当前路径下得有名为 hello.py 的文件,不然 notepad 会有提示你)。post

notepad 建立文件
notepad 建立文件

python 是一个解释器程序,它的能力就是 解释执行 Python 代码学习

因此咱们能够把 Python 代码做为参数传递给它。最多见的是传一个文件给它:测试

python hello.py
复制代码

好比刚才咱们用记事本建立的 hello.py 文件:ui

pytho 执行脚本
python 执行脚本 - helloworld 的第 1 种姿式

这里的 .py 文件后缀不是必须的,就像记事本也不必定只能编辑 .txt 文件。带上后缀只是方便操做系统和用户识别这是一个 Python 源码文件。spa

不带参数执行 python,由于没有内容能够解释,就进入到了交互模式。

交互模式下,在提示符 >>> 后面等待用户输入,每输入一句,就解释执行一句。

交互模式下的 helloworld 你们确定早已熟悉,这里就不充数了,改天再细聊 REPL

严格来讲,没有参数的意思并非 没有内容,而是表示 内容源 来自 标准输入(stdin)。事实上,它等价于:

python -
复制代码

用一个短杠作参数的时候表示标准输入,这是 Linux 程序的惯例。所谓标准输入,不熟悉操做系统的小伙伴姑且能够认为就是来自用户输入。而相对的,天然就有 标准输出(stdout)。咱们用 print() 函数就是把结果 打印 在标准输出中。

stdoutstdin 能够用一道竖线 | 串联起来造成 管道(pipe),因此能够写出下面这种另类的 helloworld:

C:\Users\Davy>echo print('helloworld')|python
helloworld
复制代码
helloworld 2
helloworld 2

注意,在 windows 系统下,这里 echo 后面不能加引号,而在 Linux 系统中则必须加一层引号:

[root@davycloud ~]# echo print('helloworld')|python
-bash: syntax error near unexpected token `(' [root@davycloud ~]# echo "print('helloworld')"|python helloworld 复制代码

python 的选项

在 Python 安装 文章中,咱们用了 python --version 来测试 python 程序是否正常。

这种用 --- 传递给程序的特殊参数称之为 选项(option),一个中杠(也就是减号 -) 后面跟一个字母,称为 短选项-- 后面跟完整的单词,称为 长选项

注意,选项是一种特殊格式的参数,在下面 py 的帮助信息中,就统称是 args

有的选项只有短或长格式,有的选项既有短的,又有长的。例如 --version 对应的短选项是 -V (大写的 V)。

除了 --version 打印版本信息,还有经过 --help-h 打印帮助信息也是比较通用的作法:

python --help
python --help

之后遇到不熟悉的命令,均可以先执行 --help 试试。不过值得提醒的是, Windows 系统中的传统命令是使用 /? 表示选项。

python 解释器中还有如下选项比较有用:

-c 选项

-c cmd : program passed in as string

把程序以字符串的形式传给解释器,例如,helloworld 能够这样写:

C:\Users\Davy>python -c "print('helloworld')"
helloworld
复制代码
helloworld 3
helloworld 3

还能够是多行语句,中间用分号 ; 分隔就好了:

C:\Users\Davy>python -c "import sys;print(sys.version)"
3.8.1 (tags/v3.8.1:1b293b6, Dec 18 2019, 23:11:46) [MSC v.1916 64 bit (AMD64)]
复制代码

-i 选项

-i : inspect interactively after running script

在执行完脚本后进入到交互模式。

这个选项在学习的状况下颇有用,下面给你们举个小例子。

好比学习到函数的时候,定义一个函数要写多行语句,显然写在文件中比较合适。

可是随后对这个函数的进行练习测试,若是你也写在文件中,那么每次都要这样:

编辑 - 保存 - 运行

每次运行都是从头开始,这样是比较麻烦的(由于麻烦因此没有动图了):

运行了两次
运行了两次

这时候就可使用 python -i test.py 运行脚本,脚本运行结束后自动进入交互模式。此时脚本里定义的一切对象,仍然能够访问。就好像是接在脚本后面继续写代码同样:

-m 选项

-m mod : run library module as a script

把模块看成脚原本运行。

例如,著名的一行代码启动一个 HTTP 服务器:

python -m http.server
复制代码
http.server
http.server

在安装 Python 一文中已经和你们介绍过了,模块所在的文件夹位置,因此上面命令也能够直接用运行脚本的方式:

python C:\Users\Davy\AppData\Local\Programs\Python\Python38\Lib\http\server.py
Serving HTTP on :: port 8000 (http://[::]:8000/) ...

复制代码

这里须要定位到 .py 文件的具体位置,这个在每一个人的环境上都不同,显然比使用 python -m module 麻烦多了。

这里能够看出,module 和在命令行中敲命令有殊途同归之妙,事实上,它们的原理也差很少。module 也须要有一个 path 变量,保存一个搜索路径的列表。

这个 path 变量保存在 sys 模块中:

python -c "import sys;print(sys.path)"
复制代码

更多具体内容,后面学习到 module 相关内容的时候再详细讨论。

py.exe 的用法

在安装完成后,咱们使用 py --list 来显示已安装的 python 版本列表。这里简单介绍下 py 命令的用法。

一样地,用 -h--help 来获取帮助信息:

py --help
py --help

打印信息分为两部分,前面是 py 本身的帮助信息,后面是 python 的帮助信息。

usage:
py [launcher-args] [python-args] script [script-args]

Launcher arguments:

-2     : Launch the latest Python 2.x version
-3     : Launch the latest Python 3.x version
-X.Y   : Launch the specified Python version
     The above all default to 64 bit if a matching 64 bit python is present.
-X.Y-32: Launch the specified 32bit Python version
-X-32  : Launch the latest 32bit Python X version
-X.Y-64: Launch the specified 64bit Python version
-X-64  : Launch the latest 64bit Python X version
-0  --list       : List the available pythons
-0p --list-paths : List with paths
复制代码

除了最下面咱们已经见过的 -0--list,其它参数都是用来选择 python 解释器。不但能区分版本号,还能按 32 位 或 64 位选择。值得注意的是,版本号只包括前两位。

若是不带选择版本参数,实际对应默认的 python 解释器。其它全部不是上面这些格式的参数,也做为 python 解释器的参数。

因此,在命令行中敲 pypython 的效果是同样的(每次能够少敲 4 次键了,效率大幅提高,✌️),即便带上了版本参数,也很方便:

C:\Users\Davy>py -0
Installed Pythons found by py Launcher for Windows
 -3.8-64 *
 -2.7-64


C:\Users\Davy>py -2 --version
Python 2.7.17

C:\Users\Davy>py --version
Python 3.8.1
复制代码

为了演示 py 的功能,特地又安装了 python 2.7,而且此次没有加入到 PATH

问题来了,pip 这种放在 Script 中的命令怎么办呢?

这种状况,结合使用前面介绍的 -m 选项就能够了:

C:\Users\Davy>py -2 -m pip --version
pip 19.2.3 from C:\Python27\lib\site-packages\pip (python 2.7)
复制代码

安装包的时候也是同样的:

py -2 -m pip install
py -2 -m pip install

差点忘了,helloworld 的第 4 种姿式: python -m hello

helloworld 4
helloworld 4

小结

本文主要介绍 python 解释器的基本用法,借 helloworld 演示传入代码的四种方式:文件,字符串,stdin,module。同时介绍在 windows 下如何使用 py 启动器运行不一样版本的 python。



若是本文有帮助,不妨 点赞 + 关注,谢谢!

相关文章
相关标签/搜索