在Python中,函数是一个非常重要的概念,它可以将一段代码块封装成一个单独的、可重复使用的单元。正确定义一个函数可以提高代码的可读性、可维护性和可重用性。
一、函数的基本语法
def function_name(parameters):
"""docstring"""
statement(s)
如上,函数定义以关键字def开头,后接函数名、参数列表,其中parameters是可选的。函数体内可以包含一条或多条statement,可以是任意有效的语句代码。函数的执行结果通过return语句返回。
函数名由字母、数字和下划线组合而成,并以字母或下划线开头。Python中的函数名是大小写敏感的。函数名要具有描述性,以便于代码阅读和理解。
# 示例1
def add(a, b):
result = a + b
return result
print(add(1, 2))
# 输出:3
上述示例定义了一个函数add,它的参数列表为a和b。函数体内result = a + b将a和b相加,将结果赋值给result,return result语句返回result的值。
二、参数传递
Python中函数的参数传递有两种方式:值传递和引用传递。
当将一个变量作为参数传递给函数时,Python默认采用的是值传递,即将变量的副本传递给函数。在函数中对副本进行修改不会影响原始变量。
# 示例2
def func(a):
a = 3
print("函数内部:", a)
return
x = 5
func(x)
print("函数外部:", x)
# 输出:
# 函数内部: 3
# 函数外部: 5
示例2的执行过程如下:首先定义了一个函数func,其中将a的值修改为3,然后执行print("函数内部:", a)语句输出修改后的值。接着定义了变量x,将其值设为5,将x作为参数传递给func函数,执行func(x)语句,输出”函数内部: 3″。最后执行print("函数外部:", x)语句,输出原始值”函数外部: 5″。
如果使用引用传递,则意味着在函数内部对参数的任何修改都会影响原始变量。
# 示例3
def func(mylist):
mylist.append([4, 5, 6])
print("函数内部:", mylist)
return
mylist = [1, 2, 3]
func(mylist)
print("函数外部:", mylist)
# 输出:
# 函数内部: [1, 2, 3, [4, 5, 6]]
# 函数外部: [1, 2, 3, [4, 5, 6]]
示例3的执行过程如下:首先定义了一个函数func,其中向mylist列表中添加一个新的列表[4, 5, 6],然后执行print("函数内部:", mylist)语句,输出修改后的列表。接着定义了列表mylist,将其值设为[1, 2,3],将mylist作为参数传递给func函数,执行func(mylist)语句,输出”函数内部: [1, 2, 3, [4, 5, 6]]”。最后执行print("函数外部:", mylist)语句,输出修改后的列表”函数外部: [1, 2, 3, [4, 5, 6]]”。
三、函数的参数
Python中的函数参数可以分为四种类型:必备参数、默认参数、可变参数和关键字参数。
1. 必备参数
必备参数是指必须要传递给函数的参数,如果没有传递这些参数,函数调用会失败。
# 示例4
def print_info(name, age):
print("Name: ", name)
print("Age: ", age)
return
print_info("Tom", 18)
# 输出:
# Name: Tom
# Age: 18
上述示例定义了一个函数print_info,其中包含两个必备参数name和age,并输出这两个参数的值。执行print_info("Tom", 18)语句,输出”Name: Tom”和”Age: 18″。
2. 默认参数
默认参数是指在函数定义时,为参数指定默认值,如果没有传递该参数,则使用默认值。
# 示例5
def print_info(name, age=18):
print("Name: ", name)
print("Age: ", age)
return
print_info("Tom")
# 输出:
# Name: Tom
# Age: 18
上述示例定义了一个函数print_info,其中age参数指定了默认值18,如果在函数调用时没有传递这个参数,则使用默认值18。执行print_info("Tom")语句,输出”Name: Tom”和”Age: 18″。
3. 可变参数
可变参数是指函数传递的参数个数不确定,可以是任意个。Python中可变参数可以使用星号*表示。
# 示例6
def sum_num(*args):
sum = 0
for i in args:
sum += i
return sum
print(sum_num(1, 2, 3))
# 输出:6
print(sum_num(1, 2, 3, 4, 5))
# 输出:15
上述示例定义了一个函数sum_num,其中可变参数*args将传入的所有参数封装成一个元组。函数体内通过循环遍历所有参数,将它们相加并返回结果。
4. 关键字参数
关键字参数是指传递给函数的参数在函数内部通过参数名来匹配。Python中,关键字参数可以使用两个星号**表示。
# 示例7
def print_info(name, age):
print("Name: ", name)
print("Age: ", age)
return
print_info(name="Tom", age=18)
# 输出:
# Name: Tom
# Age: 18
上述示例定义了一个函数print_info,其中的参数都是必备参数。通过在参数名前面加上name=或者age=将其变成关键字参数,这样在调用函数时就可以按照参数名来传递参数。注意:如果同时存在可变参数和关键字参数,则可变参数必须放在关键字参数的前面。
四、函数的注释
Python中可以为函数添加注释,提高代码的可读性。注释可以在函数定义内部的字符串中,称为docstring,也可以在函数定义后面通过#来添加单行注释。
# 示例8
def add(a, b):
"""
add(a, b) -> int
返回a和b的和。
"""
result = a + b
return result
print(add(1, 2))
# 输出:3
上述示例定义了一个函数add,其中第一行用字符串格式书写add(a, b) -> int,指定了函数的参数和返回值。在接下来的若干行中用多行字符串表示函数的功能和特点。
注意:可使用help()函数来查看函数的注释。
# 示例9 help(add) # 输出: # Help on function add in module __main__: # # add(a, b) # add(a, b) -> int # # 返回a和b的和。
总结
Python中函数的定义非常简单,可以通过基本语法来定义函数,对于参数传递、可变参数、关键字参数等需要灵活运用。在定义函数时,注释也很重要,可以提高代码的可读性和可维护性。下面是所有示例的代码。
# 示例1
def add(a, b):
result = a + b
return result
print(add(1, 2))
# 输出:3
# 示例2
def func(a):
a = 3
print("函数内部:", a)
return
x = 5
func(x)
print("函数外部:", x)
# 输出:
# 函数内部: 3
# 函数外部: 5
# 示例3
def func(mylist):
mylist.append([4, 5, 6])
print("函数内部:", mylist)
return
mylist = [1, 2, 3]
func(mylist)
print("函数外部:", mylist)
# 输出:
# 函数内部: [1, 2, 3, [4, 5, 6]]
# 函数外部: [1, 2, 3, [4, 5, 6]]
# 示例4
def print_info(name, age):
print("Name: ", name)
print("Age: ", age)
return
print_info("Tom", 18)
# 输出:
# Name: Tom
# Age: 18
# 示例5
def print_info(name, age=18):
print("Name: ", name)
print("Age: ", age)
return
print_info("Tom")
# 输出:
# Name: Tom
# Age: 18
# 示例6
def sum_num(*args):
sum = 0
for i in args:
sum += i
return sum
print(sum_num(1, 2, 3))
# 输出:6
print(sum_num(1, 2, 3, 4, 5))
# 输出:15
# 示例7
def print_info(name, age):
print("Name: ", name)
print("Age: ", age)
return
print_info(name="Tom", age=18)
# 输出:
# Name: Tom
# Age: 18
# 示例8
def add(a, b):
"""
add(a, b) -> int
返回a和b的和。
"""
result = a + b
return result
print(add(1, 2))
# 输出:3
# 示例9
help(add)
# 输出:
# Help on function add in module __main__:
#
# add(a, b)
# add(a, b) -> int
#
# 返回a和b的和。
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/194650.html
微信扫一扫
支付宝扫一扫