1.函数
函数就是实现某一特定功能的代码的封装 - 不同的函数有不一样的功能
2.函数的分类
根据函数是由谁定义的将函数分为:系统函数、自定义函数
1)系统函数 - 系统自带的函数
2)自定义函数 - 由程序员自己创建的函数
3.定义函数
语法:
def 函数名(形参列表)
函数说明文档
函数体
说明:
形参列表: 以‘变量名1,变量名2,变量名3,…’的形式存在,这里的一个变量代表一个形参(也可以一个形参都没有)
形参可以将函数外边的数据传输到函数里面
函数体:和def保持一个缩进的一条或者都条语句;
# 练习1: 定义一个函数统计字符串中中文的个数
def chinese_count(str1):
count=0
for x in str1:
if '\u4e00'<=x<='\u9fa5':
count+=1
print(count)
chinese_count('我爱你,我的家!我的家,我的天堂!55555')
chinese_count('有多少爱可以重来,wdisd 11113')
# 练习2:写一个函数,提取列表中所有的数字元素
def extract_nums(list2):
list1=[]
for x in list2:
if type(x)==int or type(x)==float:
list1.append(x)
print(list1)
extract_nums([2,3,4,5,6,'a','b','c','我'])
extract_nums(['我','爱',5,2,0])
# 练习3:写一个函数,获取指定字典中所有的值
def get_nums(dict1):
result=[dict1[key] for key in dict1]
print(result)
get_nums({'name':'Leslie','age':18,'gender':'男'})
get_nums({'name':'Leon','age':15,'gender':'男'})
# 练习5:写一个函数将两个列表合并成一个字典(第一个列表的元素是键,第二个列表的元素是值)
def create_dict(list_key,list_value):
lenght=len(list_key)
result={list_key[index]:list_value[index] for index in range(lenght)}
print(result)
create_dict(['a','b','c','d'],[1,2,3,4])
4.函数的调用
语法:
函数名(实参列表)
说明:
实参列表由调用的函数的形参列表决定,实参是给形参赋值,是真正传输到函数中的数据;
同意个函数可以在需要它功能的时候反复调用
结论:
1)定义函数不会执行函数体,调用的时候才会执行;
2)执行过程:第一步回到函数定义的位置
第二步:传参(用实参给形参赋值)
第三步:执行函数体
第四部:确定函数返回值
第五步:回到函数调用的位置接着往下执行
5.函数的参数
1)位置参数和关键字参数
def func1(x,y,z):
print(f'x:{x},y:{y},z:{z}')
func1(10,20,30) # 位置参数
func1(x=10,y=30,z=20) # 关键字参数
2)参数默认值
定义函数的时候,可以用‘形参=值’来作为形参,在不传参时这个值就是实参数的默认值;
如果定义函数的时候有的参数有默认值,有的参数没有,要求没有默认值的参数必须在有默认值参数的前面;
def func2(x,y=20,z=30):
print(f'x:{x},y:{y},z:{z}')
func2(10)
func2(10,200,300)
func2(10,200)
3)参数类型说明
情况1:没有默认值的参数,在参数后加‘:类型名’
情况2:有默认值的参数,值的类型就是参数的说明类型
4)不定长参数
1)定义函数的时候可以在某个参数前加*,那么这个参数就是不定长参数,可以同时接受多个实参
2)加了两个星号 ** 的参数会以字典的形式导入
3)如果单独出现星号 * 后的参数必须用关键字传入
6.函数的返回值(return)
1)返回值的意义:返回值就是从函数内部传递到函数外部的数据
2)返回值就是return关键字后面的表达式值;如果没有遇到return,返回值None;
3)怎么在外部使用函数返回值
函数调用表达式的值就是函数的返回值