编程语言
C#编程语言基础
C#面向对象与多线程
C#数据及文件操作
JavaScript基础
JavaScript的数据类型和变量
JavaScript的运算符和表达式
JavaScript的基本流程控制
JavaScript的函数
JavaScript对象编程
JavaScript内置对象和方法
JavaScript的浏览器对象和方法
JavaScript访问HTML DOM对象
JavaScript事件驱动编程
JavaScript与CSS样式表
Ajax与PHP
ECMAScript6的新特性
Vue.js前端开发
PHP的常量与变量
PHP的数据类型与转换
PHP的运算符和优先规则
PHP程序的流程控制语句
PHP的数组操作及函数
PHP的字符串处理与函数
PHP自定义函数
PHP的常用系统函数
PHP的图像处理函数
PHP类编程
PHP的DataTime类
PHP处理XML和JSON
PHP的正则表达式
PHP文件和目录处理
PHP表单处理
PHP处理Cookie和Session
PHP文件上传和下载
PHP加密技术
PHP的Socket编程
PHP国际化编码
MySQL数据库基础
MySQL数据库函数
MySQL数据库账户管理
MySQL数据库基本操作
MySQL数据查询
MySQL存储过程和存储函数
MySQL事务处理和触发器
PHP操作MySQL数据库
数据库抽象层PDO
Smarty模板
ThinkPHP框架
Python语言基础
Python语言结构与控制
Python的函数和模块
Python的复合数据类型
Python面向对象编程
Python的文件操作
Python的异常处理
Python的绘图模块
Python的NumPy模块
Python的SciPy模块
Python的SymPy模块
Python的数据处理
Python操作数据库
Python网络编程
Python图像处理
Python机器学习
TensorFlow深度学习
Tensorflow常用函数
TensorFlow用于卷积网络
生成对抗网络GAN
Python是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年。Python语言具有简洁的语法规则,特别是具有大量优秀的第三方模块,在各方面得到广泛应用,特别是在科学计算及机器学习领域。
一、下载安装和配置:
到网站http://www.python.org/下载安装文件,然后进行安装,比如可以安装到E:\python\目录下。安装完成后,一般需要把安装路径加入环境变量Path中,然后就可以正常运行Python了。由于历史的原因,Python形成了Python 2.x和Python 3.x两个版本,两个版本互不兼容。新使用者一般还是直接使用3.x版本为好。
1. 启动方式:
Python可以通过两种方式启动,一种是命令行方式,另一种是使用Python的集成开发环境IDLE。使用IDLE可以输入代码存储为文件,python文件以py为后缀。
2. 编码方式:
Python源程序中,除了使用ASCII编码外,还可以使用其他编码,方法是在#!行后面用一个特殊的注释行来定义字符集:
#! -*- coding: iso-8859-1 -*-
根据这个声明,Python就会将文件中的字符尽可能地从指定的编码转换为Unicode。如果文本编辑器支持UTF-8格式,也可以转换为此格式。
使用UTF-8编码,可以在字符串和注释中使用实际上大部分语言。标识符中不能使用非ASCII字符集。为了正确显示所有的字符,一定要在编辑器中将文件保存为URF-8格式,而且使用支持文件中所有字符的字。
3. 启动文件:
可以把Python启动时执行的一些命令写入一个文件中,并把此文件指定为PYTHONSTARTUP环境变量。比如下述文件代码为:
if os.path.isfile('.pythonrc.py'): execfile('.pythonrc.py')
4. Python集成开发环境:
Python的开发工具很多,如PythonWin、Eclipse等,这些开发环境支持图形化操作,还有编辑、调试和纠错功能,也可以使用其他文本编辑器,如EditPlus、Notpad++等。
Python安装程序集成了IDLE集成开发环境,可以用来作为IDE使用,不过功能比较简单;而Anaconda、WinPython、Python(x,y)等软件中集成了Spyder交互式开发环境,有调试和检查功能,便于编写Python代码。其他还有一些商业化或付费IDE软件,如PyCharm、WingIDE。
5. 软件包的安装方法:
Python的大量第三方软件包扩展了其应用范围及功能,称为Python语言的主要优势。要下载相关软件包,一般使用pip或pip3命令,在安装Python时应选择同时按照pip功能模块。
使用pip/pip3安装软件包的常用命令有:
·安装:pip3 install PackageName
·升级:pip3 install --upgrade PackageName
·安装指定版本:pip3 install PackageName==1.0.4
·指定已下载的安装包路径:pip3 install path/Package-1.04.wel
·指定网络安装包路径:pip3 install http://my.package.com/Package-1.0.4.zip
·卸载软件包:pip3 uninstall PackageName
·搜索软件包的名称:pip3 search "query"
·安装文件中列出的软件包:pip3 install -r requirements.txt
·导出Python包列表:pip3 freeze > requirements.txt
6. Anaconda:
Anaconda可以认为是一个Python的专用发行版,其中已经包含了大量的用于科学计算的常用库,非常适宜科学计算及机器学习等方面的应用。Python虽然是一种通用的开源的计算机语言,但近些年主要是在科学计算、大数据处理、机器学习、人工智能方面独领风骚,这主要依赖于其独有的大量第三方库。这些库也是逐渐积累的,一些库依赖于其他库,如果逐一下载也比较繁琐,而且也受版本差异的影响,有时并不能正常运行。使用Anaconda就比较方便,其已经包含了常用的NumPy、SciPy、pandas等基础库,版本管理方面也较好,还集成了Spyder交互式开发环境,使用比较方便。
Anaconda软件包可以到https://www.anaconda.com/官网下载,但下载比较慢,为了方便可到清华的资源网站https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/下载相应版本,此网站还有其他可用资源,比如TensorFlow的一些版本,可以自己去查找相应资源。
如果使用Anaconda,还可以使用下面的命令添加清华的资源网站上的Anaconda Python免费仓库:
conda config --add channels 'https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/'
conda cinfig --set show_channel_urls yes
二、编码规则:
1. 代码缩进:
通过在一行代码的前面输入若干空格或者制表符来表示行与行之间的层次关系。很多语言都使用代码缩进来使代码清晰,易于阅读和理解。对Python语言,代码缩进是一种语法,因为没有花括号或begin...end来分隔代码块,是使用冒号和代码缩进来区分代码间的层次。
time=12
if(time==12):
print('12') #代码缩进
else:
print('18') #代码缩进
Python对代码缩进要求很严格,如果程序中没有采用代码缩进的编码风格,就会抛出IndentationError异常。缩进的代码可以只使用一个空格或者几个制表符,最好要统一,不然会出现错误。最佳方法是统一使用4个空格缩进。
在if...else中,代码缩进不同,有可能执行时会有不同的结果。
2. 空行:
函数与函数之间或者类与类之间用空行分隔,表示一段新的代码的开始。空行不是Python语法的一部分,不插入空行运行也正常,是为了程序后期维护方便和可读性而加入的。
3. 命名规则:
1)包和模块命名规则:
Python语言全部以小写字母命名包,模块名以不含下划线的简短小写字母来命名,因为模块名会映射到文件名,有些文件系统对大小写不敏感并且会截取比较长的名字。如:
Filename:pythonModule.py
上述语句声明了一个模块名称,模块名全部用小写字母组成。
2)类和对象命名规则:
Python类名采用CapWords约定,即每个单词的首字母要大写,其他字母小写;对象名用小写字母表示。类的私有属性和私有方法以两个下划线作为前缀,对象以点操作符来访问类中的属性和方法。示例:
class MyClass:
__username=''
def __init__(self,username):
self.__username=username
def getUserName(self):
return self.__username
if __name__=="___main__":
myclass=MyClass('admin')
print(myclass.getUserName())
3)函数命名规则:
函数名必须下划线或字母开头,可以包含任意字母、数字或下划线的组合,函数名是区分大小写的,不能使用保留字。
4)标识符的命名:
标识符用来标识某种对象,首字母必须为字母或下划线,以下划线开头的有特殊含义:
·以单下划线开头 的代表不能直接访问的类属性,需通过类提供的接口访问
·以双下划线开头的代表类的私有成员
·以双下划线开头和结尾的,代表Python特殊方法,如__init__为类的构造器
标识符其他部分可以由大小写字母、下划线或数字组成,对大小写敏感。单独的下划线是一个特殊变量,代表上一次运行的结果。
4. 注释:
注释用于说明代码的功能、算法、及作者及时间等信息,使程序易于阅读。
1)单行注释:
使用#号加若干空格开始,后面是注释的内容,回车为注释结束。
2)行内注释:
至少用两个空格和语句分开,以#和单个空格开始。
3)注释块:
通常与相应代码有相同的缩进层次,使用#和一个空格开始。
4)文档字符串:
这是一种特殊的注释,用于模块、类或函数的开头,使用单引号、双引号、三引号添加一个字符串,常用于说明这个包、模块、类、函数的使用方法、参数说明、返回值等,甚至包括使用示例和测试。文档字符串可以在运行时访问,也可以用于自动生成文档。
文档字符串有比较固定的位置:
·包的文档字符串位于包内的init.py文件的开头
·模块的文档字符串位于模块所在文件的开头
·类的文档字符串位于类的名称所在行的下一行,所有描述之前
·函数的文档字符串位于函数名称所在行的下一行,函数体之前
Python中可以通过__doc__特殊变量获取相应的文档字符串,模块、类、函数声明中的第一个没有赋值的字符串可用obj.__doc__来访问,其中obj是模块名、类名、函数名。
5)中文注释:
如果需要在代码中使用中文注释,需要在文件最前面加上如下说明:
#_*_ coding:UTF-8 _*_
6)跨平台注释:
如果代码需要运行在Windows以外的平台上,需要在文件最前面加上注释:
#!/usr/bin/env python # 会取计算机的 PATH 中指定的第一个 python 来执行脚本
#! /usr/bin/python # 使用/usr/bin/python 目录下的 python 来执行脚本
5. 语句的分隔:
Python也支持分号为语句结束标识,但分号可以忽略,主要以换行来识别语句的结束。如果需要在一行代码中书写多条语句,就必须使用分号分隔每条语句。分号在Python中不推荐使用,倾向于使用换行符作为每条语句的分隔。
如果语句过长,一行中无法写下,使用反斜杠将一行语句分为多行。如果语句中包含小括号、中括号或大括号,并在其中分行,则不需要使用反斜杠表示续行。
6. 关键字:
Python包括一些有特殊含义的关键字,也称保留字,不允许用作变量名、函数名等场合。可以导入keyword模块后使用print(keyword.kwlist)列出这些关键字:
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', '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']
7. 其他一些特殊语法:
1)两个变量交换:
x,y=y,x
2)lambda函数:可以接收任意多个参数并返回单个表达式
f=lambda x,y:x**2+y**2
print("f(3,4)=", f(3,4))
三、数据类型:
Python提供了一些内置的数据类型,包括数值型、字符串型、布尔型等基本数据类型,还有列表、元组、字典和集合等复合数据类型
1. 数值类型:
数值类型用于存储数值,可以参与算术运算。Python支持3种不同的数值数据类型,包括整型int、浮点型float和复数型complex。
1)整型int:
整型数据即整数,不带小数,但可以有正负号。在Python 3.x中,整型数据的值在计算机内的表示不是固定长度的,只要内存许可,整数可以扩展到任意长度,整数的取值范围几乎包括了全部整数,给大数据计算带来便利。
整型一般以十进制表示,但也支持二进制、八进制和十六进制,二进制以0b或0B开头,后接数字0、1,;八进制整数以0o或0O开头,后接0~7;十六进制则以0x或0X开始,后接0~9和A~F(大小写皆可)。在Python2.x中,整型数据分为int型和long型,int型一般占用32个二进制位,而long型在计算机内没有长度限制。
2)浮点型float:
浮点型表示一个实数,有十进制小数形式和指数形式两种,指数形式以e或E表示以10为底的指数,e之前为数字部分,之后为指数部分,两部分必须同时存在,指数部分必须为整数,如9.23e-8。
Python 3.x中,默认提供17位有效数字的精度,每个浮点数占8个字节(64bit),完全遵守IEEE754规范,其中52比特用于表示底,11比特用于表示指数,剩下1比特表示符号。实际精度依赖于机器架构和创建Python解释器的编译器。
可以使用__sizeof__()方法获取浮点数所占的字节数,一般为24字节:f.__sizeof__()
3)复数complex:
一个实数和一个虚数组合构成一个复数,一个复数是一对有序浮点数(x,y),表示为x+yj,其中x为实数部分,y是虚数部分。虚数是不能单独存在的,它与一个值为0.0的实数一起构成一个复数。虚数部分必须有后缀j或J。复数有如下属性和方法:
属性 |
描述 |
num.real |
复数的实部 |
num.imag |
复数的虚部 |
num.conjugate() |
返回该复数的共轭复数对象 |
也就是可以使用x.real和x.imag分别获取复数x的实部和虚部,结果都是浮点型。
4)十进制浮点数:
十进制浮点数不是内建类型,必须先导入decimal模块才能使用:
from decimal import Decimal
因为双精度浮点数遵守IEEE754规范,因此浮点值只能有52位精度,在二进制表示中是一个无限循环片段,往往与结果数值有个小的偏差,这时需要使用十进制浮点数。
比如,在IDLE环境中输入1.1+5.2,得到数值为6.300000000000001
使用十进制浮点数,Decimal('1.1')+Decimal('5.2'),结果为Decimal('6.3')
使用print(Decimal('1.1')+Decimal('5.2')),输出结果为6.3。
5)布尔类型:
布尔类型数据用于描述逻辑判断的结果,Python中包括True和False,分别代表逻辑真和逻辑假。值为镇或假的表达式称为布尔表达式,Python中,布尔类型实际上是整数的子类,True和False分别用整数值1和0参与运算,也就是可以执行False+1这种操作,返回值为整数。
任何值为0的数字或空集,包括空列表、空元组、空字典等,布尔值都是False。
6)数据类型转换函数:
可以将一种数据类型转换为另一种数据类型,是内建函数,可以直接使用。常用的数据类型转换函数有:int()、float()、complex()、bool()等,分别用来转换为整数、浮点数、复数和布尔型。
7)数值运算函数:
对于数值类型,Python提供了用于计算的内建函数。
·abs():返回给定值的绝对值,如果是一个复数则返回复数的模
·divmod():整除和求余结合,返回包含商和余数的二元组
·pow():指数运算,类似**,但可以有第3个参数,表示先对前两个参数进行指数运算,然将结果对第3个参数进行求余运算。主要用于密码运算
·round():用于对浮点数四舍五入,有一个可选的小数位数参数
2. 复合数据类型:
Python中常见的复合数据类型有列表、元组、字典和集合,其中的数据包含多个相互关联的数据元素,其实字符串也是一种复合数据类型。
列表、元组和字符串是有顺序的数据元素集合体,称为序列sequence,可以通过各数据元素在序列中的位置编号(索引)来访问数据元素;字典和集合是无顺序的数据集合体,没有特定的排列顺序,不能通过位置编号来访问数据元素。
1)字符串类型:
Python中定义字符串可以使用单引号、双引号和三引号,三引号为连续三个单引号或双引号。当字符串中包含双引号时可以用单引号,当字符串中包含单引号时可以使用双引号。用三引号括起来的字符串可以包含多行。Python中的字符串是只读的。
①转义字符:
为了在字符串中使用一些特殊字符,使用转义字符。转义字符以反斜杠开头,后跟一个或多个字符,表示特定的含义。常用的转义字符有:
转义字符 |
十进制ASCII码 |
说明 |
\0 |
0 |
空字符 |
\a |
7 |
产生铃声 |
\b |
8 |
退格符backspace |
\n |
10 |
换行符 |
\r |
13 |
回车符 |
\t |
9 |
水平制表符 |
\\ |
92 |
反斜杠 |
\' |
44 |
单引号 |
\" |
34 |
双引号 |
\ddd |
|
1~3位八进制数表示的ASCII码代表的字符 |
\xhh |
|
1~2位十六进制数表示的ASCII码所代表的字符 |
其中,\b、\n、\r、\t用于输出时控制输出项的位置。
如果不想让反斜杠发生转义,可以在字符串前面添加r,表示原始字符串:
print(r'C:\python\name') # 如果不加r,会把字符串中的\n认为是转义换行符
②字符串的连接:
使用“+”号将两个字符串连接成一个字符串。
③基本的字符串函数:
⑴ eval()函数:
eval()函数的作用是把字符串的内容作为对应的Python语句来执行。示例:
eval('23+45')
⑵ len()函数:
len()函数返回字符串的长度,即字符串中所包含的字符个数。
④字符串表示的函数:
Python提供了两个函数来表示字符串。
·str()函数:把值转换为合理形式的字符串。
·repr()函数:创建一个字符串,以合法的Python表达式的形式来表示值。
2)列表list:
列表是Python中常用的复合数据类型,可以完成大多数复合数据类型的操作。列表是写在中括号间用逗号分隔的元素序列,元素的类型可以不相同,可以数字、单个字符、字符串,甚至包含列表(即列表嵌套)。列表中的元素是可以改变的。
3)元组tuple:
元组是写在小括号之间用逗号隔开的元素序列,元组中元素的类型也可以不相同。元组的元素不能修改。
元组中,空的圆括号表示空元组,当元组只有一个元素时,必须以逗号结尾。
4)字典dictionary:
字典是写在大括号之间用逗号分隔的元素集合,其元素由键key和对应的值value组成,通过键来存取字典中的元素。
字典是一种映射类型,是一个无序的“键-值”对集合,其中的键必须使用不可变类型,同一个字典中键必须互不相同。
5)集合set:
集合是一个无序且包含不重复元素的数据类型,基本功能是进行成员关系测试和消除重复元素。可以使用大括号或者set()函数创建集合类型。
四、变量和表达式:
1. 变量:
变量名是标识名的一种,但只能以字母开头,其他字符可以是数字、字母或下划线,大小写敏感。Python是动态类型语言,即不需要预先声明变量的类型。单独的下划线是一个特殊变量,代表上一次运行的结果。可以使用id(x)函数返回变量的内存地址。
1)变量赋值:
变量基本上就是代表某值的名字,使用等号=为变量赋值。变量的类型和值在赋值的那一刻就被初始化了。Python支持递增或递减赋值,还支持增量赋值:
count*=10
Python不支持自增或自减运算符++、--。
2)局部变量:
局部变量就是只能在函数或代码段内使用的变量,函数或代码段一旦结束,局部变量的生命周期也将结束,在函数或代码段外是调用不到的。
Python创建的变量就是一个对象,Python会管理变量的生命周期。
3)全局变量:
全局变量是能被不同的函数、类或文件调用的变量,在函数之外定义的变量即为全局变量。全局变量默认可以被文件内部的任何函数或任何代码段访问,外部文件也可以访问。全局变量通常在文件的开始处定义。
在内部使用时,使用global保留字引用全局变量,如果不使用global保留字引用,有时候会出现不正常的结果。
2. 运算符:
Python的运算符包括赋值运算符、算术运算符、关系运算符和逻辑运算符。表达式就是将不同类型的数据用运算符按一定规则连接起来的式子。
1)算术运算符:
运算符 |
+ |
- |
* |
/ |
// |
% |
** |
描述 |
加法 |
减法 |
乘法 |
除法 |
整除 |
求余 |
求幂 |
新版本中还提供了整除运算符//,运算后返回商的整数部分,如果分子或分母为浮点型,结果也是浮点型。
2)关系运算符:
关系运算符是对两个对象进行比较:
运算符 |
< |
> |
<= |
>= |
== |
!= 或 <> |
描述 |
小于 |
大于 |
小于或等于 |
大于或等于 |
等于 |
不等于 |
关系运算符结果为布尔值。
Python中表示浮点数的有效数字是有限的,这样就会在计算时产生微小误差,一般情况下不至于影响数值计算结果,但在对浮点数进行相等比较时往往就会出现问题。一般使用方法:
abs((x-y)<1e-6) # 两个数值的差小于一个很小的值
3)逻辑运算符:
逻辑运算符分别为and、or和not:
运算符 |
and |
or |
not |
描述 |
逻辑与,当x为True时才计算y |
逻辑或,当x为False时才计算y |
逻辑非 |
4)位运算符:
位运算就是直接对整数按二进制操作,主要运算符有:
运算符 |
& |
| |
^ |
~ |
<< |
>> |
描述 |
按位与 |
按位或 |
按位异或 |
按位取反 |
左移 |
右移 |
5)运算符的优先级:
运算符从高到低顺序为:
运算符 |
描述 |
expression,... |
字符串转换 |
{key:datum,...} |
字典显示 |
[expression,...] |
列表显示 |
(expression,...) |
绑定或元组显示 |
f(arguments...) |
函数调用 |
x[index:index] |
寻址段 |
x[index] |
下标 |
x.attribute |
属性 |
** |
指数 |
-x |
按位反 |
+x, -x |
正负号 |
*, /, % |
乘、除、求余 |
+, - |
加、减 |
<<, >> |
移位 |
& |
按位与 |
^ |
按位异或 |
| |
按位或 |
<, <=, >, >=, !=, == |
比较运算符 |
is, is not |
相同测试 |
in, not in |
成员测试 |
not x |
逻辑非 |
and |
逻辑与 |
or |
逻辑或 |
lambda |
Lambda表达式 |