这是一篇基于你日常学习整理的 Python 函数入门指南,涵盖了从定义到参数使用的核心知识点。
Python 函数从入门到上手:一篇讲透定义、调用与参数
告别重复代码,把复杂任务封装起来,让编程更高效
在写 Python 程序的时候,你肯定遇到过这种情况:同一段代码需要反复写好几次,不仅麻烦,而且一旦要修改,还得把所有地方都改一遍,很容易漏掉。这时候,函数(Function) 就是你的救星。
函数可以理解为一个具有独立功能的代码块,它接受一些输入(参数),经过内部处理后,返回一个结果。它就像是一个小工厂,你给它原材料(参数),它就能生产出产品(返回值)。
一、为什么要用函数?
在正式学习语法之前,我们先来聊聊函数到底能带来什么好处:
-
代码复用,告别重复:这是函数最核心的价值。把常用的逻辑封装成函数,需要的时候直接调用就行,不用反复写相同的代码。
-
模块化,逻辑更清晰:复杂的任务可以拆分成多个小函数,每个函数只专注做一件事。这样代码结构一目了然,阅读和修改都更轻松。
-
易于维护,修改更方便:如果逻辑需要调整,只需要修改函数内部的代码,所有调用它的地方都会自动生效,避免了漏改、错改的问题。
简单来说,函数能让你的代码更简洁、更清晰、更健壮。
二、函数的定义与调用
1. 如何定义一个函数?
在 Python 中,使用 def 关键字来定义函数,基本格式如下:
python
def 函数名(参数列表):
"""文档字符串,描述函数是做什么的(可选)"""
# 函数体,缩进的代码块
# 实现具体功能的语句
return 返回值 # 可选,没有则返回 None
-
def:是英文 define 的缩写,表示开始定义一个函数。 -
函数名:应该能清晰表达函数的功能,遵循标识符命名规则(字母、数字、下划线组成,不能以数字开头)。
-
参数列表:函数可以接收外部传入的数据,多个参数用逗号分隔。
-
文档字符串(Docstring):用三个引号括起来,用来描述函数的作用,方便他人理解和使用。
-
函数体:是函数的核心逻辑所在,必须缩进(通常为4个空格)。
-
return 语句:用于结束函数,并返回一个值。如果没写
return,函数会默认返回None。
举个例子:定义一个求两数之和的函数:
python
def add(num1, num2):
"""接收两个数字,返回它们的和"""
result = num1 + num2
return result
2. 如何调用一个函数?
定义好的函数不会自动执行,需要调用(Call) 它才行。调用的语法很简单:函数名(参数)。
python
# 调用 add 函数,并把返回值赋给变量 sum_result sum_result = add(10, 20) print(sum_result) # 输出:30
注意:Python 是解释型语言,代码从上往下执行。函数必须先定义,再调用,否则程序会报错(NameError)。
python
# 错误示例
# greet() # 此处调用会报错:name 'greet' is not defined
def greet():
print("Hello!")
greet() # 正确调用
三、函数的参数
参数是函数灵活性的关键,它让函数能处理不同的数据。函数定义时的参数叫形参(Parameter),调用时传入的具体值叫实参(Argument)。
1. 位置参数
这是最常用的一种。调用函数时,传入的实参会按照位置顺序依次赋值给形参。
python
def introduce(name, age, city):
print(f"{name},{age}岁,来自{city}")
# 按位置顺序传入,'张三'给name,25给age,'北京'给city
introduce("张三", 25, "北京")
2. 关键字参数
调用时,通过 形参名=值 的方式指定,可以打乱顺序,让代码更清晰。
python
# 使用关键字参数,顺序可以不同 introduce(city="上海", name="李四", age=30)
3. 默认参数
在定义函数时,可以为某些参数指定默认值。调用时如果不传这个参数,就会使用默认值,让函数的使用更灵活。
注意:带有默认值的参数,必须放在所有没有默认值的参数后面。
python
def greet(name, greeting="你好"):
print(f"{greeting},{name}!")
greet("小明") # 输出:你好,小明!
greet("小红", "哈喽") # 输出:哈喽,小红!
4. 可变参数(*args 和 **kwargs)
当你不知道需要传入多少个参数时,可以用可变参数来“打包”接收:
-
*args:接收任意数量的位置参数,把它们放在一个元组(tuple) 里。 -
**kwargs:接收任意数量的关键字参数,把它们放在一个字典(dict) 里。
python
def print_all(*args, **kwargs):
print("位置参数:", args)
print("关键字参数:", kwargs)
print_all(1, 2, 3, name="张三", age=25)
# 输出:
# 位置参数: (1, 2, 3)
# 关键字参数: {'name': '张三', 'age': 25}
四、函数的返回值(return)
return 是函数的“出口”,它的作用有两方面:
-
返回结果:把函数执行后的结果“送”回给调用它的地方,可以用一个变量来接收这个结果。
-
结束函数:函数一旦执行到
return语句,就会立即停止,后面的代码都不会再执行。
python
def check_even(num):
if num % 2 == 0:
return True # 如果是偶数,执行到这里函数就结束了
# 下面的代码只有在上面条件不满足时才会执行
return False
result = check_even(10)
print(result) # 输出:True
Python 的函数还可以返回多个值,实际上是以元组(tuple)的形式返回的。
python
def get_user_info():
name = "小明"
age = 18
return name, age # 返回一个元组 (name, age)
user_name, user_age = get_user_info()
print(user_name) # 输出:小明
print(user_age) # 输出:18
总结
| 概念 | 作用 | 示例 |
|---|---|---|
| 定义函数 | 使用 def 封装一段代码 | def add(a, b): |
| 调用函数 | 执行写好的函数 | add(10, 20) |
| 形参与实参 | 定义时的“占位符”与调用时的“实际值” | def add(a, b): 中的 a b 是形参;add(10, 20) 中的 10 20 是实参 |
| 返回值 | 用 return 将结果返回给调用者 | return a + b |
掌握函数是学习 Python 模块化编程的关键一步。希望这篇指南能帮你理清思路,写出更简洁、高效的代码。
276



被折叠的 条评论
为什么被折叠?



