Python高级之函数
【一】函数的基本使用
- 我们在前面的学习中,所有的功能代码都集中在一块,需要使用同一功能时,需重复编写该功能的代码,这样比较麻烦,当我们到后面代码变得越来越长,也不利于我们修改其中一个小功能的代码
- 我们完全可以从现实生活中找到简化程序设计的方案:
- 比如一个修理工会事先准备好螺丝刀、锤子等工具,这样在进行修理的过程中
- 需要用到拧螺丝的功能时就直接拿来螺丝刀使用
- 需要用到锤击物体的功能时就直接拿来锤子使用,而无需临时制造
- 这个例子的核心在于’事先准备好工具,遇到应用场景时拿来就用
- 在程序中,具备某一功能的工具指的就是函数,事先准备工具的过程即函数的定义,拿来就用即函数的调用
【二】函数的定义和调用
【1】函数的概念
- 函数的使用必须遵循先定义,后调用的原则
- 函数的定义就是事先将函数体代码保存起来,然后将内存地址赋值给函数名,函数名就是对这段代码的引用
- 没有事先定义函数而直接调用,就相当于在引用一个不存在的变量名
def 函数名(参数1,参数2,...):
函数体
return 值
【2】函数的定义
(1)空函数
def login():
pass
#函数体为pass代表什么都不做,称之为空函数
(2)无参无返回值
def get_username_password():
username_input = input("请输入用户名:").strip()
password_input = input("请输入密码:").strip()
(3)有参无返回值
def user(name):
print(f"name:{name}")
user(name='ligo')
#输出 name:ligo
(4)有多个参数无返回值
def user(name, age):
print(f"name:{name}|age:{age}")
user('ligo', '18')
#输出 name:ligo|age:18
(5)多个参数一个返回值
def user(name, age):
user_data = f'{name} is {age} years old'
print(f"{name}:{user_data}")
return user_data
res = user('ligo', '18') #ligo:ligo is 18 years old
print(res)
#输出 ligo is 18 years old
(6)多个参数多个返回值
def user(name, age):
user_data1 = f'{name} is {age} years old'
user_data2 = f'He is {name}, he has {age} apples'
return user_data1, user_data2
user_data1, user_data2 = user('ligo', '18')
print(f'{user_data1} | {user_data2}')
#输出 ligo is 18 years old | He is ligo, he has 18 apples
【3】函数的三种调用方式
(1)直接调用
def mult(x, y):
return x * y
print(mult(5, 6)) #输出 30
(2)表达式调用
def add1(x, y):
return x + y
add2 = add1
print(add2(5, 6)) #输出 11
#示例
def add(x, y):
res = x + y
return res
def mult(x, y):
res = x * y
return res
func_dict = {1: add, 2: mult}
func_id = input("请选择功能:")
func_id = int(func_id)
func = func_dict.get(int(func_id))
x = input("请输入x的值:")
y = input("请输入y的值:")
res = func(int(x), int(y))
print(res)
(3)函数作为参数
def add(x, y):
return x + y
def mult(func, x, y):
return func(x, y)
print(mult(add, 2, 4)) #输出 6
分类:
Python部分 / Python高级
, Python部分
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统