切片
切片是python提供给开发者用来分割、切割字符串或者其他有序可迭代对象的一种手段
字符串[index] # 访问字符串的某个字符
字符串[start:] # 从start小标位置开始切割字符串,到末尾
字符串[start: end] # 从start小标位置开始切割字符串,切去end位置,不包含end 前闭后开区间[)
字符串[start: end: step] # step表示步长,默认是1,注意:如果step为负数,表示从右向左切取
函数
什么是函数
函数是具有特殊功能的一段代码的封装
函数是具有名称的一段具体功能代码的统称
为什么学习函数
提高代码封装、提高代码的复用性、解耦合的作用
python中如何定义函数
使用关键字 def # define function
def 函数名称([参数列表]):
# 函数体
# [return 返回值]
# 调用函数的帮助文档
# print(print_msg.__doc__)
# print(help(print_msg))
函数分类
|-- 定义有没有参数
|-- 无参函数
|-- 有参函数
函数的参数,要根据实际来决定,是否需要参数
|-- 是否有返回值
|-- 无返回值
|-- 有返回值
在函数中,当遇到return关键字的时候,函数会立刻返回
全局变量和局部变量
全局变量:定义在模块(.py)中,可以在该模块定义后任何地方都可以访问
局部变量:定义在函数内部的变量,作用域只是在当前函数内有效,出了函数,无法访问到
在函数中,能不能访问到全局变量?
当然可以,但是注意:在python中,函数内不允许修改全局变量
如果确实在函数内,需要修改全局变量,必须要提前申明
global 全局变量
函数的调用
压栈,函数调用本质就是将堆中的函数调用到栈中执行,这个过程被称为压栈,等函数执行完成,
会立刻执行出栈(弹栈)
引用传递和值传递
值传递:本质就是传递数据值的拷贝,跟原先的那个值没有关系
引用传递:本质是传递指针(地址),所以说实质操作的就是堆
函数的参数问题
默认值参数
# 默认值参数,在参数上,给定一个最常用的值,在调用的时候,
# 如果和默认的值一致,就可也不用传递这个参数
def get_cricle_area(r, pi=3.14):
pass
注意:默认值参数,必须放在普通后面!!!
可变参数
def show(name, age=16, *args):
pass
args以元组的形式保存
命名参数(关键字参数)
def show2(name, age, **kwargs):
pass
kwargs是以字典的形式保存
函数递归
函数自身调用自身
注意:必须要有终止条件,没有终止条件的递归是一个死循环
递归次数上限为1000次,可更改
StackOverflowException
#作业8:使用递归完成1~100之间的积
def digui(i=100):
if i == 1:
return 1
return i*digui(i-1)
print(digui())
其他
if __name__ == __'main'__:
pass
这段代码在不涉及多个文件调用时带不带都可以,代码依然从上至下执行,但在这段内的代码不会在被其他文件的程序调用时执行,所以里面一般放测试用函数。