公共方法
- 运算符
运算符 | Python 表达式 | 结果 | 描述 | 支持的数据类型 |
---|---|---|---|---|
+ | [1, 2] + [3, 4] | [1, 2, 3, 4] | 合并 | 字符串、列表、元组 |
* | ['Hi!'] * 4 | ['Hi!', 'Hi!', 'Hi!', 'Hi!'] | 复制 | 字符串、列表、元组 |
in | 3 in (1, 2, 3) | True | 元素是否存在 | 字符串、列表、元组、字典 |
not in | 4 not in (1, 2, 3) | True | 元素是否不存在 | 字符串、列表、元组、字典 |
- python内置函数
序号 | 方法 | 描述 |
---|---|---|
1 | cmp(item1, item2) | 比较两个值 |
2 | len(item) | 计算容器中元素个数 |
3 | max(item) | 返回容器中元素最大值 |
4 | min(item) | 返回容器中元素最小值 |
5 | del(item) | 删除变量 |
函数
定义
def 函数名():
代码
调用
# 定义完函数后,函数是不会自动执行的,需要调用它才可以
printInfo()
注释
写在函数定义的下面一行
参数
写在括号里面
返回值
用return返回函数处理的结果
备注:
Python中的函数没有重载的概念,即函数只能有一个
返回多个值:会使用元组返回
局部变量
在函数中定义的变量就是局部变量,只能在函数内部使用。
全局变量
在函数外面定义的变量
如果要在函数内部修改全局变量:
- 先声明全局变量:使用global,例如
global a
- 修改值
函数之间共享数据则必须是全局变量
默认参数
跟C++的默认参数一致
关键字参数
即不按照函数参数列表的顺序传参
def add(a, b, c):
print(a)
print(b)
print(c)
add(b=30, a=20, c=50)
关键字参数只能写在形参列表最后
add(50, a=20, c=50)
可变参数(不定长参数)
即函数的参数列表的长度不一定,在形参前面加一个*,这个参数就叫可变参数,表示0或任意个形参。
可变参数的类型是元组
def add(*args):
print(*args) # 会进行解包
print(args) # 得到传进来参数的元组
print(type(args)) # args是元组类型
关键字参数的可变参数
必须放到形参列表的最后
def add(**kwargs):
print(*kwargs) # 打印key值
print(kwargs) # 得到传进来参数的字典
print(type(kwargs)) # 是字典类型
add(m=10, n=20)
解包和组包
组包:
把多个数据放到一个容器
开发中,只能对元组进行组包,不能对字典进行组包。但解释器可以自动组包元组和字典。
tuple1=10, 20 print(tuple1)
解包:
把容器中的数据解出来,但其中对字典直接解包只能解出Key
a, b = (10, 20)
要求左边的变量数目与元组中的数据数目相同
应用:
交换两个变量的值
a, b = b, a
拓展:
打印变量地址
id(变量名)
函数传递的实质
python中只有引用传递没有值传递
匿名函数
没有函数名的函数
定义格式
变量名 = lambda [形参1], [形参2], ... : [单行表达式] 或 [函数调用]
返回值是单行表达式的结果或者调用其他函数得到的返回值
调用则通过变量名调用,格式:变量名(实参1,实参2,...)
与普通函数的区别
- 匿名函数中不能使用 if 语句、while 循环、for 循环, 只能编写单行的表达式,或函数调用, 普通函数都可以.
- 匿名函数中返回结果不需要使用 return, 表达式的运行结果就是返回结果, 普通函数返回结果必须 return.
- 匿名函数中也可以不返回结果. 例如:
lambda : print('hello world')
高阶函数
map函数
map() 会根据提供的函数对指定序列做映射.
第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表.
例如:计算每一个元素的平方值:
my_list = [1, 2, 3, 4, 5] def f(x): return x ** 2 result = map(f, my_list) print(type(result), result, list(result))
输出结果:
<class 'map'> <map object at 0x000000C9729591D0> [1, 4, 9, 16, 25]
reduce函数
reduce() 函数会对参数序列中元素进行累计.
函数将一个数据集合中的所有数据进行下列操作:
- 用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作.
- 得到的结果再与第三个数据用 function 函数运算, 最后得到一个结果.
使用时需要导入fuctools包
例如:计算列表中的累加和
import functools my_list = [1, 2, 3, 4, 5] def f(x1, x2): return x1 + x2 result = functools.reduce(f, my_list) print(result)
输出结果:
15
filter函数
filter() 函数用于过滤序列, 过滤掉不符合条件的元素, 返回一个 filter 对象, 如果要转换为列表, 可以使用 list() 来转换.
该接收两个参数, 第一个为函数, 第二个为序列, 序列的每个元素作为参数传递给函数进行判, 然后返回 True 或 False, 最后将返回 True 的元素放到新列表中.
例如:过滤列表中的偶数:
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] def f(x): return x % 2 == 0 result = filter(f, my_list) print(list(result))
输出结果:
[2, 4, 6, 8, 10]
Set集合
也是一个容器,可以存储多个数据,可以是任意类型。底层用哈希表存储
没有索引,且集合中不能存储重复元素,自动去重,重复的元素只保留一个
定义格式
set集合名={元素1,元素2,...}
文件
写数据(write)
使用write()可以完成向文件写入数据
demo: 新建一个文件 file_write_test.py
,向其中写入如下代码:
f = open('test.txt', 'w')
f.write('hello world, i am here!')
f.close()
运行之后会在file_write_test.py
文件所在的路径中创建一个文件test.txt
注意:
- 如果文件不存在那么创建,如果存在那么就先清空,然后写入数据
读数据(read)
使用read(num)可以从文件中读取数据,num表示要从文件中读取的数据的长度(单位是字节
),如果没有传入num,那么就表示读取文件中所有的数据
demo: 新建一个文件file_read_test.py
,向其中写入如下代码:
f = open('test.txt', 'r')
content = f.read(5) # 最多读取5个数据
print(content)
print("-"*30) # 分割线,用来测试
content = f.read() # 从上次读取的位置继续读取剩下的所有的数据
print(content)
f.close() # 关闭文件,这个可以是个好习惯哦
运行现象:
hello
------------------------------
world, i am here!
注意:
- 如果用open打开文件时,如果使用的"r",那么可以省略,即只写
open('test.txt')
文件正确打开了才需要close,即open执行了才close,如果open失败,则不需要
读取的方式:
- 读几个字符(read(n))
- 一次读一行(readline())
- 一次读取所有字符(read())
- 按行读取所有行(readlines()):返回的是列表
文件的访问模式
访问方式 | 说明 |
---|---|
r | 以只读方式打开文件。文件的指针将会放在文件的开头,这是默认模式。如果文件不存在,抛出异常 |
w | 以只写方式打开文件。如果文件存在会被覆盖。如果文件不存在,创建新文件 |
a | 以追加方式打开文件。如果该文件已存在,文件指针将会放在文件的结尾。如果文件不存在,创建新文件进行写入 |
r+ | 以读写方式打开文件。文件的指针将会放在文件的开头。如果文件不存在,抛出异常 |
w+ | 以读写方式打开文件。如果文件存在会被覆盖。如果文件不存在,创建新文件 |
a+ | 以读写方式打开文件。如果该文件已存在,文件指针将会放在文件的结尾。如果文件不存在,创建新文件进行写入 |
相关函数
name属性可以得到open后的文件对象的路径(绝对路径,字符串类型)
有些时候,需要对文件进行重命名、删除等一些操作,python的os模块中都有这么功能
1. 文件重命名
os模块中的rename()可以完成对文件的重命名操作
rename(需要修改的文件名, 新的文件名)
import os os.rename("毕业论文.txt", "毕业论文-最终版.txt")
2. 删除文件
os模块中的remove()可以完成对文件的删除操作
remove(待删除的文件名)
import os os.remove("毕业论文.txt")
3. 创建文件夹
import os os.mkdir("张三")
4. 获取当前目录
import os os.getcwd()
5. 改变默认目录
import os os.chdir("../")
6. 获取目录列表
import os os.listdir("./")
7. 删除文件夹
import os os.rmdir("张三")