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
posted @   Ligo6  阅读(14)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
点击右上角即可分享
微信分享提示