Python 3 基础语法

任何事物都有它自己的运行法则,Python 也不例外

本章节我们就来学习 Python 最基本的语法规则

Python 文件扩展名

Python 文件默认的扩展名是 .py

字符编码

默认情况下,Python 3 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串

当然你也可以为源码文件指定不同的编码,但我们不推荐你这么做

# -*- coding: GBK -*-

UTF-8 是最流行的最通用的编码方式,所以建议你不要随意替换

Python 标识符

  1. Python 的标识符不能以数字开头,除此之外可以是任意字符,但建议都只使用 字母、数字、下划线(_)

    >>> 3 = 4
    SyntaxError: can't assign to literal
    >>> 3s = 4
    SyntaxError: invalid syntax
    
  2. Python 中的标识符是区分大小写的

    >>> hello = "Hello World"
    >>> print(hello)
    Hello World
    >>> print(Hello)
    Traceback (most recent call last):
      File "<pyshell#5>", line 1, in <module>
        print(Hello)
    NameError: name 'Hello' is not defined
    
  3. 以下划线开头的标识符是有特殊意义的

    1. 以单下划线开头 _foo 的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用 from xxx import而导入
    2. 以双下划线开头的 __foo 代表类的私有成员
    3. 以双下划线开头和结尾的 __foo__ 代表 Python 里特殊方法专用的标识,如 __init__()代表类的构造函数
  4. Python 3 中,非-ASCII 标识符也是允许的了

    >>> 你好 = "Hello World"
    >>> print(你好)
    Hello World
    

Python 保留字符

保留字不能用做函数名、变量名,或任何其它标识符名称,不然会发生意想不到的结果

所有 Python 的保留字只包含小写字母

Python 的标准库提供了一个 keyword 模块,可以输出当前版本的所有关键字

>>> import keyword
>>> print(keyword.kwlist)
['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
>>> print(len(keyword.kwlist))
33
False None True
and as assert
break class continue
def del elif
else except finally
for from global
if import in
is lambda nonlocal
not or pass
raise return try
while with yield

Python 注释

Python 有两种注释方法:'#' 开头 和 三个引号的字符串字面量

# 号开头的为单行注释

注释可以在语句或表达式行末

#!/usr/bin/python
# file:main.py

# 这是一个注释
print ("Hello, Python")   # 第二个注释

运行结果

Hello, Python

python 中多行注释使用三个单引号(''')或三个双引号(""")

#!/usr/bin/python
# filename: demo.py


'''
这是多行注释,使用单引号
这是多行注释,使用单引号
这是多行注释,使用单引号
'''

"""
这是多行注释,使用双引号
这是多行注释,使用双引号
这是多行注释,使用双引号
"""

行和缩进

Python 语言与其它语言最大的区别就是

Python 的代码块不使用大括号 {} 来控制类,函数以及其它逻辑判断 python 最具特色的就是用缩进来写模块

缩进的空白数量是可变的,但是所有代码块语句必须包含相同的缩进空白数量,这个必须严格执行

缩进造成的错误,应该名列 Python 错误榜第一,君不见一不小心就 IndentationError

一般情况下设置为 4 个空格,因为各个平台和编辑器的差异,建议设置一个制表符设置为 4 个空格

if True:
    print ("True")
else:
    print ("False")

以下代码将会执行错误

#!/usr/bin/python
# 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 3 中数有三种类型:整数、浮点数和复数

  1. 整数, 如 1, 12345556666666
  2. 浮点数,如 1.23、3E-2
  3. 复数,如 1 + 2j、 1.1 + 2.2j

字符串

  • Python 中单引号和双引号使用完全相同
  • 使用三引号('''或""")可以指定一个多行字符串
  • 转义符 '\'
  • 自然字符串, 通过在字符串前加 rR 如 r"this is a line with \n" 则 \n 会显示,并不是换行
  • 字符串是不可变的
  • 按字面意义级联字符串,如 "this " "is " "string" 会被自动转换为 this is string
word = '字符串'
sentence = "这是一个句子"
paragraph = """这是一个段落,
可以由多行组成"""

Python 空白行

如果一行只包含空格,制表符,回车换行符,那么我们称该行为空白行

空白行不是 Python 语句的一部分,主要用于分隔两段不同功能或含义的代码

比如函数之间或类的方法之间用空行分隔,表示一段新的代码的开始

类和函数入口之间也用一行空行分隔,以突出函数入口的开始

空行与代码缩进不同,空行并不是 Python 语法的一部分

书写时可以不插入空白行,Python 解释器运行也不会出错

空行也是程序代码的一部分,用于增加代码可读性

读取用户输入

可以使用 input([prompt]) 提示和读取用户的输入,prompt 参数为提示语句

默认情况下读取到回车换行符就停止读取

>>> s = input("\n\nsay some words:")


say some words:Nice to see you
>>> print ( s )
Nice to see you

如果要输入换行符,需要使用 '\r\n' 字符串

print 输出

前面我们已经使用过无数次的 print() 函数

print() 用于输出数据到标准输出( 一般为屏幕 )

print() 默认是会添加换行符的,如果要不换行,则需要传递参数 end= ''

#!/usr/bin/python

x="Hello"
y="World"

# 换行输出
print (x)
print (y)

print ('---------')

# 不换行输出
# 
print(x, end='')
print(x, end='')

运行以上 Python 代码,输出结果如下

Hello
World
---------
HelloWorld

逗号(,) 可以理解为,等等我还有话要说,你 (换行符) 别插嘴...

Python 语句分隔符

Python 每条语句结尾的分号 (;) 不是强制需要的,因为 Python 默认以换行符(新行) 分隔每条语句

如果不是特殊情况,请删掉分号,这样才 pythonic

甚至我们推荐,请忘记 Python 中的分号(;)

#!/usr/bin/python

print ('hello')
print ('简单教程')

输出

hello
简单教程

如果要同一行显示多条语句、方法,可以是用分号 (;) 分开

>>> print ('Hello');print ('World');
Hello
World

可以这么写,但我们不推荐你这么做

Python 引号

Python 可以使用引号( ' )、双引号( " )、三引号( '''""" ) 来表示字符串

引号的开始与结束必须的相同类型的

三引号可以由多行组成,是编写多行文本的快捷语法,常用于文档字符串,在文件的特定地点,被当做注释

word = 'word'
sentence = "这是一个句子"
paragraph = """这是一个段落
包含了多个语句"""


'''这就是
一个
注释语句了
'''

多行注释其实就是一个字符串,因为没有赋值给任何一个变量,所以运行的结果就被丢弃了

代码块

一般情况下,我们把缩进相同的语句称之为一个代码块

if 、while 、def 和 class 这样的复合语句,首行以关键字开始,以冒号( : )结束, 该行之后的一行或多行代码构成代码块

有时候我们也会把首行及后面的代码块称为一个子句 (clause ) ,例如

if expression : 
   statement(s) 
elif expression :  
   statement(s)  
else :  
   statement(s)

命令行参数

我们已经知道了可以在命令行中输入 python 来启动 Python 交互式 Shell

其实还可以在输入 python 的同时附加一些参数来定制 python 和查看 Python 一些信息,比如

$ python V
Python 3.6.4

用于查看 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

其中的 buildinstall 就是命令行参数了

更多命令行参数的知识,可以访问我们的 Python 命令行参数

Python3 基础教程

关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.