关于本手册
本讲义的主要资料参考来自以下教材,并对其内容进行了精简和修改,于是有了这份开发讲义。这本讲义的时常大概在一天左右,其目的就是快速帮助刚接触Python开发的朋友学习了解Python的基础概念。
[参考资料] http://www.runoob.com/python/python-tutorial.html
如果有需要了解更多的Python应用知识和扩展,可以访问Python的官方说明文档,或者参考网络上的教学视频。
关于文件编码
Python UTF-8 编码
在Python2.7+版本中,存在编码的问题,因为在早起的Python版本中,并未考虑非拉丁字符的影响,所以为了扩展支持例如汉语、日语等非拉丁语系字符,需要显式的在代码中增加这一行代码
-*- coding: UTF-8 -*-
例如如下这个例子:
!/usr/bin/python
-*- coding: UTF-8 -*-
print "你好,世界"
但在Python3.0+版本后,这个缺陷已经得到了修正,但是不同操作系统,IDE,对于文件编码的原因,还是会导致UTF-8字符集的异常,你需要注意以下几点:
Python3.X 源码文件默认使用utf-8编码,所以可以正常解析中文,无需指定 UTF-8 编码。
如果你使用编辑器,同时需要设置 py 文件存储的格式为 UTF-8,否则会出现类似以下错误信息:
SyntaxError: (unicode error) ‘utf-8’ codec can’t decode byte 0xc4 in position 0:
invalid continuation byte
为了避免由于文件编码的不同,IDE的不同,甚至系统不同导致的错误。建议编码过程中,还是全部使用英文,如果必须要处理中文,在处理UTF8格式的文件前,需要做一些检测和意外处理。
基础语法
Python 标识符
在 Python 里,标识符由字母、数字、下划线组成。在 Python 中,所有标识符可以包括英文、数字以及下划线(_),但不能以数字开头。Python 中的标识符是区分大小写的。
合法的标识符如下:
data, _data, data123, __data123
非法的标识符如下:
?123, 123data, !, 标识符
需要注意的是:以下划线开头的标识符是有特殊意义的。
以单下划线开头 _foo 的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用 from xxx import * 而导入;
以双下划线开头的 _foo 代表类的私有成员;以双下划线开头和结尾的 __foo_ 代表 Python 里特殊方法专用的标识,如 _init_() 代表类的构造函数。
执行语句
默认情况下,一行代码代表一个执行语句,例如:
print("Hello world")
print("this is another line")
Python 也可以在一行使用多条执行语句,但是两条执行语句之间,需要用;分开:
print("Hello world");print("this is another line")
需要注意一点,python同其他语言一样,所有的标点符号全是英文符号,非英文符号的代码会在执行时报错,如果你有常用的中文输入法,我建议可以把它输出的中文符号全部调整成英文符号,避免由于不小心输入了中文的冒号,双引号等符号,导致代码执行错误,并且难以发现这个错误。
Python 保留字符
下面的列表显示了在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 最具特色的就是用缩进来写模块。
缩进的空白数量是可变的,但是所有代码块语句必须包含相同的缩进空白数量,这个必须严格执行。如下所示:
if True:
print("True")
else:
print("False")
推荐使用4格空格代替tab,因为在不同系统和IDE中,对于缩进填塞的空格是不一样的,这样会导致代码在某些时候可以正确运行,在其他地方可能就无法运行,关于缩进,可以通过设置自己的IDE进行调整,也可以手工进行调整。
IndentationError: unindent does not match any outer indentation level
错误表明,你使用的缩进方式不一致,有的是 tab 键缩进,有的是空格缩进,改为一致即可。
如果是
IndentationError: unexpected indent
错误, 则 python 编译器是在告诉你”Hi,老兄,你的文件里格式不对了,可能是tab和空格没对齐的问题”,所有 python 对格式要求非常严格。因此,在 Python 的代码块中必须使用相同数目的行首缩进空格数。
多行语句
Python语句中一般以新行作为语句的结束符。
但是我们可以使用斜杠( \)将一行的语句分为多行显示,如下所示:
total = item_one + \
item_two + \
item_three
语句中包含 [], {} 或 () 括号就不需要使用多行连接符。如下实例:
days = ['Monday', 'Tuesday', 'Wednesday',
'Thursday', 'Friday']
Python 引号
Python 可以使用引号( ’ )、双引号( ” )、三引号( ”’ 或 “”” ) 来表示字符串,引号的开始与结束必须的相同类型的。其中三引号可以由多行组成,编写多行文本的快捷语法,常用于文档字符串,在文件的特定地点,被当做注释。
word = 'word'
sentence = "这是一个句子。"
paragraph = """这是一个段落。
包含了多个语句"""
Python注释
python中单行注释采用 # 开头。
# 第一个注释
print("Hello, Python!"); # 第二个注释
输出结果:
Hello, Python!
此外,也可以使用三个单引号(”’)或三个双引号(“”“)表示注释:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 文件名:test.py
'''
这是多行注释,使用单引号。
这是多行注释,使用单引号。
这是多行注释,使用单引号。
'''
"""
这是多行注释,使用双引号。
这是多行注释,使用双引号。
这是多行注释,使用双引号。
"""
用户输入与程序输出
用户输入
下面的程序执行后就会等待用户输入,按回车键后就会退出:
output = input("按下 enter 键退出,其他任意键显示...\n")
以上代码中 ,\n 实现换行。一旦用户按下 enter(回车) 键退出,其它键显示。
Print 输出
print 默认输出是换行的
#!/usr/bin/python
# -*- coding: UTF-8 -*-
x="a"
y="b"
print(x)
执行传入参数
执行脚本传入参数,使用sys模块,编辑 test.py 如下
#!/usr/bin/python
import sys
print(sys.argv)
sys.argv 用来获取命令行参数
运行命令,执行结果:
./test.py hello
['./test.py', 'hello']
其他
脚本语言的第一行,目的就是指出,你想要你的这个文件中的代码用什么可执行程序去运行它,就这么简单。
在Linux/Mac系统下,使用 #!/usr/bin/python,是告诉操作系统执行这个脚本的时候,调用 /usr/bin 下的 python 解释器;但我更推荐使用#!/usr/bin/env python这种用法是为了防止操作系统用户没有将 python 装在默认的 /usr/bin 路径里。当系统看到这一行的时候,首先会到 env 设置里查找 python 的安装路径,再调用对应路径下的解释器程序完成操作。
如果是在Windows系统编写Python代码,那么其实这段可以不要,因为它并不是强制的。
执行代码的方法可以用
python file.py
直接执行python代码,如果你在文件头加入了#!/usr/bin/env python,那么在Linux/Mac系统下,执行方法就是:
./file.py
但是,你需要先使用ls -l命令查看下文件的权限,必要的话对需要执行的python文件,使用chmod a+x file.py命令。