Python的几个重要的特点:
Python开发工具PyCharm的功能:调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制…
注意:python 在print("hello,world")的时候可以正确运行,但是在运行print("你好,世界")的时候会出错。
SyntaxError: Non-ASCII character '\xe4' in file test.py on line 2, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
原因:python的默认编码格式是ASCII格式,在没有修改编码格式时是无法正确打印汉字的,所以在读取中文时会报错。
解决办法就是在文件开头加入 #-*- coding:utf-8 -*- 或者 # coding=utf-8就行了 '='两边不要有空格
如果你使用的是Pycharm等集成开发环境,可以在Setting->Editor->File encodings中将IDE/Project Encoding设置为utf-8
如果你使用的是编译器,例如notepad++,存储.py文件的时候,需要同时设置.py文件存储的格式为UTF-8。
否则会出现如下错误:
SyntaxError: (unicode error) ‘utf-8’ codec can’t decode byte 0xc4 in position 0: invalid continuation byte
python 为什么要配置环境变量?配置了之后能做什么?
python 配置环境变量就是让电脑具有了Python解释器的路径,在执行python脚本文件的时候,就可以通过该路径找到python解释器,通过解释器执行脚本。
比如我们可以在交互式命令行中执行 $ python test.py ,计算机可以识别Python这个指令,就是因为有环境变量。
另一种执行python脚本的方式:
假定您的Python解释器在/usr/bin目录中,也就是python.exe 安装在/usr/bin目录下,使用以下命令执行脚本:$ chmod +x test.py # 脚本文件添加可执行权限 $ ./test.py
执行python脚本的时候,必须进入到此python脚本所在的文件目录下才能执行,否则会因为找不到文件而报错。
python基础知识:
Python 可以使用引号( ' )、双引号( " )、三引号( ''' 或 """ ) 来表示字符串,引号的开始与结束必须是相同类型的。其中三号可以由多行组成,编写多行文本的快捷语法,常用于文档字符串,在文件的特定地点,被当做注释。
Python可以在同一行中使用多条语句,语句之间使用分号(;)分割,以下是一个简单的实例:import sys; x = 'runoob'; sys.stdout.write(x + '\n')
缩进相同的一组语句构成一个代码块,我们称之代码组。像if、while、def和class这样的复合语句,首行以关键字开始,以冒号( : )结束,该行之后的一行或多行代码构成代码组。
很多程序可以执行一些操作来查看一些基本信息,Python 可以使用 -h 参数查看各参数帮助信息
Python3 支持 int、float、bool、complex(复数)。
在Python 3里,只有一种整数类型 int,表示为长整型,没有 python2 中的 Long。像大多数语言一样,数值类型的赋值和计算都是很直观的。
内置的 type() 函数可以用来查询变量所指的对象类型。这个函数以后会常用到。
此外还可以用 isinstance 来判断:
>>> isinstance(a, int)
True
isinstance 和 type 的区别在于:
注意:在 Python2 中是没有布尔型的,它用数字 0 表示 False,用 1 表示 True。到 Python3 中,把 True 和 False 定义成关键字了,但它们的值还是 1 和 0,它们可以和数字相加。
4、在混合计算时,Python会把整型转换成为浮点数。
Python中的字符串用单引号 ' 或双引号 " 括起来,同时使用反斜杠 \ 转义特殊字符。
常用的转义字符有:\(续行符),\\(反斜杠符号),\',\''(单双引号),\a(响铃),\b退格,\n换行。其他横纵向制表可查。
字符串的截取的语法格式如下:StringName[起点:终点] 注意字符串是从0开始计数,切片含头不含尾。
python支持格式化字符串的输出,尽管这样可能会用到非常复杂的表达式。但最基本的用法是将一个值插入到一个有字符串格式符%s的字符串中。在Python中,字符串格式化使用与C 中sprintf函数一样的语法。
常用的字符串格式化符号:%c 格式化字符及其ASCII码。%s格式化字符串。%d格式化正数,%f浮点数。%e科学计数法格式化浮点数。
格式化操作符辅助指令:
符号 | 功能 |
---|---|
* | 定义宽度或者小数点精度 |
- | 用做左对齐 |
+ | 在正数前面显示加号( + ) |
在正数前面显示空格 | |
# | 在八进制数前面显示零('0'),在十六进制前面显示'0x'或者'0X'(取决于用的是'x'还是'X') |
0 | 显示的数字前面填充'0'而不是默认的空格 |
% | '%%'输出一个单一的'%' |
(var) | 映射变量(字典参数) |
m.n. | m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话) |
f-string格式化字符串以f开头,后面跟着字符串,字符串中的表达式会用大括号{}包起来,它会将变量或者表达式计算后的值替换进去。
>>> name = 'Runoob'
>>> f'Hello {name}' # 替换变量
使用这种方式明显简单了,因为它不用再自己去判断到底是%s还是%d.
其次字符串还有很多常用的内建函数,也就是字符串类的成员函数。比如captalize()将第一个字符串的第一个字符转换为大写。
1. 加号 + 是字符串的连接符, 星号 * 表示复制当前字符串,与之结合的数字为复制的次数.
2. Python 使用反斜杠 \ 转义特殊字符,如果你不想让反斜杠发生转义,可以在字符串前面添加一个 r,表示原始字符串:
>>> print('Ru\noob')
Ru
oob
>>> print(r'Ru\noob')
Ru\noob
3. Python 没有单独的字符类型,一个字符就是长度为1的字符串。
4. 与 C 字符串不同的是,Python 字符串不能被改变。向一个索引位置赋值,比如word[0] = 'm'会导致错误。
5. Python中的字符串有两种索引方式,从左往右以0开始,从右往左以-1开始。
List(列表) 是 Python 中使用最频繁的数据类型。
列表可以完成大多数集合类的数据结构实现。列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套)。
列表是写在方括号 [] 之间、用逗号分隔开的元素列表。
和字符串一样,列表同样可以被索引和截取,列表被截取后返回一个包含所需元素的新列表。
列表截取的语法格式如下:变量[头下标:尾下标]
加号 + 是列表连接运算符,星号 * 是重复操作.这里是对列表里的元素进行重复。
与Python字符串不一样的是,列表中的元素是可以改变的。
Python列表有很多函数len(list)列表元素个数,max(list),min(list),list(seq)将元组转换为列表。
序号 | 方法 |
---|---|
1 | list.append(obj) 在列表末尾添加新的对象 |
2 | list.count(obj) 统计某个元素在列表中出现的次数 |
3 | list.extend(seq) 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表) |
4 | list.index(obj) 从列表中找出某个值第一个匹配项的索引位置 |
5 | list.insert(index, obj) 将对象插入列表 |
6 | list.pop([index=-1]) 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值 |
7 | list.remove(obj) 移除列表中某个值的第一个匹配项 |
8 | list.reverse() 反向列表中元素 |
9 | list.sort( key=None, reverse=False) 对原列表进行排序 |
10 | list.clear() 清空列表 |
11 | list.copy() 复制列表 |
元组(tuple)与列表类似,不同之处在于元组的元素不能修改。元组写在小括号 () 里,元素之间用逗号隔开。
元组中的元素类型也可以不相同。
元组与字符串类似,可以被索引且下标索引从0开始,-1 为从末尾开始的位置。也可以进行截取(看上面,这里不再赘述)。
其实,可以把字符串看作一种特殊的元组。
虽然tuple的元素不可改变,但它可以包含可变的对象,比如list列表。List列表中也可以包含元组对象。这样的数据可以转换为字典。
比如:>>> dict([('Runoob', 1), ('Google', 2), ('Taobao', 3)]) 得到 {'Runoob': 1, 'Google': 2, 'Taobao': 3}
构造包含 0 个或 1 个元素的元组比较特殊,所以有一些额外的语法规则:
tup1 = () # 空元组
tup2 = (20,) # 一个元素,需要在元素后添加逗号
string、list 和 tuple 都属于 sequence(序列)。元组也可以使用+操作符进行拼接。
元组中的元素值是不允许修改的,但我们可以对元组进行连接组合。
元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组
元组中也包含了很多内置函数,比如len(),max(),min(),tuple().其中tuple()可以将可迭代的系列转换为元组。
关于元组是不可变的理解:
所谓元组的不可变指的是元组所指向的内存中的内容不可变。
>>> tup = ('r', 'u', 'n', 'o', 'o', 'b')
>>> tup[0] = 'g' # 不支持修改元素
Traceback (most recent call last):
File "
TypeError: 'tuple' object does not support item assignment
>>> id(tup) # 查看内存地址
4440687904
>>> tup = (1,2,3)
>>> id(tup)
4441088800 # 内存地址不一样了
也就是说tup这个元组,它可以修改指向,但是它指向一个内存后,这个内存中的数据就不可更改。
从以上实例可以看出,重新赋值的元组 tup,绑定到新的对象了,不是修改了原来的对象。
集合(set)是由一个或数个形态各异的大小整体组成的,构成集合的事物或对象称作元素或是成员。
基本功能是进行成员关系测试和删除重复元素。
集合(set)是一个无序的不重复元素序列。可以使用大括号 { } 或者 set() 函数创建集合。
set(seq),这个函数就像list(seq),tuple(seq),其中seq可以是任何序列。元组或者列表都可以。
注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
集合添加元素用add().还有一个办法,也可以添加元素,且参数可以是列表,元组,字典等。s.update(x)
删除元素可以用remove(),pop(),discard()等等。
方法 | 描述 |
---|---|
add() | 为集合添加元素 |
clear() | 移除集合中的所有元素 |
copy() | 拷贝一个集合 |
difference() | 返回多个集合的差集 |
difference_update() | 移除集合中的元素,该元素在指定的集合也存在。 |
discard() | 删除集合中指定的元素 |
intersection() | 返回集合的交集 |
intersection_update() | 返回集合的交集。 |
isdisjoint() | 判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。 |
issubset() | 判断指定集合是否为该方法参数集合的子集。 |
issuperset() | 判断该方法的参数集合是否为指定集合的子集 |
pop() | 随机移除元素 |
remove() | 移除指定元素 |
symmetric_difference() | 返回两个集合中不重复的元素集合。 |
symmetric_difference_update() | 移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。 |
union() | 返回两个集合的并集 |
update() | 给集合添加元素 |
字典(dictionary)是Python中另一个非常有用的内置数据类型。
列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
字典是一种映射类型,字典用 { } 标识,它是一个无序的 键(key) : 值(value) 的集合。
键(key)必须使用不可变类型。值可以取任何数据类型,但键必须是不可变的,如字符串,数字。
在同一个字典中,键(key)必须是唯一的。创建空字典使用 { }。
删除字典元素:del dict['Name'] 清空字典:dict.clear()
字典的特性:
字典值可以是任何的python对象,既可以是标准的对象,也可以是用户定义的。但键不行。
两个重要的点需要记住 1. 不允许同一个键出现两次,创建时如果同一个键被赋值两次,后一个值会被记住。
2.键必须不可变,所以可以用数字,字符串,或者元组充当,但是用列表就不行。
字典的内置函数len(dict),str(dict)打印字典用字符串表示。
Python字典包含了以下内置方法:
序号 | 函数及描述 |
---|---|
1 | radiansdict.clear() 删除字典内所有元素 |
2 | radiansdict.copy() 返回一个字典的浅复制 |
3 | radiansdict.fromkeys() 创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值 |
4 | radiansdict.get(key, default=None) 返回指定键的值,如果键不在字典中返回 default 设置的默认值 |
5 | key in dict 如果键在字典dict里返回true,否则返回false |
6 | radiansdict.items() 以列表返回可遍历的(键, 值) 元组数组 |
7 | radiansdict.keys() 返回一个迭代器,可以使用 list() 来转换为列表 |
8 | radiansdict.setdefault(key, default=None) 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default |
9 | radiansdict.update(dict2) 把字典dict2的键/值对更新到dict里 |
10 | radiansdict.values() 返回一个迭代器,可以使用 list() 来转换为列表 |
11 | pop(key[,default]) 删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。 |
12 | popitem() 随机返回并删除字典中的最后一对键和值。 |