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