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) # 新列表包含修改