python基本语法(一)
Python 官网:https://www.python.org/
Python文档下载地址:https://www.python.org/doc/
Python 是一种解释型语言: 这意味着开发过程中没有了编译这个环节。类似于PHP和Perl语言
Python 是交互式语言: 这意味着,您可以在一个 Python 提示符 >>> 后直接执行代码
Python 是面向对象语言: 这意味着Python支持面向对象的风格或代码封装在对象的编程技术
cmd命令:
查看python版本:python -v
执行python脚本:python python.py
环境变量中添加Python目录:path=%path%;C:\Python 注意: C:\Python 是Python的安装目录
查看python安装路径:where python
查看帮助: python -h
退出python命令行:exit(), quit(), ctrl+z enter
基本语法:
单行注释:#
多行注释:'''多行注释''', """多行注释"""
变量命名规则:大小写字母、数字、下划线和中文等字符及组合;大小写敏感、首字符不能是数字、不与保留字相同
保留字:python语音有35个保留字(关键字),in:判断一个元素是否在列表中
['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']
行与缩进: 使用缩进来表示代码块,不需要使用大括号 {},一个代码块的语句必须包含相同的缩进空格数
多行语句: 使用反斜杠(\)来实现多行语句,在 [], {}, 或 () 中的多行语句,不需要使用反斜杠(\)
反斜杠:可以用来转义,使用r可以让反斜杠不发生转义; 如 r"this is a line with \n" 则\n会显示,并不是换行
\(在行尾时) 续行符
\\ 反斜杠符号
\' 单引号
\" 双引号
\a 响铃
\b 退格(Backspace)
\000 空
\n 换行
\v 纵向制表符
\t 横向制表符
\r 回车
\f 换页
基本数据类型:
变量:
Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建
在 python 中,类型属于对象,变量是没有类型的, 我们所说的"类型"是变量所指的内存中对象的类型, a=[1,2,3]、a="Runoob"
[1,2,3] 是 List 类型,"Runoob" 是 String 类型,而变量 a 是没有类型
它是一个对象的引用(一个指针),可以是指向 List 类型对象,也可以是指向 String 类型对象
多个变量赋值: a = b = c = 1; a, b, c = 1, 2, "var"
标准数据类型: Number(数字)、String(字符串)、List(列表)、Tuple(元组)、Set(集合)、Dictionary(字典)
不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组)
不可变类型:变量赋值 a=5 后再赋值 a=10,这里实际是新生成一个 int 值对象 10,再让 a 指向它,而 5 被丢弃,不是改变a的值,相当于新生成了a
python 函数的参数传递: 不可变类型:类似 c++ 的值传递,如 整数、字符串、元组。如fun(a),传递的只是a的值,没有影响a对象本身。比如在 fun(a)内部修改 a 的值,只是修改另一个复制的对象,不会影响 a 本身
可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)
可变类型:变量赋值 la=[1,2,3,4] 后再赋值 la[2]=5 则是将 list la 的第三个元素值更改,本身la没有动,只是其内部的一部分值被修改了
python 函数的参数传递: 可变类型:类似 c++ 的引用传递,如 列表,字典。如 fun(la),则是将 la 真正的传过去,修改后fun外部的la也会受影响
Number 数字: int、float、bool、complex(复数), 在Python 3里,只有一种整数类型 int,表示为长整型,没有 python2 中的 Long
注意:在 Python2 中是没有布尔型的,它用数字0表示False,用1表示True。到Python3中,把True和 False定义成关键字了,但它们的值还是1和0,它们可以和数字相加
复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型
内置的 type() 函数可以用来查询变量所指的对象类型,如:print(type(var)==str)
运算符:除法:/; 取整://; 取余:%; 乘方:**; 加法赋值运算符:+=
在混合计算时,Python会把整型转换成为浮点数
Pyhton3 已不支持 < > 运算符,可以使用 != 代替
在整数除法中,除法 / 总是返回一个浮点数, 如:15/3=5.0
String "字符串": 用单引号、双引号、三引号表示,使用[]获取字符串中一个或多个字符, 使用反斜杠 \ 转义特殊字符
从左边第1个字符正向递增,下标从0开始
从右边第1个字符反向递减,下标从-1开始
索引Str[N]:Str[-1]
切片Str[N:M]:Str[1:3]、Str[0:-2],获取的字符不包含第M个字符
切片步长Str[N:M:X]:X截取的步长,
Str[1:5:2]: 表示在索引1到索引5的位置并设置为步长为 2(间隔一个位置)来截取字符串, str="abcdefg",截取:bd
Str[1:5:-1]: -1 表示逆向,翻转字符串, str="abcdefg",逆向截取:edcb
print(str * 2): 输出字符串两次,星号 * 表示复制当前字符串
print (str + "TEST") : 连接字符串
Python 字符串不能被改变,向一个索引位置赋值,如word[0] = 'm'会导致错误
格式字符串: %, %s: 格式化字符串 ; %d : 格式化整数
Unicode 字符串: 在Python2中,普通字符串是以8位ASCII码进行存储的,而Unicode字符串则存储为16位unicode字符串,在Python3中,所有的字符串都是Unicode字符串
Python 的字符串内建函数: ...
Tuple(元组):元组写在小括号 () 里,元素之间用逗号隔开,用法同字符串,字符串可以看作一种特殊的元组
tuple的元素不可改变,但它可以包含可变的对象,比如list列表
特殊元组:
tup1 = () # 空元组
tup2 = (20,) # 一个元素,需要在元素后添加逗号,不加逗号,类型为整型
元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组:del tup
在输入时可能有或没有括号: t = 12345, 54321, 'hello!'
元组内置函数:
len(tuple) 计算元组元素个数
max(tuple) 返回元组中元素最大值。
min(tuple) 返回元组中元素最小值
tuple(iterable) 将可迭代系列转换为元组
List [列表]: 列表是有序的对象集合,列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套);列表是写在方括号 [] 之间、用逗号分隔开的元素列表
列表同样可以被索引和截取: 变量[头下标:尾下标], 用法同字符串
序列都可以进行的操作包括索引,切片,加,乘,检查成员
print (list * 2): 输出两次列表
print (list_a + list_b): 连接列表, 重新组合新列表
列表中的元素是可以改变的:如:给第一个元素重新赋值:a[0] = 9, 将对应的元素值设置为空[]:a[2:5] = [], 给对应的切片元素重新赋值:a[2:5] = [13, 14, 15]
del list[N]: 删除列表中下标为N的元素
嵌套列表: x=[['a', 'b', 'c'], [1, 2, 3]], x[0]=['a', 'b', 'c'], x[0][1]='b'
列表函数:
1 len(list) 列表元素个数
2 max(list) 返回列表元素最大值
3 min(list) 返回列表元素最小值
4 list(seq) 将元组转换为列表
列表方法:
1 list.append(obj): 在列表末尾添加新的对象,相当于 a[len(a):] = [x]
2 list.count(obj) 统计某个元素在列表中出现的次数,相当于 a[len(a):] = L
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() 清空列表, 等于del a[:]
11 list.copy() 复制列表,等于a[:]
12 list.popleft() 移除列表最左边的元素
Set {集合}: 集合(set)是由一个或数个形态各异的大小整体组成的,构成集合的事物或对象称作元素或是成员, 是一个无序的不重复元素序列
使用大括号 { } 或者 set() 函数创建集合
注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典,parame = {value01,value02,...}或parame = set(value)
集合中重复元素,输出集合时,前面重复的元素被自动去掉
print(a - b) # a 和 b 的差集, 集合a中包含而集合b中不包含的元素
print(a | b) # a 和 b 的并集, 集合a或b中包含的所有元素
print(a & b) # a 和 b 的交集, 集合a和b中都包含了的元素
print(a ^ b) # a 和 b 中不同时存在的元素
集合函数:
s.add( x ) 将元素 x 添加到集合 s 中,如果元素已存在,则不进行任何操作, x 可以有多个,用逗号分开
s.update( x ) 也可以添加元素,且参数可以是列表,元组,字典等, x 可以有多个,用逗号分开
s.remove( x ) 将元素 x 从集合 s 中移除,如果元素不存在,则会发生错误
s.discard( x ) 方法也是移除集合中的元素,且如果元素不存在,不会发生错误
s.pop() 随机删除集合中的一个元素, pop方法会对集合进行无序的排列,然后将这个无序排列集合的左面第一个元素进行删除
len(s) 计算集合 s 元素个数
s.clear() 清空集合 s
x in s 判断元素 x 是否在集合 s 中,存在返回 True,不存在返回 False
isdisjoint() 判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False
copy() 拷贝一个集合
Dictionary {字典}: 字典是一种映射类型,字典用 { } 标识,它是一个无序的 键(key) : 值(value) 的集合
字典当中的元素是通过键来存取的,键(key)必须是唯一的,可以是字符串,数字或元组, 不能是列表
字典取值: dict{'key':'value'},dict['key']=value
创建空字典: dict = {}
print (tinydict.keys()) # 输出所有键
print (tinydict.values()) # 输出所有值
构造函数 dict() 可以直接从键值对序列中构建字典
dict([('Runoob', 1), ('Google', 2), ('Taobao', 3)])=>{'Runoob': 1, 'Google': 2, 'Taobao': 3}
{x: x**2 for x in (2, 4, 6)}=>{2: 4, 4: 16, 6: 36}
dict(Runoob=1, Google=2, Taobao=3)=>{'Runoob': 1, 'Google': 2, 'Taobao': 3}
能删单一的元素也能清空字典:
del dict['Name'] # 删除键 'Name'
dict.clear() # 清空字典
del dict # 删除字典
如果用字典里没有的键访问数据,会输出错误
创建时如果同一个键被赋值两次,则输出后一个值
字典内置函数:
len(dict) 计算字典元素个数,即键的总数
str(dict) 输出字典,以可打印的字符串表示
type(variable) 返回输入的变量类型,如果变量是字典就返回字典类型
字典内置函数:
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() 随机返回并删除字典中的最后一对键和值。
数据类型转换函数:
int(x [,base]): 将x转换为一个整数
float(x): 将x转换到一个浮点数
complex(real [,imag]): 创建一个复数
str(x): 将对象 x 转换为字符串
repr(x): 将对象 x 转换为表达式字符串
eval(str): 用来计算在字符串中的有效Python表达式,并返回一个对象
tuple(s): 将序列 s 转换为一个元组
list(s): 将序列 s 转换为一个列表
set(s): 转换为可变集合
dict(d): 创建一个字典。d 必须是一个 (key, value)元组序列。
frozenset(s): 转换为不可变集合
chr(x): 将一个整数转换为一个字符
ord(x): 将一个字符转换为它的整数值
hex(x): 将一个整数转换为一个十六进制字符串
oct(x): 将一个整数转换为一个八进制字符串
数学函数:
abs(x) 返回数字的绝对值,如abs(-10) 返回 10
ceil(x) 返回数字的上入整数,如math.ceil(4.1) 返回 5
floor(x) 返回数字的下舍整数,如math.floor(4.9)返回 4
cmp(x, y)如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1。 Python 3 已废弃,使用 (x>y)-(x< y) 替换
exp(x) 返回e的x次幂(ex),如math.exp(1) 返回2.718281828459045
fabs(x) 返回数字的绝对值,如math.fabs(-10) 返回10.0
max(x1, x2,...) 返回给定参数的最大值,参数可以为序列
min(x1, x2,...) 返回给定参数的最小值,参数可以为序列
modf(x) 返回x的整数部分与小数部分,两部分的数值符号与x相同,整数部分以浮点型表示
pow(x, y) x**y 运算后的值
round(x [,n]) 返回浮点数 x 的四舍五入值,如给出 n 值,则代表舍入到小数点后的位数
随机数函数:
choice(seq) 从序列的元素中随机挑选一个元素,比如random.choice(range(10)),从0到9中随机挑选一个整数。
randrange ([start,] stop [,step]) 从指定范围内,按指定基数递增的集合中获取一个随机数,基数默认值为 1
random() 随机生成下一个实数,它在[0,1)范围内。
seed([x]) 改变随机数生成器的种子seed。如果你不了解其原理,你不必特别去设定seed,Python会帮你选择seed。
shuffle(lst) 将序列的所有元素随机排序
uniform(x, y) 随机生成下一个实数,它在[x,y]范围内
位运算符:
& 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0; (a & b) 输出结果 12 ,二进制解释: 0000 1100
| 按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1; (a | b) 输出结果 61 ,二进制解释: 0011 1101
^ 按位异或运算符:当两对应的二进位相异时,结果为1; (a ^ b) 输出结果 49 ,二进制解释: 0011 0001
~ 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1,~x 类似于 -x-1; (~a ) 输出结果 -61 ,二进制解释: 1100 0011, 在一个有符号二进制数的补码形式。
<< 左移动运算符:运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0; a << 2 输出结果 240 ,二进制解释: 1111 0000
>> 右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数; a >> 2 输出结果 15 ,二进制解释: 0000 1111
身份运算符:
is 是判断两个标识符是不是引用自一个对象 x is y, 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 False
is not 是判断两个标识符是不是引用自不同对象 x is not y , 类似 id(a) != id(b)。如果引用的不是同一个对象则返回结果 True,否则返回 False
is 与 == 区别:is 用于判断两个变量引用对象是否为同一个, == 用于判断引用变量的值是否相等。