一、字符串的切片操作
-字符串是不可变类型
-不具备增、删、改等操作
-切片操作将产生新的对象
-格式化字符串
-%作占位符
-%s 字符串
-%i或%d 整数
-%f 浮点数
-{}作占位符
-字符串的编码转换
-编码与解码的方式
-编码:将字符串转换为二进制数据
-解码:将二进制数据转换为字符串类型
二、函数的创建和调用
-什么是函数
-函数就是执行特定任务和以完成特定功能的一段代码
-为什么需要函数
-复用代码
-隐藏实现细节
-提高可维护性
-提高可读性便于调试
-函数的创建
-def 函数名([输入参数]):
函数体
[return xxx]
-函数的参数传递
-位置实参
-根据形参对应的位置进行实参传递
-关键字传递
-根据形参名进行实参传递
-在函数调用过程中,进行参数的传递,如果是不可变对象,在函数体的修改不会影响实参的值
-如果是可变对象,在函数体的修改会影响实参的值
-函数的返回值
-函数的返回值,如果是多个,返回结果为元组
-如果函数没有返回值(函数执行之后,不需要给调用处提供数据)return可以省略不写
-函数返回值,如果是1个,直接返回原类型
-函数定义默认值参数
-函数定义时,给形参设置默认值,只有与默认值不符的时候才需要传递实参
def fun(a,b=10):
print(a,b)
fun(100) 只传一个参数,b采用默认值
fun(20,30)30将默认值10替换
-函数的参数定义 只可有一个 def(*arg1,*arg2) 错
-个数可变的位置参数
-定义函数时,可能无法事先确定传递的位置实参的个数时,使用可变的位置参数
-使用*定义个数可变的位置参数
-结果为一个元组
-个数可变的关键字参数 只可有一个
-定义函数时,可能无法事先确定传递的关键字实参的个数时,使用可变的关键字形参
-使用**定义个数可变的关键字形参
-结果为一个字典
-变量作用域
-程序代码能访问该变量的区域
-根据变量的有效范围可分为
-局部变量
-在函数内定义并使用的变量,只在函数内部有效,局部变量使用global声明,这个就会变成全局变量
-全局变量
-函数体外定义的变量,可作用于函数内外
三、递归函数
-什么是递归函数
-如果一个函数的函数体内调用了该函数本身,这个函数就称为递归函数
-递归的组成部分
-递归调用与递归终止条件
-递归的调用过程
-每递归调用一次函数,都会在栈内存分配一个栈帧
-每执行完一次函数,都会释放相应的空间
-递归函数的优缺点
-缺点:占用内存多,效率低下
-优点:思路和代码简单