Python基础
注释
单行注释以“#”开头,用于说明当前行或之后代码的功能,而多行注释是由三对双引号或单引号包裹的语句。
# 单行注释
'''
多行注释
'''
"""
多行注释
"""
缩进
在代码的缩减中既可以用Tab控制,又可以用空格控制。
if True:
print ("True")
else:
print ("False”)
print ("False”)
控制语句
if #当条件成立时运行语块。经常与else, elif配合使用。
for #遍历列表、字符串、字典、集合等,依次处理其中的每个元素。
while #当条件为真时,循环运行语句块。
标识符
标示符由字母、下划线和数字组成,且数字不能开头。
Python中的标识符是区分大小写的。例如,andy和Andy是不同的标识符。
Python中的标识符不能使用关键字 。
关键字
关键字是已使用的,不允许开发人员重复的标识符,而关键字共有35个。在jupyter单元格总执行“help(“关键字”)”就可以查看。
输出输入
输出:print()
输入:input()
name=input(“请输入您的姓名”)
print(name)
王*瑄
print(*objects, sep=' ', end='\n', file=sys.stdout)
pobjects:表示输出的对象。输出多个对象时,对象之间需要用分隔符分隔。
psep:用于设定分隔符,默认使用空格作为分隔。
pend:用于设定输出以什么结尾,默认值为换行符\n。
pfile:表示数据输出的文件对象。
数据类型
整数:大小随意包含复数
浮点数:指一个数的小数点的位置不是固定的,而可以浮动
字符串:一个由单引号、双引号或者三引号包裹的、有序的字符集合
列表:多个元素的集合,它可以保存任意数量、任意类型的元素,可以被修改
元组:与列表相似,不可修改
集合:与列表相同,不同的是集合使用“{}”创建,集合中的元素无序且唯一
布尔类型:布尔类型只有两个值,false和true。通常垍頭筿用来判断条件是否成立。如果变量值为0就是false,否则为true,布尔变量只有这两个值
复数类型:由实部和虚部构成
算数运算
运算符 功能说明 示例
+ 加:使两个操作数相加,获取操作数的和 a+b,结果为10
- 减:使两个操作数相减,获取操作数的差 a -b,结果为-6
* 乘:使两个操作数相乘,获取操作数的积 a*b,结果为16
/ 除:使两个操作数相除,获取操作数的商 a / b,结果为0.25
// 整除:使两个操作数相除,获取商的整数部分 a ll b,结果为О
% 取余:使两个操作数相除,获取余数 a %b,结果为2
** 幂:使两个操作数进行幂运算,获取a的b次幂 a**b,结果为256
赋值运算
运算符 功能说明 示例
+= 变量增加指定数值,结果赋值原变量 num+=2等价于num = num+2
-= 变量减去指定数值,结果赋值原变量 num-=2等价于num = num-2
*= 变量减去指定数值,结果赋值原变量 num*=2等价于num = num*2
/= 变量除以指定数值,结果赋值原变量 num/=2等价于num = num/2
//= 变量整除指定数值,结果赋值原变量 num//=2等价于num = num//2
%= 变量进行取余,结果赋值给原变量 num%=2等价于num = num%2
**= 变量执行乘方运算,结果赋值原变量 num**=2等价于num = num**2
比较运算
逻辑运算符
位运算符
优先级
流程的控制
if语句
if语句和从属于该语句的代码段可组成选择结构
if 判断条件1:
代码段1
elif 判断条件2:
代码段2
elif 判断条件3:
代码段3
...
else:
代码段n
嵌套
Python中通过if嵌套可以实现程序中条件语句的嵌套逻辑
if 判断条件1: # 外层条件
代码段1
if 判断条件2: # 内层条件
代码段2
while语句
while的表达形式为代码块。
while 循环条件1: # 外层循环
代码段1
while 循环条件2: # 内层循环
代码段2
等
for语句
for 临时变量 in 目标对象为代码块。
for 临时变量 in 目标对象: # 外层循环
代码段1
for 临时变量 in 目标对象: # 内层循环
代码段2
等
例子:
打印1-100之间的数字
for i in range (1,101): # for 循环
print(i)
break语句
break语句用于结束循环。
例子:
for word in "Python":
if (word == 'o'):
break
print(word, end=" ")
P y t h
continue语句
此语句用于满足条件的情况下跳出本次循环。
例子:
for word in "Python":
if (word == 'o'):
continue
print(word, end=" ")
P y t h n
字符串
\的用法
\b #退格
\n #换行
\v #纵向制表符
\t #横向制表符
\r #回车
使用%
Python字符串可通过%格式符格式化输出
%c #将对应的数据格式化为字符
%s #将对应的数据化格式化为字符串
%d #将对应的数据格式化为整数
%u #将对应的数据格式化为无符号整型
%o #将对应的数据格式化为无符号八进制数
%x #将对应的数据格式化为无符号十六进制数
%f #将对应的数据格式化为浮点数,可指定小数点后的精度。
f-string
f('{变量名}') 或F('{变量名}')
查找与替换
可查找字符串中是否包含子串,若包含则返回子串首次出现的位置,否则返回-1。
str.find(sub[, start[, end]])
sub:指定要查找的子串。
start:开始索引,默认为0。
end:结束索引,默认为字符串的长度。
可将当前字符串中的指定子串替换成新的子串,并返回替换后的新字符串
str.replace(old, new[, count])
old:被替换的旧子串。
new:替换旧子串的新子串。
count:表示替换旧字符串的次数,默认全部替换。
分割与拼接
可以按照指定分隔符对字符串进行分割
str.split(sep=None, maxsplit=-1)
sep:分隔符,默认为空字符。
maxsplit:分割次数,默认值为-1, 表示不限制分割次数。
使用指定的字符连接字符串并生成一个新的字符串
str.join(iterable)
iterable:表示连接字符串的字符
删除字符串的指定字符
strip() #移除字符串头尾指定的字符
lstrip() #移除字符串头部指定的字符
rstrip() #移除字符串尾部指定的字符
upper() #将字符串中的小写字母全部转换为大写
lower() #将字符串中的大写字母全部转换为小写
capitalize() #将字符串中的第一个字母转换为大写
title() #将字符串中的每个单词的首字母转换为大写
字符串对齐
center() #返回长度为width的字符串,原字符串居中显示
ljust() #返回长度为width的字符串,原字符串左对齐显示
rjust() #返回长度为width的字符串,原字符串右对齐显示
组合数据类型
列表
列表可以成为我们随时更改查阅以及调用的数据组合。
list = [] #声明一个空列表
list.append() #在末尾增加一个数据
list.insert() #在任意位置插入一个数据,其后数据向后移一位
list.extend() #添加一组数据,例如添加一个列表到另外一个列表
#删除操作
list.pop(0) #弹出某一位置一个数据
list.remove() #删除列表内的一个数据,需要知道数据名称
list.sort() #可以对列表中数据进行排序,前提是数据类型必须相同,数字数据默认为自然 数顺序排序
list.reverse() #可以使列表中的数据翻转
#其它操作,外部函数
len(list) #返回列表数据个数
max(list) #求列表最大值
min(list) #最小值
元组
t1 = () # 使用()构建元组
t2 = tuple() # 使用tuple构建元组
集合
集合本身就是可变类型,集合中的元素可以动态增加或删除
set.add() #集合中添加数据
set.pop() #随机删除集合中的一个数据
set.remove() #删除集合中一个具体的数据
set.discard() #删除集合中的一个具体的数据
set.clear() #清空集合
set.copy #拷贝集合,返回值为集合
字典
d1 = {'A': 123, 12: 'python'} # 使用{}构建集合
d2 = dict({'A': '123', 'B': '135'}) # 使用dict构建元组
字典
d1 = {'A': 123, 12: 'python'} # 使用{}构建集合
d2 = dict({'A': '123', 'B': '135'}) # 使用dict构建元组
pop():根据指定键值删除字典中的指定元素
popitem():随机删除字典中的元素
clear():清空字典中的元素
函数
函数的调用
函数在定义完成后不会立刻执行,直到被程序调用时才会执行。
函数内部也可以调用其他的函数,这叫做嵌套调用。
函数参数的传递
函数参数的传递可以分为位置参数传递、关键字参数传递、默认参数传递、参数的打包与解包以及混合传递。
参数的打包和解包
打包
“*”接受以一个元组形式打包的多个值,
“**”接受以字典形式打包的多个值。
解包
混合传递
def test(a, b, c=33, *args, **kwargs):
print(a, b, c, args, kwargs) 定义
test(1, 2)
test(1, 2, 3)
test(1, 2, 3, 4)
test(1, 2, 3, 4, e=5) 调用
1 2 33 () {}
1 2 3 () {}
1 2 3 (4,) {}
1 2 3 (4,) {'e': 5} 解果
函数的返回值
函数中的return语句会在函数结束时将数据返回给程序,同时让程序回到函数被调用的位置继续执行。
如果函数使用return语句返回了多个值,那么这些值将被保存到元组中。
局部变量和全局变量
变量并非在程序的任意位置都可以被访问,其访问权限取决于变量定义的位置,其所处的有效范围称为变量的作用域。
局部变量
不同函数内部可以包含同名的局部变量
def test_one():
number = 10
print(number) # 访问test_one()函数的局部变量number
def test_two():
number = 20
print(number) # 访问test_two()函数的局部变量number
test_one()
test_two()
10
20
全局变量
全局变量可以在整个程序的范围内起作用,它不会受到函数范围的影响。
number = 10 # 全局变量
def test_one():
print(number) # 函数内部访问全局变量
test_one()
print(number) # 函数外部访问全局变量
10
10
global
使用global关键字可以将局部变量声明为全局变量,其使用方法如下:
number = 10 # 定义全局变量
def test_one():
global number # 使用global声明变量number为全局变量
number += 1
print(number)
test_one()
print(number)
nonlocal
使用nonlocal关键字可以在局部作用域中修改嵌套作用域中定义的变量。
LEGB原则
LEGB是程序中搜索变量时所遵循的原则,该原则中的每个字母指代一种作用域
L-local #局部作用域 例如,局部变量和形参生效的区域
E-enclosing #嵌套作用域 例如,嵌套定义的函数中外层函数声明的变量生效的区域
G-global #全局作用域 例如,全局变量生效的区域
B-built-in #内置作用域 例如,内置模块声明的变量生效的区域
逆推函数
递推:递归本次的执行都基于上一次的运算结果。
回溯:遇到终止条件时,则沿着递推往回一级一级地把值返回来。
匿名函数
定义好的匿名函数不能直接使用,最好使用一个变量保存它,以便后期可以随时使用这个函数。
# 定义匿名函数,并将它返回的函数对象赋值给变量temp
temp = lambda x : pow(x, 2)
temp(10)
文件与数据格式化
文件的概述
文件标识的意义:找到计算机中惟一确定的文件。
文件标识的组成:文件路径,文件名主干,文件扩展名。
计算机的文件一般被分为文本文件和二进制文件,文本文件是专门储存文本字符数据的,而二进制文件是不能直接使用文字处理程序正常读写的,必须先了解其结构和序列化规则的,在设计正确的反序列规则,才能正确的获取文件信息。(注:这两种类型的划分基于数据逻辑储存结构而非物理储存结构。)
标准文件
Stdin(标准输入文件) stdout(标准输出文件)
Stderr(标准错误文件)
文件的基本操作
文件的打开
1.内置函数open()用于打开文件:
Open(file,mode=‘r’,buffering=-1)
2.返回值:若open()函数调用成功,返回一个文件对象。
若待打开的文件不存在,文件打不开并且程序会异常,并打印错误信息。
文件的关闭
1.close(),这是对文件对象的内置方法。
2.with语句,可以预定清理操作,以实现文件的自动关闭。
文件的读写
1.读取文件——read()方法
read(n=-1)
with open('file.txt', mode='r') as f:
print(f.read(2)) # 读取两个字节的数据
print(f.read()) # 读取剩余的全部数
2.读取文件——readline()方法
readline()
with open('file.txt', mode='r', encoding='utf-8') as f:
print(f.readline())
print(f.readline())
3.读取文件——readline()方法
readlines(hint=-1)
with open('file.txt', mode='r', encoding='utf-8') as f:
print(f.readlines()) # 使用readlines()方法读取数据
4.写文件——write()方法
write(data)
string = "Here we are all, by day; by night." | # 字符串 |
with open('write_file.txt', mode='w', encoding='utf-8') as f: size = f.write(string) | # 写入字符串 |
print(size) | # 打印字节数 |
5.写文件——writelines()方法
writelines(lines)
string = "Here we are all, by day;\nby night we're hurl'd By dreams,
each one into a several world."
with open('write_file.txt', mode='w', encoding='utf-8') as f:
f.writelines(string)
文件的定位读写
tell()获取文件当前的读写位置
with open('file.txt') as f:
print(f.tell()) # 获取文件读写位置
print(f.read(5)) # 利用read()方法移动文件读写位置
print(f.tell()) # 再次获取文件读写位置
seek()控制文件的读写位置
with open('file.txt') as f:
print(f.tell()) # 获取文件读写位置
print(f.read(5)) # 利用read()方法移动文件读写位置
print(f.tell()) # 再次获取文件读写位置
with open('file.txt','rb') as f:
f.seek(5,0)
f.seek(3,1)
文件与目录
删除文件——os.remove(文件名)
文件重命名——os.rename(原文件名,新文件名)
创建/删除目录——os.mkdir(目录名)/os.rmdir(目录名)
获取当前目录——os.getcwd()
更改默认目录——os.chdir(路径名)
获取目录列表——os.listdir(目录/路径)