函数的使用
提示:python学习过程中对函数的笔记复习和记录
文章目录
前言
一、函数是什么?
函数,就是带名字的代码块。形象点的理解就是,一个工位,一个流水线上的工作,它只负责它该做的任务就行,需要的时候就调用(使唤)它即可。
二、定义函数
1.函数结构
代码如下(示例):
def print_hello(): # def 函数名(参数):
# 函数体,就是需要完成什么操作,该函数体功能就只打印‘Hello’
print('Hello')
print_hello() # 调用函数
# 输出结果
# Hello
2.向函数传递参数
代码如下,在调用函数的时候,传递了一个参数 ’小明‘,函数体中,直接打印接收到的参数,输出结果:
def print_hello(user_name): # 括号内定了一个形参(user_name)
print('Hello ' + user_name) #
print_hello('小明')
# 调用函数 将实参’小明‘ 传递给了函数print_hello(),这个值被存储在形参user_name中
# 输出结果
# Hello 小明
形参:函数内定义的变量,其作用(即生命周期)就只在函数内
实参:调用函数时传递给函数的参数
3.关键字实参
代码如下,关键字实参时传递给函数参数时,直接在实参中将名称和值对应,所以在向函数传递实参的时候,不会混淆,也不用考虑实参的顺序。
def print_hello(user_name, user_name2):
print('Hello ' + user_name + ',' + user_name2)
print_hello(user_name = '小明', user_name2 = '小刚')
# 输出结果
# Hello 小明,小刚
4.默认值
代码如下,编写函数的时候,可以给每个形参指定默认值,如果在调用函数的时候提供了实参的话,就会代替默认值,反之如果不同实参的话,就会默认使用配置的默认值。
def print_player_info(user_name, banji='中一班'):
print('欢迎 ' + banji + ' 的小朋友:' + user_name)
print_player_info('小明')
print_player_info('小红', '中二班')
# 输出结果:
# 欢迎 中一班 的小朋友:小明
# 欢迎 中二班 的小朋友:小红
注意:函数调用的时候,实参和形参需要一一对应得上,以下得场景,代码运行会报错:
1:函数调用不传实参,函数配置形参没有配置默认值---------报错
2:函数调用传实参,函数配置形参没有配置---------报错
3:实参和形参数量不匹配,并且形参没有配置默认值-----报错
5.返回值
函数运行可以处理一些数据,并返回数据(一个或者一组),称为返回值。
在函数中,使用return 语句。
def cheng_fa(num1, num2):
result = num1 * num2 # 函数体实现 将两个形参进行相乘,得到结果放在result变量中
return result # 返回 result
out_data = cheng_fa(2,2) # 调用函数 cheng_fa 得到返回值
print('调用乘法函数,返回结果:' + str(out_data)) # 打印结果
# 输出结果:
# 调用乘法函数,返回结果:4
5.1 返回字典
上面提到过,返回的可以是一个或者多个数据,这里我们返回一个字典看看效果:
def collect_name(first_name, second_name, third_name):
name_dict = {first_name, second_name, third_name}
return name_dict
out_dict = collect_name('小明','小红','小黄')
print(out_dict)
# 输出结果:
# {'小明', '小红', '小黄'}
如此类推,返回一个列表也是类似的操作即可。
6.在函数中修改列表
将列表传递函数后,函数就可以对其进行修改。函数内对列表的修改都是永久性的,就是说,函数外的列表数据会跟着被改动,需要注意。
def print_model(first_list, second_list):
while first_list: # 判断:只要列表有数据,就会一直执行循环
temp_item = first_list.pop() # 推出列表最后的参数,放在变量temp_item 中
second_list.append(temp_item) # 将temp_item 加入到second_list中
first_list = ['1', '2', '3', '4']
second_list = []
print('调用函数前 first_list:', first_list)
print('调用函数前 second_list:', second_list)
print_model(first_list, second_list)
print('调用函数后 first_list:', first_list)
print('调用函数后 second_list:', second_list)
# 输出结果:
# 调用函数前 first_list: ['1', '2', '3', '4']
# 调用函数前 second_list: []
# 调用函数后 first_list: []
# 调用函数后 second_list: ['4', '3', '2', '1']
上面代码中,我们看到first_list 最后被修改了,如果我们不想修改呢,下面是一个方法:
def print_model(first_list, second_list): # 修改函数体即可
temp_list= copy.deepcopy(first_list) # 这里使用拷贝,复制一个新的列表出来使用
while temp_list: # 将临时列表 temp_list 替换掉first_list
temp_item = temp_list.pop() # 将临时列表 temp_list 替换掉first_list
second_list.append(temp_item)
7. 传递任意数量的实参
上面说到参数可以有多个,所以我们可以配置多个实参。函数只需要配置一个形参即可(形参前面加*号),如下:
def print_color(*colors):
print(colors) # 这里可以直接打印,或者用循环逐个打印出来
print_color('red', 'yellow', 'blue')
# 输出结果:
# ('red', 'yellow', 'blue')
8. 将函数存储在模块中
函数的好处之一就是可以跟主代码分离,所以我们可以将函数独立成一个文件,在主代码中直接导入,就可以直接应用。如下脚本
# 独立的一个py文件 model1.py
def get_sum(num1,num2):
return num1 + num2
# 主程序 main.py
import model1
out_data = model1.get_sum(2,2)
print('得到结果为:' + str(out_data))
# 输出结果:
# 得到结果为:4
总结
好了,今天就到这里了,关于函数,还有不少基础的知识点,先记录到这,以上如果有错别字,或者哪里不对的地方,欢迎斧正。谢谢