Python函数的定义和调用
- 函数定义使用def关键字,例如:def my_function():
- 函数调用使用函数名加括号,例如:my_function()
1.Python函数的形参有以下五种类型和使用规则及应用:
- 位置参数:按照定义顺序依次传入参数,数量和顺序必须一致。例如
def greet(name, age):
print(f"Hello {name}, you are {age} years old.")
greet("Alice", 30)
- 默认参数:在函数定义时给参数指定默认值,调用时可以不传入该参数,使用默认值。例如:
def greet(name, age=20):
print(f"Hello {name}, you are {age} years old.")
greet("Alice") # 输出:Hello Alice, you are 20 years old.
- 可变长位置参数:使用*号前缀,可以接受任意数量的位置参数,以元组形式传递。例如:
def sum_numbers(*numbers):
total = 0
for num in numbers:
total += num
return total
print(sum_numbers(1, 2, 3)) # 输出:6
- 可变长关键字参数:使用**号前缀,可以接受任意数量的关键字参数,以字典形式传递。例如:
def print_info(**info):
for key, value in info.items():
print(f"{key}: {value}")
print_info(name="Alice", age=30) # 输出:name: Alice age: 30
- 强制关键字参数:使用*号作为分隔符,后面的参数必须使用关键字传入。例如:
def print_info(name, *, age):
print(f"Name: {name} Age: {age}")
print_info("Alice", age=30) # 输出:Name: Alice Age: 30
2. Python函数返回值使用return语句,可以返回任意类型的值
def add_numbers(a, b):
return a + b
result = add_numbers(3, 4)
print(result) # 输出:7
3.Python中可以定义嵌套函数,在函数内部定义的函数称为内部函数。
内部函数可以访问外部函数的变量,但是外部函数不能访问内部函数的变量。例如:
def outer_function():
x = 10
def inner_function():
nonlocal x
x += 5
print(f"Inner function: {x}")
inner_function()
print(f"Outer function: {x}")
outer_function()
输出:
Inner function: 15
Outer function: 15
4.使用global语句可以在函数内部访问并修改全局作用域中的变量。
例如:
x = 10
def my_function(): global x x += 5 print(x)
my_function() # 输出:15
5.使用nonlocal语句可以在内部函数中访问并修改外部函数的变量。
例如:
def outer_function():
x = 10
def inner_function():
nonlocal x
x += 5
print(x)
inner_function()
outer_function() # 输出:15
6.函数的调用原理是将函数体内的代码从上到下依次执行,遇到函数调用时会跳转到函数定义的位置执行函数体内的代码,并在执行完毕后返回到调用位置继续执行后续代码。
例如:
def greet():
print("Hello!")
print("Before function call.")
greet()
print("After function call.")
输出:
Before function call.
Hello!
After function call.
7.函数实参的两种传参方式:
- 位置参数传递:按照形参的位置依次传入实参,数量和顺序必须一致。例如:
def greet(name, age):
print(f"Hello {name}, you are {age} years old.")
greet("Alice", 30)
关键字参数传递:通过指定形参的名称传入实参,可以不按照顺序传入。例如
def greet(name, age):
print(f"Hello {name}, you are {age} years old.")
greet(age=30, name="Alice")
8.Python函数的作用域分为全局作用域和局部作用域。全局作用域指的是在函数外部定义的变量,可以在整个代码中访问。局部作用域指的是在函数内部定义的变量,只能在函数内部访问。
例如:
x = 10 # 全局变量
def my_function():
y = 5 # 局部变量
print(x) # 在函数内部可以访问全局变量
print(y)
my_function()
print(x) # 在函数外部也可以访问全局变量