函数的定义
def 函数名(参数, 参数…):
函数体 …
def function(a, b):
return b-a
k = function(10, 20)
print(k)
其中a、b为形参,10、20为实参
函数的参数传递
- 位置传参:根据形参对应的位置进行实参传递
def function(a, b):
return b-a
k = function(10, 20)
print(k)
- 关键字传参:根据形参的名字进行传参(优先级比位置传参高)
def function(a, b):
return b-a
k = function(b=10, a=20) # a,b为关键字参数,结果为-10
print(k)
函数的返回值
- 如果函数没有返回值,则可以不用写return
- 如果函数只有一个返回值,则直接返回类型
- 如果函数的返回值是多个,则返回类型为元组
# 分开奇数和偶数
def f(n):
odd = [] # 存奇数
even = [] # 存偶数
for i in n:
if i % 2:
odd.append(i)
else:
even.append(i)
return odd, even
num = [3, 4, 63, 64]
print(f(num))
函数的参数定义
函数定义默认值参数
def fun(a, b=10): # b设定了默认值参数10,只有与默认值不符合时才需要传递实参
print(a*b)
fun(10) # 只去传一个参数,b采用默认值
fun(10, 1) # b的默认值被替换
个数可变的位置参数
(1)定义函数时,可能无法事先确定传递的位置实参的个数时,使用可变的位置参数
(2)使用*定义个数可变的位置形参
(3)结果为一个元组
def fun(* argc):
print(argc)
fun(10) # 输出结果(10, )
fun(10, 20, 30)
个数可变的关键字形参
(1)定义函数时,无法事先确定传递的关键字实参的个数时,使用可变的关键字形参
(2)使用**定义个数可变的关键字形参
(3)结果为一个字典
def fun(**arge):
print(arge)
fun(a=10)
fun(a=10, b=20, c=30)
注:函数定义时的形参问题
个数可变的位置参数和关键字参数只能有一个,否则程序会报错
def fun2(*arge, *a):
pass
def fun2(**arge, **a):
pass
def fun3(a, b, *, c, d): #星号的右边只能用关键字传递
pass
变量的注意事项
局部变量前加global=全局变量
def fun3():
global age
age = 1
print(age)
fun3()
print(age)