
🎈🎈作者主页: 喔的嘛呀🎈🎈
🎈🎈所属专栏:python爬虫学习🎈🎈
✨✨谢谢大家捧场,祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天开心哦!✨✨
小伙伴们大家好!今天我们来学习函数这个知识点。、
目录
一、定义函数
当你想要重复执行一些代码,或者想要将一段代码组织成一个可重用的模块时,就可以使用函数。Python 中使用 def
关键字来定义函数。下面是关于定义函数的详细内容:
定义函数的语法
def function_name(parameters):
"""函数文档字符串"""
# 函数体,即具体实现功能的代码块
return expression # 可选,返回值
def
关键字用于定义函数,后面跟着函数名。- 函数名应该能描述函数的功能,通常使用小写字母和下划线。
- 参数列表可以为空,或者包含一或多个参数,多个参数之间用逗号分隔。
- 函数体是函数的实际实现,其中的代码块会在函数被调用时执行。
- 文档字符串(docstring)用于描述函数的作用和用法,建议使用三重引号包裹起来,方便查看函数文档。
示例:定义一个简单的函数
下面是一个简单的函数,接受一个参数并返回该参数的平方值:
def square(x):
"""计算输入值的平方"""
return x * x
# 调用函数
result = square(5)
print(result) # 输出:25
默认参数
可以为函数参数指定默认值,当调用函数时没有传递该参数时,使用默认值。
def greet(name='World'):
"""打印问候语"""
print(f"Hello, {name}!")
greet() # 输出:Hello, World!
greet('Alice') # 输出:Hello, Alice!
不定长参数
使用 *args
来处理不定长参数,可以接受任意数量的参数,并将它们作为一个元组传递给函数。
def add(*args):
"""计算所有参数的和"""
total = 0
for num in args:
total += num
return total
result = add(1, 2, 3, 4, 5)
print(result) # 输出:15
关键字参数
使用 **kwargs
来处理关键字参数,可以接受任意数量的关键字参数,并将它们作为一个字典传递给函数。
def info(**kwargs):
"""打印关键字参数"""
for key, value in kwargs.items():
print(f"{key}: {value}")
info(name='Alice', age=30)
# 输出:
# name: Alice
# age: 30
以上就是关于定义函数的基本知识,希望这些内容能够帮助你更好地理解函数的概念和用法!
二、调用函数
调用函数是指使用函数名和括号来执行函数体内的代码。在 Python 中,函数调用非常简单,只需要使用函数名和括号即可。下面是关于调用函数的详细内容:
调用函数的语法
function_name(arguments)
function_name
是函数的名称。arguments
是传递给函数的参数,可以是零个或多个参数,多个参数之间用逗号分隔。
示例:调用一个简单的函数
假设我们已经定义了一个函数 square
,用于计算一个数的平方。现在我们将调用这个函数:
def square(x):
"""计算输入值的平方"""
return x * x
# 调用函数
result = square(5)
print(result) # 输出:25
位置参数和关键字参数
在调用函数时,可以按照参数的位置传递参数,也可以使用关键字参数指定参数的值。
def greet(name, message):
"""打印问候语"""
print(f"Hello, {name}! {message}")
# 位置参数调用
greet('Alice', 'Welcome to our party!')
# 关键字参数调用
greet(message='Welcome to our party!', name='Alice')
不定长参数
可以使用 *args
和 **kwargs
处理不定长参数,在函数调用时可以传递任意数量的参数。
def add(*args):
"""计算所有参数的和"""
total = 0
for num in args:
total += num
return total
result = add(1, 2, 3, 4, 5)
print(result) # 输出:15
def info(**kwargs):
"""打印关键字参数"""
for key, value in kwargs.items():
print(f"{key}: {value}")
info(name='Alice', age=30)
# 输出:
# name: Alice
# age: 30
调用带有默认参数的函数
如果函数有默认参数,可以选择传递或不传递这些参数。
def greet(name='World'):
"""打印问候语"""
print(f"Hello, {name}!")
greet() # 输出:Hello, World!
greet('Alice') # 输出:Hello, Alice!
保存函数返回值
函数执行后会返回一个值,可以将这个值保存在变量中以备后续使用。
def add(a, b):
"""计算两个数的和"""
return a + b
result = add(3, 5)
print(result) # 输出:8
以上就是关于调用函数的详细内容,希望这些内容能够帮助你更好地理解函数的调用方式!
三、函数参数
在 Python 中,函数参数可以分为四种类型:位置参数、默认参数、可变参数和关键字参数。下面详细介绍这四种类型的函数参数,并提供相应的代码示例:
1. 位置参数
位置参数是指根据参数的位置来传递值的参数。在函数定义时,参数的顺序和数量必须与调用时传递的参数一致。
def greet(name, message):
"""打印问候语"""
print(f"Hello, {name}! {message}")
# 调用函数时按照位置传递参数
greet('Alice', 'Welcome to our party!')
2. 默认参数
默认参数是在函数定义时为参数指定默认值,如果调用函数时没有提供该参数的值,则使用默认值。
def greet(name='World', message='Welcome'):
"""打印问候语"""
print(f"Hello, {name}! {message}")
# 调用函数时可以不传递参数,使用默认值
greet()
greet('Alice')
3. 可变参数
可变参数允许传递任意数量的参数,这些参数会被封装成一个元组(*args
)传递给函数。
def add(*args):
"""计算所有参数的和"""
total = 0
for num in args:
total += num
return total
# 可以传递任意数量的参数
result = add(1, 2, 3, 4, 5)
print(result) # 输出:15
4. 关键字参数
关键字参数允许传递任意数量的参数,这些参数会被封装成一个字典(**kwargs
)传递给函数。
def info(**kwargs):
"""打印关键字参数"""
for key, value in kwargs.items():
print(f"{key}: {value}")
# 可以传递任意数量的关键字参数
info(name='Alice', age=30)
这些是 Python 中常用的函数参数类型,结合使用这些参数类型可以灵活地定义函数,适应不同的需求。希望这些内容能帮助你更好地理解 Python 函数参数!
四、函数返回值
函数的返回值是指在函数执行完成后,将结果返回给调用者的值。在 Python 中,使用 return
关键字来返回值。函数可以返回任意类型的值,包括数字、字符串、列表、字典等。下面是关于函数返回值的详细内容:
返回单个值
使用 return
关键字可以返回单个值,函数执行到 return
语句时会结束并返回该值。
def add(a, b):
"""计算两个数的和"""
return a + b
result = add(3, 5)
print(result) # 输出:8
返回多个值
Python 中的函数可以返回多个值,这些值会被封装成一个元组。
def add_and_subtract(a, b):
"""计算两个数的和与差"""
return a + b, a - b
result = add_and_subtract(5, 3)
print(result) # 输出:(8, 2)
# 可以使用多个变量接收返回值
sum_result, diff_result = add_and_subtract(5, 3)
print(sum_result) # 输出:8
print(diff_result) # 输出:2
没有返回值
如果函数没有使用 return
语句返回值,默认返回 None
。
def greet(name):
"""打印问候语"""
print(f"Hello, {name}!")
result = greet('Alice')
print(result) # 输出:None
返回值的作用
返回值可以让函数的结果被外部代码使用,可以用于传递计算结果、状态信息等。在函数中使用 return
可以提高代码的灵活性和可读性。
def is_even(num):
"""判断一个数是否为偶数"""
if num % 2 == 0:
return True
else:
return False
if is_even(5):
print("5是偶数")
else:
print("5是奇数")
以上就是关于函数返回值的详细内容,希望这些内容能够帮助你更好地理解函数的返回值!
五、局部变量
在 Python 中,局部变量是在函数内部定义的变量,其作用范围仅限于该函数内部,无法在函数外部访问。以下是关于局部变量的详细内容,包含了局部变量的定义、作用域和使用方法:
定义局部变量
局部变量是在函数内部使用 =
运算符进行赋值定义的变量。
def my_func():
# 定义局部变量
my_var = 10
print(my_var)
my_func()
# 在函数外部访问局部变量会导致错误
# print(my_var) # 这里会报错:NameError: name 'my_var' is not defined
局部变量的作用域
局部变量的作用范围仅限于函数内部,在函数外部无法访问。
def my_func():
# 定义局部变量
my_var = 10
print(my_var)
my_func()
# 在函数外部访问局部变量会导致错误
# print(my_var) # 这里会报错:NameError: name 'my_var' is not defined
六、全局变量
在 Python 中,全局变量是在函数外部定义的变量,可以在整个程序中被访问和修改。以下是关于全局变量的详细内容,包含了全局变量的定义、作用域和使用方法:
定义全局变量
全局变量是在函数外部使用 =
运算符进行赋值定义的变量。
global_var = 10 # 定义全局变量
def my_func():
print(global_var) # 在函数内部访问全局变量
my_func()
print(global_var) # 在函数外部访问全局变量
修改全局变量
在函数内部可以使用 global
关键字来修改全局变量的值。
global_var = 10 # 定义全局变量
def my_func():
global global_var
global_var = 20 # 修改全局变量的值
print(global_var)
my_func()
print(global_var) # 全局变量的值被修改为 20
注意事项
- 在函数内部可以访问全局变量,但是不能修改全局变量的值,除非使用
global
关键字。 - 局部变量和全局变量可以同名,但是函数内部的局部变量会覆盖同名的全局变量。
global_var = 10 # 全局变量
def my_func():
# 使用同名的局部变量覆盖全局变量
global_var = 20
print("Inside function:", global_var)
my_func()
print("Outside function:", global_var) # 全局变量值未被修改
使用 globals()
函数获取全局变量
可以使用 globals()
函数获取所有全局变量的字典。
global_var = 10 # 定义全局变量
def my_func():
global_var = 20 # 在函数内部定义同名局部变量
print("Inside function:", globals()['global_var'])
my_func()
print("Outside function:", globals()['global_var'])
以上就是关于全局变量的详细内容,希望对你理解全局变量有所帮助!
七、函数注意事项
在使用 Python 函数时,有一些注意事项需要特别注意,以避免出现错误或不必要的问题。以下是一些常见的注意事项:
1. 变量作用域
- 函数内部可以访问全局变量,但如果在函数内部尝试修改全局变量的值,Python 会将其视为创建一个新的局部变量,除非使用
global
关键字声明要修改的是全局变量。
global_var = 10 # 全局变量
def my_func():
global global_var
global_var = 20 # 修改全局变量的值
print("Inside function:", global_var)
my_func()
print("Outside function:", global_var) # 全局变量的值被修改为 20
2. 默认参数的可变对象
- 在函数定义中,将可变对象(如列表或字典)作为默认参数时,要注意默认参数在函数定义时被创建,并且该对象将在后续调用中共享。
def append_to_list(value, my_list=[]):
my_list.append(value)
return my_list
print(append_to_list(1)) # 输出:[1]
print(append_to_list(2)) # 输出:[1, 2]
print(append_to_list(3)) # 输出:[1, 2, 3]
在上面的示例中,由于默认参数 my_list
是可变对象(列表),它在函数定义时被创建,并且每次调用函数时都会使用同一个列表对象。这可能会导致意外的行为,因此应该避免使用可变对象作为默认参数。
3. 函数注释
- 可以使用函数注释来描述函数的参数和返回值,提高代码的可读性和可维护性。
def add(a: int, b: int) -> int:
"""返回两个整数的和"""
return a + b
4. 函数命名
- 函数命名应具有描述性,能够清晰地表达函数的功能,避免使用过于简单或容易混淆的名称。
# 不好的命名方式
def func(a, b):
pass
# 好的命名方式
def calculate_sum(num1, num2):
pass
5. 函数调用
- 在调用函数时,应确保传递正确数量和类型的参数,以避免出现错误。
def greet(name):
print(f"Hello, {name}!")
# 传递正确数量的参数
greet('Alice')
# 传递错误数量的参数将导致 TypeError
# greet('Alice', 'Bob')
通过遵守这些注意事项,可以编写出更加健壮和可维护的 Python 函数。
好了今天的python函数学习就到这里了,拜拜喽!