零基础搭建量化投资系统:以Python为工具
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.2 Python编程基础

本节适合编程零基础的读者,如果已有Python 3基础,则可跳过。

为了让大家能够快速入手,本书提供了教学示例程序文件。当你有新想法时,可以将示例代码复制到新建文件中,修改后看看是否能得到想要的运行结果,这是一种比较好的学习方法。

1.Python程序的行

(1)一般一条语句占有一行。

(2)模块之间用空行进行间隔。

(3)如果语句太长,就可以用斜线“\”进行跨行。

见下面的例子(示例2-1跨行演示.py)。

        a=15
        if a>=10 :
            print('a大于等于10! ')
        else :
            print('a小于10! ')

       print("好好学习,天天向上。我喜欢学Python。")
        #下条命令,用符号\分为3行。
        print("好好学习,\
        天天向上。\
        我喜欢学Python。")

上面程序中,print语句中使用换行符“\”把1行语句分成了3行。程序运行结果如下。

        a大于等于10!
        好好学习,天天向上。我喜欢学Python。
        好好学习,天天向上。我喜欢学Python。

2.Python程序的注释

(1)在Python程序中,以符号“#”开头的行被当作是注释行。

(2)在Python源码的文件开头中要通过注释行声明编码方式。在中文程序中,一般第1行或第2行声明编码为“utf-8”。Python 3新版本已经将源文件的默认编码定为“utf-8”编码,因此程序中也可以省略。

        #-*- coding: utf-8-*-

(3)只包含空格和换行符的行,称为空行。Python 3解释器会自动忽略。

(4)语句后以符号“#”开始的部分为注释。Python 3解释器会自动忽略注释部分。

(5)多行注释的两边用一对3个单引号或3个双引号包含起来多行文字信息。Python 3解释器会自动忽略其中的内容。

下面看示例2-2。

        #-*- coding: utf-8-*-
        '''
        示例2-2 注释的演示.py
        这是多行注释的演示
        '''
        #这是单行注释的演示
        a=15  #把15赋值给变量a
        """
        这是多行注释的演示
        a=5   #把5赋值给变量a
        """
        print('a=', a)
        if a>=10 :   #如果a大于等于10
            print('a大于等于10! ')
        else :     #否则,a小于10
            print("a小于10! ")

程序运行结果:

        a= 15
        a大于等于10!

由于“a=5”这条语句在多行注释中,因此没有被执行。

3.Python 3程序的缩进

Python 3程序的空格缩进很重要,因为空格缩进长度决定着Python 3程序的逻辑结构。

(1)Python 3用相同空格缩进来表示同一个语句块,缩进是为了方便读取程序,而其他计算机语言一般用花括号“{语句块}”来表示。

(2)Python 3对缩进空格数没有要求,但在同一个模块中缩进空格数要相同,如都空两个空格作为缩进。

(3)在Spyder编辑器中,“Tab”键表示4个空格,因此建议读者以4个空格的倍数作语句块划分。

(4)在Spyder编辑器中,按“Tab”键对选中代码块整体增加4个空格;按“Shift+Tab”组合键对选中代码块整体减4个空格;小于4个空格的就不处理了。

在同一个逻辑块中,如果缩进空格数不同,就会引发错误,出现“IndentationError:unexpected indent”。

请看示例2-3。

        a=15
        if a>=10 :          #如果a大于等于10
            print('a大于等于10! ')
        else :              #否则,a小于10
            print("a小于10! ")

       b=15
        if b<=10 :          #如果b大于等于10
         print('b小于等于10! ')
        elif b<=20:         #否则,b小于10
         print("b大于10,且b小于20! ")
          c=15
         if c==15:
            print('c==5')
        elif b<=30:
         print("b大于20,且b小于30! ")

程序运行结果:

        File "C:/示例2-3.py", line 13
          c=15
          ^
      IndentationError: unexpected indent

4.Python3程序变量命名规则

(1)变量名的长度不受限制,但其中的字符必须是字母、数字或者下画线(_),而不能使用空格、连字符、标点符号、引号或其他字符。

(2)变量名的第一个字符不能是数字,而且必须是字母或下画线。

(3)Python3区分大小写英文字母。

(4)不能将Python3关键字用作变量名。

通过dir()函数可以查看目前系统已经定义的名称,包括用户自定义名称。

dir(__builtins__)函数会列出系统内置模块、系统关键字等名称,这些系统内置模块或关键字不能作为变量名或函数名字。

请看示例2-4。

        _MyName='Tom'
        _My_Name2='Tom2'
        a=10
        A=20
        print('_MyName= ', _MyName)
        print('_My_Name2= ', _My_Name2)
        print('A= ', A)
        print('a= ', a)

       print(dir(__builtins__))

程序运行结果:

        _MyName=  Tom
        _My_Name2=  Tom2
        A=  20
        a=  10
        ['ArithmeticError', 'AssertionError', 'AttributeError',
    'BaseException', 'BlockingIOError', 'BrokenPipeError', 'BufferError',
    'BytesWarning', 'ChildProcessError', 'ConnectionAbortedError',
    'ConnectionError', 'ConnectionRefusedError', 'ConnectionResetError',
    'DeprecationWarning', 'EOFError', 'Ellipsis', 'EnvironmentError',
    'Exception', 'False', 'FileExistsError', 'FileNotFoundError',
    'FloatingPointError', 'FutureWarning', 'GeneratorExit', 'IOError',
    'ImportError', 'ImportWarning', 'IndentationError', 'IndexError',
    'InterruptedError', 'IsADirectoryError', 'KeyError', 'KeyboardInterrupt',
    'LookupError', 'MemoryError', 'ModuleNotFoundError', 'NameError', 'None',
    'NotADirectoryError', 'NotImplemented', 'NotImplementedError', 'OSError',
    'OverflowError', 'PendingDeprecationWarning', 'PermissionError',
    'ProcessLookupError', 'RecursionError', 'ReferenceError',
    'ResourceWarning', 'RuntimeError', 'RuntimeWarning', 'StopAsyncIteration',
    'StopIteration', 'SyntaxError', 'SyntaxWarning', 'SystemError',
    'SystemExit', 'TabError', 'TimeoutError', 'True', 'TypeError',
    'UnboundLocalError', 'UnicodeDecodeError', 'UnicodeEncodeError',
    'UnicodeError', 'UnicodeTranslateError', 'UnicodeWarning', 'UserWarning',
    'ValueError', 'Warning', 'WindowsError', 'ZeroDivisionError', '__IPYTHON__',
    '__build_class__', '__debug__', '__doc__', '__import__', '__loader__',
    '__name__', '__package__', '__spec__', 'abs', 'all', 'any', 'ascii', 'bin',
    'bool', 'breakpoint', 'bytearray', 'bytes', 'callable', 'chr', 'classmethod',
    'compile', 'complex', 'copyright', 'credits', 'debugfile', 'delattr', 'dict',
    'dir', 'display', 'divmod', 'enumerate', 'eval', 'exec', 'filter', 'float',
    'format', 'frozenset', 'get_ipython', 'getattr', 'globals', 'hasattr',
    'hash', 'help', 'hex', 'id', 'input', 'int', 'isinstance', 'issubclass',
    'iter', 'len', 'license', 'list', 'locals', 'map', 'max', 'memoryview', 'min',
    'next', 'object', 'oct', 'open', 'ord', 'pow', 'print', 'property', 'range',
    'repr', 'reversed', 'round', 'runfile', 'set', 'setattr', 'slice', 'sorted',
    'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'vars', 'zip']

上面程序中列出的字符串,都是Python 3中的关键字。