函数的作用
- 函数是组织好的,可重复使用的,用来实现单一或相关联功能的代码段
- 函数能提高应用的模块性和代码的重复利用率
- python内置函数:(64条消息) Python所有的内置函数 , 都帮你整理好了!_Python数据之道的博客-CSDN博客
函数定义
- def:函数定义关键词
- function_name:函数名称
- ():参数列表放置的位置,可以为空
- parameter_list:可选,指向向函数中传递的参数
- comments:可选,为函数定制注释
-
def func_name([parameter_list]): ['''comments''']//函数的功能注释 ['''func_body''']//函数体 def func_demo(): '''打印一句话''' print('这是一个函数') def func_with_params(a,b,c) '''传递参数的函数''' print(f"传入的参数为:a = {a},b = {b},c = {c}") #打印函数 comments 的内容 print(func_with_params.__doc__) help(func_with_params)
tips:自动调整行缩进,使用ctrl+alt+L即可
-
print(f"")用法:主要作用就是格式化字符串,加f后可以在字符串里面使用花括号括起来的变量和表达式,使花括号里的变量和表达式也能用字符串来表示
-
以下是定义空函数:
-
#定义空函数 def filter_char(s): pass def filter_char(s): #如果没有函数体的话,会产生报错 以下是报错的内容: def filter_char(s): IndentationError: expected an indented block after function definition on line 143
函数调用
- function_name:函数名称
- parameter_value:可选,指定各个参数的值
function_name([parameter_value])
参数传递
- 形式参数:定义函数时,函数名称后面括号中的参数
-
def demo_func(a,b,c) print(a,b,c) //a,b,c为形式参数 demo_func(1,2,3)//1,2,3 为实际参数
- 实际参数:调用函数时,函数名称后面括号中的参数
- 位置参数:
- 参数的数量与定义时必须一致
- 参数的位置必须与定义时一致
def person(name,age):
if age >= 18:
print(f'{name}此人已经成年,今年已经{age}岁')
else:
print(f'{name}此人还未成年,今年已经{age}岁')
person('kiky',19)#位置传参
person(name=shaoqi,age=21)
运行结果是:kiky此人已经成年,今年已经19岁
为参数设置默认值
- 定义函数时可以指定形式参数的默认值
- 指定默认值的形式参数必须放在所有参数的最后,否则会产生语法错误
- param = default_value:可选,指定参数并且为该参数设置默认值为default_value
def person(name,age,nationality = 'china')#默认参数要放到最后面
print(f'国籍试是{nationality}')
if age >= 18:
print(f'{name}此人已经成年,今年已经{age}岁')
else:
print(f'{name}此人还未成年,今年已经{age}岁')
运行结果是:
国籍试是china
kiky此人已经成年,今年已经19岁
默认参数定义对象一定要用不可变参数(数字,字符串,元组,不可变集合),不能用可变对象(列表,字典)
#错误示范,传入一个可变对象给默认参数,默认值为空列表
def wrong_demo(a,b,c = []):
c.append(a)
c.append(b)
print(a,b,c)
wrong_demo(1,2)
运行结果是:1 2 [1, 2] 此时的默认参数已经发生变化了 代码就不可控了
函数返回值
def sum(a,b):
result = a+b
return result,a,b #返回值是一个元组
r = sum(1,2)
print(r)
返回值是一个元组:(3, 1, 2)
可变参数
- 可变参数也称为不定长参数
- 传入函数中实际参数可以是任意多个
- 常见形式
- *args//位置传参
-
#*args 接受任意多个实际参数,并将其放在一个元组中 def print_lanuage(*args): print(args) for i in args: print(i) #调用函数,将不同数量的参数传递进去,用位置参数 print_lanuage('python','java') print_lanuage('python','java','PHP','GO') lan = ['python','java','PHP'] print_lanuage(*lan) #在这加*实际意义上相当于将列表中的元素解包,使其一个一个传入进函数当中 运行结果是: ('python', 'java') python java ('python', 'java', 'PHP', 'GO') python java PHP GO ('python', 'java', 'PHP') python java PHP
- **kwargs//关键字传参
- 接受任意多个类似关键字参数一样显示赋值的实际参数,并将其放到一个字典中
- 使用已经存在字典作为函数的可变参数,可以在字典的名称前加**
def print_info(**kwargs):
print(kwargs)
print_info(Tom=18, jim=20, Lily=12)
params = {'tommy': 18, 'kiky': 14}
print_info(**params)
运行结果是:
{'Tom': 18, 'jim': 20, 'Lily': 12}
{'tommy': 18, 'kiky': 14}