Python函数的基本语法和使用方法
Python 作为一门高级编程语言,给程序员提供了多种自由和灵活的编程方式。其中,函数是其中非常重要的一部分内容。
Python 中,函数是一段可重复使用的代码,它可以接收输入的参数,进行处理,然后输出结果。函数通常有以下几个特点:
- 函数定义以 def 关键词开头,后面跟着函数标识符名称和圆括号().
- 函数参数可以通过直接在括号内指定,或者在函数内通过赋值语句设置默认值。
- 函数体以冒号开头,后面缩进的语句块可执行任意指令。
- return [表达式]语句用于语句从函数中返回结果,不带表达式的return语句相当于返回None。
Python中函数的优点:
- 可重复利用代码,提高代码的灵活性和可读性;
- 提高了程序的可维护性和可伸缩性;
- 将复杂的问题拆分为单个函数,降低程序的复杂度。
下面我们来详细介绍一下Python函数的语法和使用方法。
## Python 函数的定义
Python 中的函数定义可以使用以下语法:
def function_name(parameter1, parameter2, ……):
# 函数体
return [expression]
其中,function_name 表示函数名,parameter 表示函数参数。在函数定义时,可以为函数提供默认参数值。例如:
def print_jd(name, age=18):
print(f"姓名:{name},年龄:{age}岁")
以上代码定义了一个名为 print_jd 的函数,该函数有两个参数 name 和 age,age 的默认值为 18。
## Python 函数的调用
Python 函数的调用非常简单,只需直接使用函数名+()即可调用函数。例如:
print_jd("Tom")
以上示例中,我们调用了 print_jd 函数,并传入了一个值为 "Tom" 的参数,因为 age 有默认值,所以未在函数调用时传入该参数。
## Python函数的参数
Python函数可以使用以下三种类型的参数:
### 必备参数
必备参数在函数调用时必须传入,且必须按照顺序传入:
def print_jd(name, age):
print(f"姓名:{name},年龄:{age}岁")
print_jd("Tom", 18)
### 关键字参数
关键字参数也被称为**命名关键字参数**,这种类型的参数允许在调用函数时指定参数名称:
def print_jd(name, age, company):
print(f"姓名:{name},年龄:{age}岁,就职公司:{company}")
print_jd("Tom", 18, company="JD.COM")
使用关键字参数可以避免因参数顺序不正确而引起的错误,同时还可以在传入参数不完整的情况下做到精确指定参数值。
### 默认参数
默认参数在函数定义时设置初始值,在函数调用时如果没有传入该参数,则使用默认值:
def print_jd(name, age=18):
print(f"姓名:{name},年龄:{age}岁")
print_jd("Tom")
## Python的不定长参数
对于以下三种情况,Python支持函数参数有不定长度:
1. 可变的必须参数:*args
2. 可变的关键字参数:**kwargs
3. 混用不定长参数方式:*args, **kwargs
### 不定长参数
#### 可变的必须参数 *args
使用两个星号 * 的参数方式叫做可变的必需参数(Variable Length Arguments)或者次要参数(Tuple Arguments),当有不确定参数个数时就使用 *args 。在函数定义时,用 *args 作为函数的形参。形参名args不是固定的,只是*单纯的字符就行。这样这个形参会将所有进入的不确定个数的参数,当成元组处理。也就是将传入的无名字参数列表,当成元组进行操作。如:
def print_jd(*args):
print(args)
print_jd("Tom", 18, "JD.COM")
输出结果为:
('Tom', 18, 'JD.COM')
#### 可变的关键字参数 **kwargs
使用两个星号 ** 的参数方式叫做可变的关键字参数(Variable Keyword Arguments),使用此方法时我们使用任意数量的关键字参数。在函数定义时使用两个星号(**)创建一个空字典参数。字典的键将是参数名,字典的值将是该参数的值。
def print_jd(**kwargs): print(kwargs) print_jd(name="Tom", age=18, company="JD.COM")
输出结果为:
{'name': 'Tom', 'age': 18, 'company': 'JD.COM'}
### 混用不定长参数方式
def print_demo(a,b,c,*args,**kwargs):
print(a)
print(b)
print(c)
print(args)
print(kwargs)
print_demo(3,4,5,6,7,m=9,n=21)
输出结果为:
3
4
5
(6, 7)
{'m': 9, 'n': 21}
以上代码中的参数组合可以支持传入固定数量的参数以及任意数量的不定长度参数,这在某些特定的情况下,可以非常方便地进行基于函数的编程。
## Python函数的返回值
Python中的函数可以使用 return 语句向函数调用方返回一个值。如果函数没有显示返回值,则默认返回 None 对象。
def sum(a, b):
return a + b
result = sum(1, 2)
print(result)
输出结果为:
3
此外,Python函数还支持同时返回多个值:
def sum_and_diff(a, b):
return a + b, a - b
result = sum_and_diff(10, 5)
print(result)
输出结果为:
(15, 5)
## 命名空间
Python 函数内以及全局都拥有命名空间,函数内的变量叫做局部变量,即该变量只在定义它的函数内部可用,若出了函数内则被销毁,而全局变量可以在整个程序内都使用。
def demo():
p = 1 + 1
print(p) # 输出为 2
demo()
print(p) # 报错:NameError: name 'p' is not defined
以上代码中,我们尝试在全局范围内访问函数内的局部变量 p,但这是不可行的,因为 p 只在函数内定义而已。如果需要在函数内改变全局变量的值,则需要使用 global 关键字:
p = 0
def demo():
global p
p = 1 + 1
demo()
print(p) # 输出为 2
使用 global 关键字,我们能够让函数内部使用或修改全局变量的值。
## 函数模块
Python 的函数可以将一组相关的功能封装到一个 .py 文件中,这就是 Python 模块的概念。
例如,我们可以创建一个名为 my_math.py 的文件,该文件定义了多个数学函数:
python
def add(a, b):
return a + b
def sub(a, b):
return a - b
def mul(a, b):
return a * b
def div(a, b):
