(1)
def calc(a,b):#a,b称为形式参数,简称形参,
c=a+b
return c
sum=calc(1,2)#1,2称为实际参数,简称实参
print(sum)
#位置实参,按照顺序传递
result=calc(b=2,a=1)#a和b称为关键字参数
print(result)
#关键字实参,按照关键字传递
(2)
需要注意的是在函数调用过程中,进行参数的传递,如果是不可变对象,在函数体的修改不会影响实参的值,如果是可变对象,在函数体的修改会影响到实参的值。例子如下:
def fun(arg1,arg2): print('arg1=',arg1)#输出arg1= 11 print('arg2=',arg2)#输出arg2= [22, 33, 44] arg1=100 arg2.append(10) print('arg1=',arg1)#输出arg1= 100 print('arg2=',arg2)#输出arg2= [22, 33, 44, 10] num1=11 num2=[22,33,44] print(num1) #输出11,更先执行 print(num2)#输出[22, 33, 44] print('*****')#输出***** fun(num1,num2) print(num1)#输出11,整数不是可变对象,经过函数体以后,还是11 print(num2)#输出[22, 33, 44, 10],因为列表是可变对象,经过函数体以后,现在加了10
(3)函数的返回值,如果是1个,直接返回。如果是多个,会返回元组。如果没有返回值,return可以不写。
def fun1(): return 'hello' res=fun1() print(res)#输出hello def fun2(): return 'hello','world' res1=fun2() print(res1)#输出('hello', 'world')
(4)函数定义时,使用*定义个数可变的位置形参,结果为一个元组. 使用**定义个数可变的关键字形参,结果为一个字典。而且位置形参要放在关键字形参之前。
def fun(*args):#函数定义时,使用*定义个数可变的位置形参,结果为一个元组 print(args) fun(10)##输出(10,) fun(20,30)#输出(20, 30) def fun1(**args):#函数定义时,使用**定义个数可变的关键字形参,结果为一个字典 print(args) fun1(a=10)#输出{'a': 10} fun1(a=1,b=2,c=3)#输出{'a': 1, 'b': 2, 'c': 3} def fun2(a,b,c): print(a,b,c)#输出1 2 3 lst=[1,2,3] fun2(*lst)#前面加个*,就可以将列表中的每个元素都转换为位置实参传入 dic={'a': 1, 'b': 2, 'c': 3} fun2(**dic)#前面加**,就可以将字典中的每个元素都转换为关键字实参传入