简要Python开发讲义 - 2. 基本规则

关于本手册

本讲义的主要资料参考来自以下教材,并对其内容进行了精简和修改,于是有了这份开发讲义。这本讲义的时常大概在一天左右,其目的就是快速帮助刚接触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 print
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 默认输出是换行的

    #!/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命令。

猜你喜欢

转载自blog.csdn.net/poisonchry/article/details/80498097