Python中,函数是组织好的、可重用的、用来执行一个特定任务的代码块。函数提高了代码的模块化和代码重用率。函数是一种将代码块组织在一起以便重复使用的工具。函数可以接受输入数据,并返回输出数据。

1、定义函数

使用关键字 def 来定义函数。函数结构包括函数名、参数列表和函数体。def 后跟函数名和圆括号()。圆括号中可以包含参数,函数的代码块则以冒号:开始,并且缩进。

def  sayHello():
    print("Hello World!")
#调用函数
sayHello()

2、向函数传递参数

函数可以有参数,这些参数作为输入,函数可以使用这些输入值执行某些任务。

def  sayHello(name):
    print("Hello, " + name.title() + "!")
#调用函数
sayHello("jack")

1)位置参数

常见的参数传递方式。参数的值是根据它们在函数定义中的位置来传递的。

2)关键字参数

函数调用时,可以通过“键=值”的形式指定参数。这样做的优点是代码可读性更强,且参数的顺序可以与定义时不同。

3)默认参数

在函数定义时,可以为参数提供默认值。如果调用时未传递该参数,则使用默认值。

4)可变参数(*args)

在函数定义时,可以为参数提供默认值。如果调用时未传递该参数,则使用默认值。

5)使用示例

def greet(name, message="Good day!"):
    print(f"Hello, {name}, {message}")

def greet_all(*names):
    for name in names:
        print(f"Hello, {name}")

def greet_info(**kwargs):
    for key, value in kwargs.items():
        print(f"{key}: {value}")

# 调用示例
greet("Levi")  # 使用默认参数
greet(name="John", message="Good morning!")  # 使用关键字参数
greet_all("C", "Java", "Python")  # 使用可变数量的位置参数
greet_info(name="CJavaPy", age=25, city="Shanghai")  # 使用可变数量的关键字参数

3、函数返回值

函数是组织代码的一种方式,可以将代码块封装起来,并在需要的时候调用它。函数可以返回值,通过return语句实现的。返回值是函数执行结束时返回给调用者的值。

1)使用return语句

函数可以通过return语句返回一个值。如果不使用return语句,或者return后面没有任何表达式,则默认返回None。

def sum(a, b):
    return a + b

result = sum(5, 3)  # result为8

2)返回多个值

Python中的函数可以返回多个值,一般是通过返回一个元组实现的。

def get_user():
    name = "Levi"
    age = 30
    return name, age

user_name, user_age = get_user()  

3)无返回值

如果函数没有返回值(即没有return语句,或者return后面没有跟任何值),它会默认返回None

def print_message(message):
    print(message)

result = print_message("Hello, www.cjavapy.com")  

4、传递列表

函数可以接受各种类型的参数,包括列表。当将列表作为参数传递给函数时,实际上是传递了对该列表的引用。在函数内部对列表所做的任何修改都会反映到原始列表上。因为列表是可变的数据类型。

1)定义一个函数,修改传递的列表

def modify_list(lst):
    """在列表末尾添加一个元素"""
    lst.append("new element")

# 创建一个列表
my_list = [1, 2, 3]

# 调用函数,传递列表
modify_list(my_list)

# 输出修改后的列表
print(my_list)  # 输出: [1, 2, 3, 'new element']

2)传递列表副本

def process_list(lst):
    """处理列表,但不修改原始列表"""
    # 使用列表副本进行操作
    lst_copy = lst.copy() # lst.copy() 进行复制,也可以在传递参数时 通过切片[:] 创建列表的副本时进行传参
    lst_copy.append("processed")
    return lst_copy

# 创建一个列表
original_list = [1, 2, 3]

# 调用函数,传递列表副本
new_list = process_list(original_list) 

# 输出原始列表和新列表
print("Original List:", original_list)  # 原始列表保持不变
print("New List:", new_list)  # 新列表包含修改

推荐文档