下面开始正式学习Python,首先开始安装Python:
一、Windows安装Python
在 Windows 上安装 Python 和安装普通软件一样简单,下载安装包以后猛击“下一步”即可。
1.1.安装包下载
Python 安装包下载地址:https://www.python.org/downloads/
打开该链接,可以看到有两个版本的 Python,分别是 Python 3.x 和 Python 2.x,如下图所示:
建议初学者直接使用 Python 3.x。截止到目前(2020-03-28),Python 的最新版本是 3.8.x,就以该版本演示 Windows 下的 Python 安装过程。点击上图中的版本号或者“Download”按钮进入对应版本的下载页面,滚动到最后即可看到各个平台的 Python 安装包。
对前缀的说明:
- 以
Windows x86-64
开头的是 64 位的 Python 安装程序; - 以
Windows x86
开头的是 32 位的 Python 安装程序。
对后缀的说明:
embeddable zip file
表示.zip
格式的绿色免安装版本,可以直接嵌入(集成)到其它的应用程序中;executable installer
表示.exe
格式的可执行程序,这是完整的离线安装包,一般选择这个即可;web-based installer
表示通过网络安装的,也就是说下载到的是一个空壳,安装过程中还需要联网下载真正的 Python 安装包。
这里我选择的是“Windows x86-64 executable installer”,也即 64 位的完整的离线安装包,双击下载得到的 python-3.8.1-amd64.exe,就可以正式开始安装 Python 了。
1.2.安装向导
如下图所示:
请尽量勾选Add Python 3.8 to PATH
,这样可以将 Python 命令工具所在目录添加到系统 Path 环境变量中,以后开发程序或者运行 Python 命令会非常方便。
Python 支持两种安装方式,默认安装和自定义安装:
- 默认安装会勾选所有组件,并安装在 C 盘;
- 自定义安装可以手动选择要安装的组件,并安装到其它盘符。
这里我们选择自定义安装,将 Python 安装到常用的目录,避免C盘文件过多。点击“Customize installation”进行入下一步,选择要安装的 Python 组件。
没有特殊要求的话,保持默认即可,也就是全部勾选,点击“Next”继续,选择安装目录。
选择好你常用的安装目录,点击“Install”,等待几分钟就可以完成安装。
1.3.安装完成测试
安装完成以后,打开 Windows 的命令行程序(命令提示符),在窗口中输入python
命令(注意字母p
是小写的),如果出现 Python 的版本信息,并看到命令提示符>>>
,就说明安装成功了,如下图所示。
运行 python 命令启动的是 python 交互式编程环境,我们可以在>>>
后面输入代码,并立即看到执行结果,请看下面的例子。
按下Ctrl+Z
快捷键,或者输入 exit() 命令即可退出交互式编程环境,回到 Windows 命令行程序。
二、Python语法
2.1.Python的注释及乱码
2.1.1.单行注释
单行注释以#开头,#右边的所有东西当做说明,而不是真正要执行的程序,起辅助说明作用
# 注释内容
从井号#
开始,直到这行结束为止的所有内容都是注释。Python 解释器遇到#
时,会忽略它后面的整行内容。
说明多行代码的功能时一般将注释放在代码的上一行,例如:
#使用print输出字符串
print("Hello World!")
print("Python语言中文网")
print("http://c.biancheng.net/python/")
#使用 print输出数字
print(100)
print( 3 + 100 * 2)
print( (3 + 100) * 2 )
说明单行代码的功能时一般将注释放在代码的右侧,例如:
print("http://c.biancheng.net/python/") #输出Python教程的地址
print( 36.7 * 14.5 ) #输出乘积
print( 100 % 7 ) #输出余数
2.1.2.多行注释
多行注释可以写多行的功能说明,指的是一次性注释程序中多行的内容(包含一行)。
Python 使用三个连续的单引号'''或者三个连续的双引号"""注释多行内容,具体格式如下:
'''
使用 3 个单引号分别作为注释的开头和结尾
可以一次性注释多行内容
这里面的内容全部是注释内容
'''
或者
"""
使用 3 个双引号分别作为注释的开头和结尾
可以一次性注释多行内容
这里面的内容全部是注释内容
"""
多行注释通常用来为 Python 文件、模块、类或者函数等添加版权或者功能描述信息。
注意事项
1) Python 多行注释不支持嵌套,所以下面的写法是错误的:
'''
外层注释
'''
内层注释
'''
'''
2) 不管是多行注释还是单行注释,当注释符作为字符串的一部分出现时,就不能再将它们视为注释标记,而应该看做正常代码的一部分,例如:
print('''Hello,World!''')
print("""http://c.biancheng.net/cplus/""")
print("#是单行注释的开始")
运行结果:
Hello,World!
http://c.biancheng.net/cplus/
#是单行注释的开始
对于前两行代码,Python 没有将这里的三个引号看作是多行注释,而是将它们看作字符串的开始和结束标志。对于第 3 行代码,Python 也没有将井号看作单行注释,而是将它看作字符串的一部分。
2.1.3.Python乱码问题
由于Python源代码也是一个文本文件,所以,当你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为UTF-8编码。当Python解释器读取源代码时,为了让它按UTF-8编码读取,我们通常在文件开头写上这两行:
# -*- coding:utf-8 -*-
# coding=utf-8
2.2.Python的缩进规则
和其它程序设计语言(如 Java、C 语言)采用大括号“{}”分隔代码块不同,Python 采用代码缩进和冒号( : )来区分代码块之间的层次。
在 Python 中,对于类定义、函数定义、流程控制语句、异常处理语句等,行尾的冒号和下一行的缩进,表示下一个代码块的开始,而缩进的结束则表示此代码块的结束。
注意,Python 中实现对代码的缩进,可以使用空格或者 Tab 键实现。但无论是手动敲空格,还是使用 Tab 键,通常情况下都是采用 4 个空格长度作为一个缩进量(默认情况下,一个 Tab 键就表示 4 个空格)。例如,下面这段 Python 代码中(涉及到了目前尚未学到的知识,初学者无需理解代码含义,只需体会代码块的缩进规则即可):
height=float(input("输入身高:")) #输入身高
weight=float(input("输入体重:")) #输入体重
bmi=weight/(height*height) #计算BMI指数
#判断身材是否合理
if bmi<18.5:
#下面 2 行同属于 if 分支语句中包含的代码,因此属于同一作用域
print("BMI指数为:"+str(bmi)) #输出BMI指数
print("体重过轻")
if bmi>=18.5 and bmi<24.9:
print("BMI指数为:"+str(bmi)) #输出BMI指数
print("正常范围,注意保持")
if bmi>=24.9 and bmi<29.9:
print("BMI指数为:"+str(bmi)) #输出BMI指数
print("体重过重")
if bmi>=29.9:
print(BMI指数为:"+str(bmi)) #输出BMI指数
print("肥胖")
Python 对代码的缩进要求非常严格,同一个级别代码块的缩进量必须一样,否则解释器会报 SyntaxError 异常错误。
对于 Python 缩进规则,初学者可以这样理解,Python 要求属于同一作用域中的各行代码,它们的缩进量必须一致,但具体缩进量为多少,并不做硬性规定。
2.3.Python编码规范
Python 采用 PEP 8 作为编码规范,其中 PEP 是 Python Enhancement Proposal(Python 增强建议书)的缩写,8 代表的是 Python 代码的样式指南。下面仅给大家列出 PEP 8 中初学者应严格遵守的一些编码规则:
2.3.1.import 语句
每个 import 语句只导入一个模块,尽量避免一次导入多个模块,例如:
#推荐
import os
import sys
#不推荐
import os,sys
关于 import 的含义和用法会在后续介绍,这里不必深究。
2.3.2.不要在行尾添加分号,也不要用分号将两条命令放在同一行
例如:
#不推荐
height=float(input("输入身高:")) ; weight=fioat(input("输入体重:")) ;
2.3.3.建议每行不超过 80 个字符
如果超过,建议使用小括号将多行内容隐式的连接起来,而不推荐使用反斜杠 \ 进行连接。例如,如果一个字符串文本无法实现一行完全显示,则可以使用小括号将其分开显示,代码如下:
#推荐
s=("C语言中文网是中国领先的C语言程序设计专业网站,"
"提供C语言入门经典教程、C语言编译器、C语言函数手册等。")
#不推荐
s="C语言中文网是中国领先的C语言程序设计专业网站,\
提供C语言入门经典教程、C语言编译器、C语言函数手册等。"
注意,此编程规范适用于绝对大多数情况,但以下 2 种情况除外:
- 导入模块的语句过长。
- 注释里的 URL。
2.3.4.使用必要的空行可以增加代码的可读性
通常在顶级定义(如函数或类的定义)之间空两行,而方法定义之间空一行,另外在用于分隔某些功能的位置也可以空一行。比如说,在图 1 右侧这段代码中,if 判断语句同之前的代码多实现的功能不同,因此这里可以使用空行进行分隔。
2.3.5.使用空格进行必要分隔
通常情况下,在运算符两侧、函数参数之间以及逗号两侧,都建议使用空格进行分隔。
2.4.变量及类型
2.4.1.变量的定义
在Python中,存储一个数据,需要一个叫做变量的东西:
例如:
num1=10
num2=8
result=num1+num2
变量是指没有固定的值,以非数字的符号来表达,可以改变的量。
变量三要素:变量的名称,变量的类型,变量的值
2.4.2.变量的类型
为了更充分的利用内存空间以及更有效率的管理内存,变量是有不同的类型,如图所示:
a.整数
Python可以处理任意大小的整数,当然包括负整数,在程序中的表示方法和数学上的写法一模一样,例如:1,100,-8,0,等等。
计算机由于使用二进制,所以,有时候用十六进制表示整数比较方便。十六进制一般用数字0到9和字母A到F(或a~f)表示,其中:A~F表示10~15。
b.浮点数
浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的,比如,1.23x109和12.3x109是完全相等的。浮点数可以用数学写法,如1.23,3.14,-9.01,等等。
对于很大或很小的浮点数,就必须用科学计数法表示,把10用e替代,1.23x109就是1.23e9,或者12.3e8,0.000012可以写成1.2e-5,等等。
注意:整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的(除法难道也是精确的?是的!),而浮点数运算则可能会有四舍五入的误差。
c.字符串
字符串是以单引号'或双引号"括起来的任意文本,比如'abc',"xyz"等等。请注意,单引号'或双引号"只是一种表示方式,本身不是字符串的一部分,因此,字符串'abc'只有a,b,c这3个字符。如果单引号'本身也是一个字符,那就可以用双引号 "" 括起来,比如"I'm OK"包含的字符是I,',m,空格,O,K这6个字符。
如果字符串内部既包含'又包含"怎么办?可以用转义字符\来标识,比如:'I\'m \"OK\"!' 表示的字符串内容是:I'm "OK"!
转义字符\可以转义很多字符,比如\n表示换行,\t表示制表符,字符\本身也要转义,所以\\表示的字符就是\,可以在Python的交互式命令行用print()打印字符串看看。如果字符串里面有很多字符都需要转义,就需要加很多\,为了简化,Python还允许用r''表示''内部的字符串默认不转义
#普通含有转义的字符串
text="1 E:/Code/PycharmProjects/QtDemo/ToolsList\__pycache__\start.cpython-36.pyc \r\n"
print(text)
#输出如下:
#E:/Code/PycharmProjects/QtDemo/ToolsList__pycache__\start.cpython-36.pyc
#<空行>
#在python中使用r来处理常量,强制不转义。
text=r"1 E:/Code/PycharmProjects/QtDemo/ToolsList\__pycache__\start.cpython-36.pyc \r\n"
print(text)
#输出如下:
#E:/Code/PycharmProjects/QtDemo/ToolsList__pycache__\start.cpython-36.pyc \r\n
如果字符串内部有很多换行,用\n写在一行里不好阅读,为了简化,Python允许用'''...'''的格式表示多行内容,
print('''line1
line2
line3''')
d.布尔值
布尔值和布尔代数的表示完全一致,一个布尔值只有True、False两种值,要么是True,要么是False,在Python中,可以直接用True、False表示布尔值(请注意大小写),也可以通过布尔运算计算出来
布尔值可以用and、or和not运算。
and运算是与运算,只有所有都为True,and运算结果才是True
e.空值
空值是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值。此外,Python还提供了列表、字典等多种数据类型,还允许创建自定义数据类型,我们后面会继续讲到。
怎样知道一个变量的类型呢?
在python中,只要定义了一个变量,而且它有数据,那么它的类型就已经确定了,不需要咱们开发者主动的去说明它的类型,系统会自动辨别,可以使用type(变量的名字)来查看变量的类型。
2.4.3.常见的数据类型转换
函数 | 说明 |
int(x [,base ]) | 将x转换为一个整数 |
long(x [,base ]) | 将x转换为一个长整数 |
float(x ) | 将x转换到一个浮点数 |
complex(real [,imag ]) | 创建一个复数 |
str(x ) | 将对象 x 转换为字符串 |
repr(x ) | 将对象 x 转换为表达式字符串 |
eval(str ) | 用来计算在字符串中的有效Python表达式,并返回一个对象 |
tuple(s ) | 将序列 s 转换为一个元组 |
list(s ) | 将序列 s 转换为一个列表 |
chr(x ) | 将一个整数转换为一个字符 |
unichr(x ) | 将一个整数转换为Unicode字符 |
ord(x ) | 将一个字符转换为它的整数值 |
hex(x ) | 将一个整数转换为一个十六进制字符串 |
oct(x ) | 将一个整数转换为一个八进制字符串 |
2.5.标识符和关键字
2.5.1标识符
开发人员在程序中自定义的一些符号和名称,标示符是自己定义的,如变量名 、函数名等。
a.标示符的规则:标示符由字母、下划线和数字组成,且数字不能开头。不能有特殊符号:\ , / , ; , #
python中的标识符是区分大小写的:
Python≠python
b.命名规则:
- 见名知意
起一个有意义的名字,尽量做到看一眼就知道是什么意思(提高代码可 读性) 比如:
名字 就定义为 name
学生 就定义为 student
- 驼峰命名法
- 小驼峰式命名法(lower camel case): 第一个单词以小写字母开始;第二个单词的首字母大写,例如:myName、aDog
- 大驼峰式命名法(upper camel case): 每一个单字的首字母都采用大写字母,例如:FirstName、LastName
- 下划线命名法:还有一种命名法比较流行,就是用下划线“_”来连接所有的单词,比如send_buf
2.5.2.关键字
python一些具有特殊功能的标示符,这就是所谓的关键字
关键字是python已经使用的了,所以不允许开发者自己定义和关键字相同的名字的标示符
可以通过以下命令进行查看当前系统中python的关键字:
import keyword
keyword.kwlist
输出结果: