Python 2 基础语法
任何事物都有它自己的运行法则,Python 也不例外
本章节我们就来学习 Python 最基本的语法规则
交互式编程
Python 提供了一个交互式解释器用来简化 Python 的学习和演示
通过交互式解释器,我们可以不用创建 Python 脚本文件
启动 Python 解释器只要在命令行里输入 python
就可以了
$ python Python 2.7.14 (default, Jan 14 2018, 15:19:08) [GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.39.2)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>>
如果你的系统是 Windows,那么还安装了 Python IDLE
可以在 >>>
输入提示符后面中输入以下代码,然后按 Enter 键查看运行效果
print "Hello, Python!"
输出结果为
接下来的教程,如果你看到了 >>>
提示符,则说明是在交互式命令行下运行的
Python 文件扩展名
Python 文件默认的扩展名是 .py
脚本式编程
脚本式编程就是将代码放到一个文件里,然后使用命令行 python filename.py
来运行 Python 代码
首先在当前目录下创建一个文件 hello.py
,输入以下内容
print "Hello, Python";
然后使用以下命令运行程序
$ python hello.py
运行结果如下
Hello, Python
直接运行 hello.py
让我们尝试另一种方式来执行 Python 脚本
修改 hello.py 文件
#!/usr/bin/python print "Hello, Python";
使用以下命令执行脚本
$ chmod +x hello.py # 脚本文件添加可执行权限
$ ./hello.py
运行结果如下
Hello, Python!
Python 标识符
Python 的标识符由 字母、数字、下划线(_)
组成,不能以数字开头
-
Python 中的标识符是区分大小写的
-
以下划线开头的标识符是有特殊意义的
- 以单下划线开头
_foo
的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用from xxx import
而导入 - 以双下划线开头的
__foo
代表类的私有成员 - 以双下划线开头和结尾的
__foo__
代表 Python 里特殊方法专用的标识,如__init__()
代表类的构造函数
- 以单下划线开头
Python 语句分隔符
Python 每条语句结尾的分号 (;) 不是强制需要的,因为 Python 默认以换行符(新行) 分隔每条语句
如果不是特殊情况,请删掉分号,这样才 pythonic
甚至我们推荐,请忘记 Python 中的分号(;)
#!/usr/bin/python # -*- coding: UTF-8 -*- print 'hello' print '简单教程'
输出
hello 简单教程
如果要同一行显示多条语句、方法,可以是用分号 (;) 分开
>>> print 'Hello';print 'World'; Hello World
可以这么写,但我们不推荐你这么做
Python 保留字符
保留字不能用做函数名、变量名,或任何其它标识符名称,不然会发生意想不到的结果
所有 Python 的保留字只包含小写字母
and | exec | not |
---|---|---|
assert | finally | or |
break | for | pass |
class | from | |
continue | global | raise |
def | if | return |
del | import | try |
elif | in | while |
else | is | with |
except | lambda | yield |
行和缩进
Python 语言与其它语言最大的区别就是
Python 的代码块不使用大括号 {} 来控制类,函数以及其它逻辑判断 python 最具特色的就是用缩进来写模块
缩进的空白数量是可变的,但是所有代码块语句必须包含相同的缩进空白数量,这个必须严格执行
缩进造成的错误,应该名列 Python 错误榜第一,君不见一不小心就 IndentationError
一般情况下设置为 4 个空格,因为各个平台和编辑器的差异,建议设置一个制表符设置为 4 个空格
if True: print "True" else: print "False" #错误,缩进不一致
以下代码将会执行错误
#!/usr/bin/python # -*- coding: UTF-8 -*- # filename:demo.py if True: print "Answer" print "True" else: print "Answer" print "False" # 没有严格缩进,在执行时会报错
运行上面的 Python 代码,会触发 IndentationError 错误
$ python main.py File "main.py", line 5 if True: ^ IndentationError: unexpected indent
IndentationError: unexpected indent 错误是 Python 编译器是在告诉你 "Hi,你的文件里格式不对了,可能是 tab 和空格没对齐的问题"
Python 对格式要求非常严格,很多编译错误都是由于缩进不当引起的
如果是 IndentationError: unindent does not match any outer indentation level 错误表明,你使用的缩进方式不一致,有的是 tab 键缩进,有的是空格缩进,改为一致即可。
多行语句
一般情况下,Python 中的语句都是以换行符为语句的结束符
如果语句太长,一行放不下 (超出了屏幕),那么可以用反斜杠 ( \ ) 划分为多行
greeting = "Hello " + \ "Python" + \ "Nice to meet you"
如果语句中包含 [], {} 或 () 等括号就不需要使用多行连接符
lang = ['Python', 'PHP', 'Perl', 'JavaScript', 'C++']
千万不能把完整的字面量拆分成多行,不然结果就不得而知了
pi = 3. 1415926 print pi
运行结果
$ python main.py
3.0
Python 引号
Python 可以使用引号( ' )、双引号( " )、三引号( ''' 或 """ ) 来表示字符串
引号的开始与结束必须的相同类型的
三引号可以由多行组成,是编写多行文本的快捷语法,常用于文档字符串,在文件的特定地点,被当做注释
word = 'word' sentence = "这是一个句子" paragraph = """这是一个段落 包含了多个语句""" '''这就是 一个 注释语句了 '''
多行注释其实就是一个字符串,因为没有赋值给任何一个变量,所以运行的结果就被丢弃了
Python 注释
Python 有两种注释方法:'#' 开头 和 三个引号的字符串字面量
# 号开头的为单行注释
注释可以在语句或表达式行末
#!/usr/bin/python # -*- coding: UTF-8 -*- # file:main.py # 这是一个注释 print "Hello, Python"; # 第二个注释
运行结果
Hello, Python
python 中多行注释使用三个单引号(''')或三个双引号(""")
#!/usr/bin/python # -*- coding: UTF-8 -*- # filename: demo.py ''' 这是多行注释,使用单引号 这是多行注释,使用单引号 这是多行注释,使用单引号 ''' """ 这是多行注释,使用双引号 这是多行注释,使用双引号 这是多行注释,使用双引号 """
Python 空白行
如果一行只包含空格,制表符,回车换行符,那么我们称该行为空白行
空白行不是 Python 语句的一部分,主要用于分隔两段不同功能或含义的代码
比如函数之间或类的方法之间用空行分隔,表示一段新的代码的开始
类和函数入口之间也用一行空行分隔,以突出函数入口的开始
空行与代码缩进不同,空行并不是 Python 语法的一部分
书写时可以不插入空白行,Python 解释器运行也不会出错
空行也是程序代码的一部分,用于增加代码可读性
读取用户输入
可以使用 raw_input([prompt])
提示和读取用户的输入,prompt 参数为提示语句
默认情况下读取到回车换行符就停止读取
#!/usr/bin/python raw_input("\n\nsay some words:")
运行结果如下
$ python main.py say some words:Nice to meet you
如果要输入换行符,需要使用 '\r\n' 字符串
print 输出
前面我们已经使用过无数次的 print 语句
print 用于输出数据到标准输出( 一般为屏幕 )
print 默认是会添加换行符的,如果要不换行,那么需要语句末尾添加逗号 ( , )
#!/usr/bin/python # -*- coding: UTF-8 -*- x="Hello" y="World" # 换行输出 print x print y print '---------' # 不换行输出 # print x, print y,
运行以上 Python 代码,输出结果如下
Hello World --------- Hello World
逗号(,) 可以理解为,等等我还有话要说,你 (换行符) 别插嘴...
代码块
一般情况下,我们把缩进相同的语句称之为一个代码块
if 、while 、def 和 class 这样的复合语句,首行以关键字开始,以冒号( : )结束, 该行之后的一行或多行代码构成代码块
有时候我们也会把首行及后面的代码块称为一个子句 (clause ) ,例如
if expression : statement(s) elif expression : statement(s) else : statement(s)
命令行参数
我们已经知道了可以在命令行中输入 python
来启动 Python
交互式 Shell
其实还可以在输入 python
的同时附加一些参数来定制 python 和查看 Python 一些信息,比如
$ python --version
Python 2.7.10
用于查看 Python 的版本
python -h
用于显示 python
命令的帮助信息
$ python -h usage: python [option] ... [-c cmd | -m mod | file | -] [arg] ... Options and arguments (and corresponding environment variables): -B : don't write .py[co] files on import; also PYTHONDONTWRITEBYTECODE=x -c cmd : program passed in as string (terminates option list) -d : debug output from parser; also PYTHONDEBUG=x -E : ignore PYTHON* environment variables (such as PYTHONPATH) -h : print this help message and exit (also --help) -i : inspect interactively after running script; forces a prompt even if stdin does not appear to be a terminal; also PYTHONINSPECT=x
使用 python
命令运行脚本时还可以接收一些命令行参数,比如我们经常看到的安装第三方包的命令
python setup.py build python setup.py install
其中的 build
和 install
就是命令行参数了
更多命令行参数的知识,可以访问我们的 Python 命令行参数