一、函数的定义和详细的使用方法
1、函数的概念:函数是将具有独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集
2、函数的作用:使用函数可以加强代码的复用性,提高程序编写的效率
3、函数的使用:函数必须先创建才可以使用,该过程称为函数定义,函数创建后可以使用,使用过程称为函数调用
函数定义与调用:
1)单个函数定义
def 函数名(形参1,形参2): # 定义
... #函数体
函数名(实参1,实参2) #调用
2)函数内部嵌套函数
def 函数名1(形参1,形参2): # 定义
... #函数体
def 函数名2(形参1,形参2)
... #函数体
函数名2(实参1,实参2) #内部调用嵌套函数名2
函数名1(形参1,形参2) #函数外部调用函数名1
4、函数的形参实参
定义函数的时候的变量 叫形参(名字任意)
真实的数据信息,调用函数的时候 传递 叫实参
5、 函数参数的作用域:函数内部定义的叫做局部变量,函数外部的变量叫做全局变量,局部变量的作用域只限于函数内部使用
6、函数外部的变量在函数内部可以直接调用但是无法修改全局变量的内容,可以在函数内部使用global 变量名重新定义后修改
函数内部直接调用全局变量:
函数内部无法修改全局变量:
global全局变量的声明:
7、 函数的返回值:python中函数的关键字return, 生成迭代器 yield 返回
- 定义格式:
def 函数名():
... 函数体
return 返回值
- 调用格式:
变量名 = 函数名() #return返回的值直接赋给变量使用
- return 语句执行后面的内容将不再执行
- return用来返回函数执行的结果,如果函数没有返回值,默认返回None
实例:单个变量返回值
结果:
实例:多个变量返回值
二、函数中的形参实参讲解
1、形参和实参的区别
形参就是形式上的参数,可以理解为数学的X,没有实际的值,通过别人赋值后才有意义。相当于变量。
实参就是实际意义上的参数,是一个实际存在的参数,可以是字符串或是数字等。
2、参数类型
位置参数、默认参数、可变参数、关键字参数
【1】位置参数
调用函数时,必须将函数调用中的每个实参都关联到函数定义中的一个形参。关联方式是基于实参的顺序,这被称作位置实参
def getinfo(name,age):
print('姓名:',name,'年龄:',age)
getinfo('westos',11) #实参传输顺序与形参顺序对应
getinfo(11,'westos') #实参传输顺序与形参接收顺序不对应,形参对应值错误
getinfo(age=11,name='westos') #实参传递时,加上形参对应项名称,可正确传输
实例:
实参传输顺序与形参顺序对应
实例:
实参传输顺序与形参接收顺序不对应,形参对应值错误
实例:
实参传递时,加上形参对应项名称,可正确传输
【2】默认参数
在编写函数时,可以给每个形参设定一个固定值,即为默认值。
在调用函数给形参提供实参时,就使用实参值,否则,使用实参的默认值,因此,给形参指定默认值后,在函数调用中省略相应的实参。
def mypow(x,y=2): #形参x接收传递过来的实参值,形参y设默认值为2,如果有传送过来的实参值则赋给形参y,如果没实参传给y则形参y取其默认值
print(x ** y) #打印x的y次方
mypow(2,3) #调用函数,传递实参2,3
mypow(2) #调用函数,只传递一个实参值给x
实例:
【3】可变参数
单个 *
(1)如:*parameter是用来接受任意多个参数并将其放在一个元组中。
实例:
(2)函数在调用多个参数时,在列表、元组、集合、字典及其他可迭代对象作为实参,并在前面加 *
如 :* (1,2,3)解释器将自动进行解包然后传递给多个单变量形参(参数个数要对应相等),也可用中*parameter是用来做形参,接受解包后的任意多个参数并将其放在一个元组中。
实例:
【4】关键字参数
两个 **
如: **parameter用于接收类似于关键参数一样赋值的形式的多个实参放入字典中(即把该函数的参数转换为字典)。
实例:
三、函数相关例题
1、编写一个函数cacluate, 可以接收任意多个数,返回的是一个元组.
元组的第一个值为所有参数的平均值, 第二个值是大于平均值的所有数.
2、编写一个函数, 接收字符串参数, 返回一个元组,‘ehllo WROLD’
元组的第一个值为大写字母的个数, 第二个值为小写字母个数。
3、编写函数, 随机生成一个列表(包含30个整形数),用户输入一个整形数k, 返回生成的随机列表去重后的结果和列表下标k之前对应(不包含k)的元素逆序,下标k及之后的元素逆序的新列表
函数需求:
-先对列表去重
-将列表下标k之前对应(不包含k)的元素逆序;
-将下标k及之后的元素逆序;
用户输入:
2
系统输出:
[1,2,3,4,5]
[2,1,5,4,3]
4、给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。
给出数字到字母的映射如下:
(与电话按键相同)。
注意: 1 不对应任何字母
输入:”23”
输出:[“ad”, “ae”, “af”, “bd”,“be”, “bf”, “cd”, “ce”, “cf”].
说明:尽管上面的答案是按字典序排列的,
但是你可以任意选择答案输出的顺序
5、随机生成0~1之间概率值,作为中奖概率,判断每个奖中奖次数。
方法一:使用变量统计
方法二:使用字典统计