pytthon3
2018-09-11 09:31:10 8 举报
AI智能生成
python3
作者其他创作
大纲/内容
python3
运行python
1.交互式解释器:通过命令行窗口进入python并开在交互式解释器中开始编写Python代码。
2.在Cloud Studio,中运行python3程序
基础语法
默认情况下,Python 3 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串。 当然你也可以为源码文件
第一个字母必须是字母或者下划线
保留字即关键字,我们不能把它们用作任何标识符名称
keyword.kwlist 查看所有关键字
单行注释用#
多行注释可以用多个 # 号,还有 ''' 和 """:
行与缩进
缩进来表示代码块,不需要使用大括号 {}
缩进的空格数是可变的,但是同一个代码块的语句必须包含相同的缩进空格数
if True:
print ("Answer")
print ("True")
else:
print ("Answer")
print ("False") # 缩进不一致,会导致运行错误
print ("Answer")
print ("True")
else:
print ("Answer")
print ("False") # 缩进不一致,会导致运行错误
Python 通常是一行写完一条语句,但如果语句很长,我们可以使用反斜杠(\)来实现多行语句
total = item_one + \
item_two + \
item_three
item_two + \
item_three
在 [], {}, 或 () 中的多行语句,不需要使用反斜杠(\)
total = ['item_one', 'item_two', 'item_three',
'item_four', 'item_five']
'item_four', 'item_five']
数字类型
int (整数), 如 1, 只有一种整数类型 int,表示为长整型,没有 python2 中的 Long。
bool (布尔), 如 True
float (浮点数), 如 1.23、3E-2
complex (复数), 如 1 + 2j、 1.1 + 2.2j
字符串
python中单引号和双引号使用完全相同。
使用三引号('''或""")可以指定一个多行字符串
转义符 '\'
反斜杠可以用来转义,使用r可以让反斜杠不发生转义。。 如 r"this is a line with \n" 则\n会显示,并不是换行。
按字面意义级联字符串,如"this " "is " "string"会被自动转换为this is string。
字符串可以用 + 运算符连接在一起,用 * 运算符重复。
Python 中的字符串有两种索引方式,从左往右以 0 开始,从右往左以 -1 开始。
Python中的字符串不能改变。
Python 没有单独的字符类型,一个字符就是长度为 1 的字符串。
字符串的截取的语法格式如下:变量[头下标:尾下标]
Python可以在同一行中使用多条语句,语句之间使用分号(;)分割
print 默认输出是换行的,如果要实现不换行需要在变量末尾加上 end=""
模块导入
import
导入整个模块
from...import
导入模块的指定成员
基本数据类型
变量不需要声明,使用前必须赋值,赋值后才会创建
变量无类型
多个变量赋值
a=b=c=1
a, b, c = 1, 2, "runoob"
标准数据类型
Dictionary(字典)
Dictionary(字典)
字典(dictionary)是Python中另一个非常有用的内置数据类型
列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
字典是一种映射类型,字典用"{ }"标识,它是一个无序的键(key) : 值(value)对集合
键(key)必须使用不可变类型
在同一个字典中,键(key)必须是唯一的
注意 1、字典是一种映射类型,它的元素是键值对。
2、字典的关键字必须为不可变类型,且不能重复。
3、创建空字典使用 { }
2、字典的关键字必须为不可变类型,且不能重复。
3、创建空字典使用 { }
Number(数字)
支持int,float,bool,complex(复数)
String(字符串)
Python中的字符串用单引号 ' 或双引号 " 括起来,同时使用反斜杠 \ 转义特殊字符。
加号 + 是字符串的连接符, 星号 * 表示复制当前字符串,紧跟的数字为复制的次数
str = 'Runoob'
print (str) # 输出字符串
print (str[0:-1]) # 输出第一个到倒数第二个的所有字符
print (str[0]) # 输出字符串第一个字符
print (str[2:5]) # 输出从第三个开始到第五个的字符
print (str[2:]) # 输出从第三个开始的后的所有字符
print (str * 2) # 输出字符串两次
print (str + "TEST") # 连接字符串
print (str) # 输出字符串
print (str[0:-1]) # 输出第一个到倒数第二个的所有字符
print (str[0]) # 输出字符串第一个字符
print (str[2:5]) # 输出从第三个开始到第五个的字符
print (str[2:]) # 输出从第三个开始的后的所有字符
print (str * 2) # 输出字符串两次
print (str + "TEST") # 连接字符串
Python 使用反斜杠(\)转义特殊字符,如果你不想让反斜杠发生转义,可以在字符串前面添加一个 r
另外,反斜杠(\)可以作为续行符,表示下一行是上一行的延续
与 C 字符串不同的是,Python 字符串不能被改变。向一个索引位置赋值,比如word[0] = 'm'会导致错误。
注意:
1、反斜杠可以用来转义,使用r可以让反斜杠不发生转义。
2、字符串可以用+运算符连接在一起,用*运算符重复。
3、Python中的字符串有两种索引方式,从左往右以0开始,从右往左以-1开始。
4、Python中的字符串不能改变。
1、反斜杠可以用来转义,使用r可以让反斜杠不发生转义。
2、字符串可以用+运算符连接在一起,用*运算符重复。
3、Python中的字符串有两种索引方式,从左往右以0开始,从右往左以-1开始。
4、Python中的字符串不能改变。
List(列表)
列表是写在方括号 [] 之间、用逗号分隔开的元素列表
和字符串一样,列表同样可以被索引和截取,列表被截取后返回一个包含所需元素的新列表。
变量[头下标:尾下标]
加号 + 是列表连接运算符,星号 * 是重复操作
与Python字符串不一样的是,列表中的元素是可以改变的:
注意:
1、List写在方括号之间,元素用逗号隔开。
2、和字符串一样,list可以被索引和切片。
3、List可以使用+操作符进行拼接。
4、List中的元素是可以改变的。
1、List写在方括号之间,元素用逗号隔开。
2、和字符串一样,list可以被索引和切片。
3、List可以使用+操作符进行拼接。
4、List中的元素是可以改变的。
Tuple(元组)
元组(tuple)与列表类似,不同之处在于元组的元素不能修改。元组写在小括号 () 里,元素之间用逗号隔开。
1、与字符串一样,元组的元素不能修改。
2、元组也可以被索引和切片,方法一样。
3、注意构造包含0或1个元素的元组的特殊语法规则。
4、元组也可以使用+操作符进行拼接
2、元组也可以被索引和切片,方法一样。
3、注意构造包含0或1个元素的元组的特殊语法规则。
4、元组也可以使用+操作符进行拼接
Set集合
集合(set)是一个无序不重复元素的序列
基本功能是进行成员关系测试和删除重复元素。
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
parame = {value01,value02,...}
或者
set(value)
或者
set(value)
不可变数据
Number(数字)、String(字符串)、Tuple(元组);
可变数据
List(列表)、Dictionary(字典)、Set(集合)
其他
type()不会认为子类是一种父类类型
isinstance()会认为子类是一种父类类型
使用del语句删除一些对象引用
1、Python可以同时为多个变量赋值,如a, b = 1, 2。
2、一个变量可以通过赋值指向不同类型的对象。
3、数值的除法包含两个运算符:/ 返回一个浮点数,// 返回一个整数。
4、在混合计算时,Python会把整型转换成为浮点数。
2、一个变量可以通过赋值指向不同类型的对象。
3、数值的除法包含两个运算符:/ 返回一个浮点数,// 返回一个整数。
4、在混合计算时,Python会把整型转换成为浮点数。
Python数据类型转换
int(x [,base])
将x转换为一个整数
将x转换为一个整数
float(x) 将x转换到一个浮点数
complex(real [,imag])创建一个复数
str(x)
将对象 x 转换为字符串
将对象 x 转换为字符串
repr(x)
将对象 x 转换为表达式字符串
将对象 x 转换为表达式字符串
eval(str)
用来计算在字符串中的有效Python表达式,并返回一个对象
用来计算在字符串中的有效Python表达式,并返回一个对象
tuple(s)
将序列 s 转换为一个元组
将序列 s 转换为一个元组
list(s)
将序列 s 转换为一个列表
将序列 s 转换为一个列表
set(s)
转换为可变集合
转换为可变集合
dict(d)
创建一个字典。d 必须是一个序列 (key,value)元组。
创建一个字典。d 必须是一个序列 (key,value)元组。
frozenset(s)
转换为不可变集合
转换为不可变集合
chr(x)
将一个整数转换为一个字符
将一个整数转换为一个字符
ord(x)
将一个字符转换为它的整数值
将一个字符转换为它的整数值
hex(x)
将一个整数转换为一个十六进制字符串
将一个整数转换为一个十六进制字符串
oct(x)
将一个整数转换为一个八进制字符串
将一个整数转换为一个八进制字符串
注释
Python中单行注释以 # 开头
多行注释用三个单引号 ''' 或者三个双引号 """ 将注释括起来
#!/usr/bin/python3
'''
这是多行注释,用三个单引号
这是多行注释,用三个单引号
这是多行注释,用三个单引号
'''
print("Hello, World!")
'''
这是多行注释,用三个单引号
这是多行注释,用三个单引号
这是多行注释,用三个单引号
'''
print("Hello, World!")
#!/usr/bin/python3
"""
这是多行注释,用三个双引号
这是多行注释,用三个双引号
这是多行注释,用三个双引号
"""
print("Hello, World!")
"""
这是多行注释,用三个双引号
这是多行注释,用三个双引号
这是多行注释,用三个双引号
"""
print("Hello, World!")
算术运算
+
加 - 两个对象相加
a + b 输出结果 31
-
减 - 得到负数或是一个数减去另一个数
a - b 输出结果 -11
*
乘 - 两个数相乘或是返回一个被重复若干次的字符串
a * b 输出结果 210
/
除 - x 除以 y
b / a 输出结果 2.1
%
取模 - 返回除法的余数
b % a 输出结果 1
**
幂 - 返回x的y次幂
a**b 为10的21次方
//
取整除 - 返回商的整数部分
9//2 输出结果 4 , 9.0//2.0 输出结果 4.0
以上例子a为10,b为21
位运算
参考http://www.runoob.com/python3/python3-basic-operators.html
赋值运输
参考http://www.runoob.com/python3/python3-basic-operators.html
逻辑运算
成员运算
in
如果在指定的序列中找到值返回 True,否则返回 False。
not in
如果在指定的序列中没有找到值返回 True,否则返回 False。
身份运算
is
is 是判断两个标识符是不是引用自一个对象
x is y, 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 False
is not
is not 是判断两个标识符是不是引用自不同对象
x is not y , 类似 id(a) != id(b)。如果引用的不是同一个对象则返回结果 True,否则返回 False。
is 与 == 区别
用于判断两个变量引用对象是否为同一个, == 用于判断引用变量的值是否相等
字符串格式化
print ("我叫 %s 今年 %d 岁!" % ('小明', 10))
三引号
python三引号允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符
三引号让程序员从引号和特殊字符串的泥潭里面解脱出来,自始至终保持一小块字符串的格式是所谓的WYSIWYG(所见即所得)格式的。
条件控制
if语句
每个条件后面要使用冒号 :,表示接下来是满足条件后要执行的语句块
使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块
在Python中没有switch – case语句
if condition_1:
statement_block_1
elif condition_2:
statement_block_2
else:
statement_block_3
statement_block_1
elif condition_2:
statement_block_2
else:
statement_block_3
while循环
while 判断条件:
语句
语句
同样需要注意冒号和缩进。另外,在Python中没有do..while循环。
while 循环使用 else 语句
在 while … else 在条件语句为 false 时执行 else 的语句块
for循环
Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串。
for <variable> in <sequence>:
<statements>
else:
<statements>
<statements>
else:
<statements>
break和continue语句及循环中的else子句
break 语句可以跳出 for 和 while 的循环体。如果你从 for 或 while 循环中终止,任何对应的循环 else 块将不执行
continue语句被用来告诉Python跳过当前循环块中的剩余语句,然后继续进行下一轮循环
循环语句可以有 else 子句,它在穷尽列表(以for循环)或条件变为 false (以while循环)导致循环终止时被执行,但循环被break终止时不执行。
pass 语句
Python pass是空语句,是为了保持程序结构的完整性
迭代器与生成器
迭代是Python最强大的功能之一,是访问集合元素的一种方式
迭代器是一个可以记住遍历的位置的对象
迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退
迭代器有两个基本的方法:iter() 和 next()。
字符串,列表或元组对象都可用于创建迭代器
生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。
在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行。
调用一个生成器函数,返回的是一个迭代器对象。
函数
定义函数使用 def 关键字
def 函数名(参数列表):
函数体
函数体
Anaconda
Python中默认安装的版本:
Python 2.7.9及后续版本:默认安装,命令为pip
Python 3.4及后续版本:默认安装,命令为pip3
Python 2.7.9及后续版本:默认安装,命令为pip
Python 3.4及后续版本:默认安装,命令为pip3
pip 与 conda 比较
依赖项检查
pip:
不一定会展示所需其他依赖包。
安装包时或许会直接忽略依赖项而安装,仅在结果中提示错误。
conda:
列出所需其他依赖包。
安装包时自动安装其依赖项。
可以便捷地在包的不同版本中自由切换。
环境管理
pip:维护多个环境难度较大。
conda:比较方便地在不同环境之间进行切换,环境管理较为简单。
conda:比较方便地在不同环境之间进行切换,环境管理较为简单。
对系统自带Python的影响
pip:在系统自带Python中包的**更新/回退版本/卸载将影响其他程序。
conda:不会影响系统自带Python。
conda:不会影响系统自带Python。
适用语言
pip:仅适用于Python。
conda:适用于Python, R, Ruby, Lua, Scala, Java, JavaScript, C/C++, FORTRAN。
conda:适用于Python, R, Ruby, Lua, Scala, Java, JavaScript, C/C++, FORTRAN。
conda与pip、virtualenv的关系
conda结合了pip和virtualenv的功能。
常用命令
condal list,如果Anaconda被成功安装,则会显示已经安装的包名和版本号。
在终端中输入python。这条命令将会启动Python交互界面,如果Anaconda被成功安装并且可以运行,则将会在Python版本号的右边显示“Anaconda custom (64-bit)”。退出Python交互界面则输入exit()或quit()即可
conda update conda 升级
conda create --name <env_name> <package_names>
如果要安装指定的版本号,则只需要在包名后面以=和版本号的形式执行。如:conda create --name python2 python=2.7,即创建一个名为“python2”的环境,环境中安装版本为2.7的python。
如果要在新创建的环境中创建多个包,则直接在<package_names>后以空格隔开,添加多个包名即可。如:conda create -n python3 python=3.5 numpy pandas,即创建一个名为“python3”的环境,环境中安装版本为3.5的python,同时也安装了numpy和pandas。
如果要在新创建的环境中创建多个包,则直接在<package_names>后以空格隔开,添加多个包名即可。如:conda create -n python3 python=3.5 numpy pandas,即创建一个名为“python3”的环境,环境中安装版本为3.5的python,同时也安装了numpy和pandas。
提示:默认情况下,新创建的环境将会被保存在/Users/<user_name>/anaconda3/env目录下,其中,<user_name>为当前用户的用户名。
切换环境
Linux 或 macOS
source activate <env_name>
windows
activate <env_name>
提示
如果创建环境后安装Python时没有指定Python的版本,那么将会安装与Anaconda版本相同的Python版本,即如果安装Anaconda第2版,则会自动安装Python 2.x;如果安装Anaconda第3版,则会自动安装Python 3.x。
当成功切换环境之后,在该行行首将以“(env_name)”或“[env_name]”开头。其中,“env_name”为切换到的环境名。如:在macOS系统中执行source active python2,即切换至名为“python2”的环境,则行首将会以(python2)开头
当成功切换环境之后,在该行行首将以“(env_name)”或“[env_name]”开头。其中,“env_name”为切换到的环境名。如:在macOS系统中执行source active python2,即切换至名为“python2”的环境,则行首将会以(python2)开头
退出到root环境
Linux 或 macOS
source deactivate
windows
deactivate
显示已创建环境
conda info --envs
conda info -e
conda env list
复制环境
conda create --name <new_env_name> --clone <copied_env_name>
注意
<copied_env_name>即为被复制/克隆环境名。环境名两边不加尖括号“<>”。
<new_env_name>即为复制之后新环境的名称。环境名两边不加尖括号“<>”。
如:conda create --name py2 --clone python2,即为克隆名为“python2”的环境,克隆后的新环境名为“py2”。此时,环境中将同时存在“python2”和“py2”环境,且两个环境的配置相同
<new_env_name>即为复制之后新环境的名称。环境名两边不加尖括号“<>”。
如:conda create --name py2 --clone python2,即为克隆名为“python2”的环境,克隆后的新环境名为“py2”。此时,环境中将同时存在“python2”和“py2”环境,且两个环境的配置相同
删除环境
conda remove --name <env_name> --all
管理包
精确查找
conda search --full-name <package_full_name>
--full-name为精确查找的参数。
<package_full_name>是被查找包的全名。包名两边不加尖括号“<>”。
例如:conda search --full-name python即查找全名为“python”的包有哪些版本可供安装。
<package_full_name>是被查找包的全名。包名两边不加尖括号“<>”。
例如:conda search --full-name python即查找全名为“python”的包有哪些版本可供安装。
模糊查找
conda search <text>
注意:<text>是查找含有此字段的包名。此字段两边不加尖括号“<>”。
例如:conda search py即查找含有“py”字段的包,有哪些版本可供安装。
例如:conda search py即查找含有“py”字段的包,有哪些版本可供安装。
获取当前环境中已安装的包信息
conda list
安装包
在指定环境中安装包
conda install --name <env_name> <package_name>
注意:
<env_name>即将包安装的指定环境名。环境名两边不加尖括号“<>”。
<package_name>即要安装的包名。包名两边不加尖括号“<>”。
例如:conda install --name python2 pandas即在名为“python2”的环境中安装pandas包
<env_name>即将包安装的指定环境名。环境名两边不加尖括号“<>”。
<package_name>即要安装的包名。包名两边不加尖括号“<>”。
例如:conda install --name python2 pandas即在名为“python2”的环境中安装pandas包
在当前环境中安装包
conda install <package_name>
<package_name>即要安装的包名。包名两边不加尖括号“<>”。
执行命令后在当前环境中安装包。
例如:conda install pandas即在当前环境中安装pandas包。
执行命令后在当前环境中安装包。
例如:conda install pandas即在当前环境中安装pandas包。
使用pip安装包
当使用conda install无法进行安装时,可以使用pip进行安装。例如:see包。
pip install <package_name>
pip只是包管理器,无法对环境进行管理。因此如果想在指定环境中使用pip进行安装包,则需要先切换到指定环境中,再使用pip命令安装包。
pip无法更新python,因为pip并不将python视为包。
pip可以安装一些conda无法安装的包;conda也可以安装一些pip无法安装的包。因此当使用一种命令无法安装包时,可以尝试用另一种命令。。
pip无法更新python,因为pip并不将python视为包。
pip可以安装一些conda无法安装的包;conda也可以安装一些pip无法安装的包。因此当使用一种命令无法安装包时,可以尝试用另一种命令。。
从Anaconda.org安装包
当使用conda install无法进行安装时,可以考虑从Anaconda.org中获取安装包的命令,并进行安装
从Anaconda.org安装包时,无需注册。
在当前环境中安装来自于Anaconda.org的包时,需要通过输入要安装的包在Anaconda.org中的路径作为获取途径(channel)。查询路径的方式如下:
在浏览器中输入:http://anaconda.org,或直接点击Anaconda.org
在新页面“Anaconda Cloud”的上方搜索框中输入要安装的包名,然后点击右边“放大镜”标志。
搜索结果中有数以千计的包可供选择,此时点击“Downloads”可根据下载量进行排序,最上面的为下载最多的包。(图中以搜索bottleneck包为例)
选择满足需求的包或下载量最多的包,点击包名。
复制“To install this package with conda run:”下方的命令,并粘贴在终端中执行。
在当前环境中安装来自于Anaconda.org的包时,需要通过输入要安装的包在Anaconda.org中的路径作为获取途径(channel)。查询路径的方式如下:
在浏览器中输入:http://anaconda.org,或直接点击Anaconda.org
在新页面“Anaconda Cloud”的上方搜索框中输入要安装的包名,然后点击右边“放大镜”标志。
搜索结果中有数以千计的包可供选择,此时点击“Downloads”可根据下载量进行排序,最上面的为下载最多的包。(图中以搜索bottleneck包为例)
选择满足需求的包或下载量最多的包,点击包名。
复制“To install this package with conda run:”下方的命令,并粘贴在终端中执行。
卸载包
卸载指定环境中的包
conda remove --name <env_name> <package_name>
注意:
<env_name>即卸载包所在指定环境的名称。环境名两边不加尖括号“<>”。
<package_name>即要卸载包的名称。包名两边不加尖括号“<>”。
例如:conda remove --name python2 pandas即卸载名为“python2”中的pandas包。
<env_name>即卸载包所在指定环境的名称。环境名两边不加尖括号“<>”。
<package_name>即要卸载包的名称。包名两边不加尖括号“<>”。
例如:conda remove --name python2 pandas即卸载名为“python2”中的pandas包。
卸载当前环境中的包
conda remove <package_name>
例如:conda remove pandas即在当前环境中卸载pandas包。
更新包
更新所有包
conda update --all
conda upgrade --all
更新指定包
conda update <package_name>
conda upgrade <package_name>
<package_name>为指定更新的包名。包名两边不加尖括号“<>”。
更新多个指定包,则包名以空格隔开,向后排列。如:conda update pandas numpy matplotlib即更新pandas、numpy、matplotlib包。
更新多个指定包,则包名以空格隔开,向后排列。如:conda update pandas numpy matplotlib即更新pandas、numpy、matplotlib包。
0 条评论
下一页