1.首先先讲一下被辅导同学不会的几个问题
当从右往左截取时,那么就返回空串
展开说一下切片
切取单个字符
Python 允许从字符串的两端使用索引:
- 当以字符串的左端(字符串的开头)为起点时,索引是从 0 开始计数的;字符串的第一个字符的索引为 0,第二个字符的索引为 1,第三个字符串的索引为 2 ……
- 当以字符串的右端(字符串的末尾)为起点时,索引是从 -1 开始计数的;字符串的倒数第一个字符的索引为 -1,倒数第二个字符的索引为 -2,倒数第三个字符的索引为 -3 ……
切取多个字符
使用[ ]
除了可以获取单个字符外,还可以指定一个范围来获取多个字符,也就是一个子串或者片段,具体格式为:
strname[start : end : step]
对各个部分的说明:
- strname:要截取的字符串;
- start:表示要截取的第一个字符所在的索引(截取时包含该字符)。如果不指定,默认为 0,也就是从字符串的开头截取;
- end:表示要截取的最后一个字符所在的索引(截取时不包含该字符)。如果不指定,默认为字符串的长度;
- step:指的是从 start 索引处的字符开始,每 step 个距离获取一个字符,直至 end 索引出的字符。step 默认值为 1,当省略该值时,最后一个冒号也可以省略。
map() 会根据提供的函数对指定序列做映射。
第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。
简单说就是把你的列表中的每一项转换成为int类型
看两个例子
运行结果
再看个例子
现在应该不难理解map函数的作用
下一个问题
进制转换问题
好了,接下来进入我们今天的正题,函数与代码复用
$1.1函数的概念
函数是具有特定书写格式、包含若干条可被作为一个 整体执行的语句、可以实现特定功能的语句组
例如
1.2函数的类别
第一类之前已经举过例子了,这里不再赘述,下面三个每个举一个例子
1.3使用函数的步骤
1.4调用函数的目的
$4.2用户自定义函数
1.Python定义函数的语法:
def <函数名>([参数列表]):
return [返回值列表]
举个小例子
不使用函数来实现时我们怎么办呢?只能用四个print语句,如下
可以看出,要写三遍一模一样的代码,很麻烦,你或许说,我可以复制粘贴,但即使是复制粘贴我也觉得很麻烦
那要怎么办呢?函数定义是一种好的解决方法
是不是简单了不少呢?
可能你觉得并没有
但是想象一下,如果项目很大的话,函数定义无疑会带来简洁和方便的效果
能不能更简单呢?
可以
看一下代码
2.利用lambda来定义函数
{来个小练习
1.已知 f = lambda x: x+5,那么表达式 f(3) 的 值为________
2.已知函数定义
def demo(x, y, op):
return eval(str(x)+op+str(y)
那么表达式demo(3, 5, '+')的值为_______
3.已知 f = lambda x: 5,那么表达式 f(3)的值为_________
}
3.调用函数的步骤
函数调用的过程分5步:
(1)调用函数在调用处暂停执行;
(2)将实参赋值给形参;如:name= “Mike”
(3)执行被调用函数的函数体语句组;
(4)被调用函数如果有返回值,则将返回值赋值给调用 函数中的相应变量
(5)返回调用函数中,执行调用语句的下一条语句
图解
4.参数设置与参数传递
第一个multy
x=1,y=2
第二个multy
x = '3',y=3
第三个multy
x='3',y = '3',都是字符串,所以报错。
(2)看一下lambda函数的传参
可选参数
可变数量参数
注意:3类参数的定义顺序为:必选参数-->可选参数-->可变数量参数
看一个可变数量参数的实例
除了按顺序传参之外,我们还可以按名称传参
5.return语句
返回值为多个时
也可没有返回值
函数的返回值可以是一个变量,也可以是一个表达式
比如
6.变量的作用域
一个程序中的变量包括两类:全局变量和局部变量
•全局变量指在函数之外定义的变量,没有缩 进,在程序执行全过程有效。比如说下图
example就是一个全局 变量
•局部变量指在函数内部使用的变量,仅在函 数内部有效,当函数退出时变量将不存在。
a就是局部变量
看看当执行完成函数之后a还存在吗
很显然,不存在了