Python-函数的参数

形参and实参

 1 def calc(a, b):
 2     c = a + b
 3     return c
 4 
 5 '''位置实参'''
 6 result = calc(10, 20)
 7 print(result)
 8 
 9 '''关键字实参'''
10 res = calc(b=10, a=20) #'='左侧的变量名称称为关键字参数
11 print(res)

函数参数传递的内存分析

在函数调用过程中,进行参数的传递:
对于不可变对象,形参的修改不会影响实参的值
对于可变对象,形参的修改影响实参的值

 1 def fun(arg1, arg2):
 2     print('arg1=', arg1)
 3     print('arg2=', arg2)
 4     arg1 = 100
 5     arg2.append(10)
 6     print('arg1=', arg1)
 7     print('arg2=', arg2)
 8 
 9 n1 = 11
10 n2 = [22, 33, 44]
11 print('n1=', n1)
12 print('n2=', n2)
13 fun(n1, n2)
14 print('n1=', n1)
15 print('n2=', n2)
16 
17 '''在函数调用过程中,进行参数的传递
18 对于不可变对象,形参的修改不会影响实参的值
19 对于可变对象,形参的修改会影响实参的值'''

 默认值参数

1 def fun(a, b=10): # b称为默认值参数
2     print(a, b)
3 
4 fun(100)
5 fun(20, 30)
6 # fun() TypeError: fun() missing 1 required positional argument: 'a'
7 
8 print('hello', end='\t')
9 print('world')

个数可变的位置形参and个数可变的关键字形参(需要多多练习

同一函数中:个数可变的位置形参 与 个数可变的关键字形参各自唯一

个数可变的位置形参在前,个数可变的关键字形参在后

 1 # 函数定义时的 个数可变的位置参数
 2 def fun(*args):
 3     print(args)
 4 fun(10) # 结果为元组
 5 fun(10, 20)
 6 fun(11, 22, 33)
 7 
 8 # 函数定义时的 个数可变的关键字参数
 9 def fun1(**args):
10     print(args)
11 fun1(a=10) #结果为字典
12 fun1(a=10, b=10)
13 fun1(a=11, b=22, c=33)
14 
15 print('hello', 'world', 'Python')
16 
17 '''
18 def fun2(*args, *a):
19     pass
20 以上代码,程序报错,个数可变的位置参数,只能是一个
21 def fun3(**args, **a):
22     pass
23 以上代码,程序报错,个数可变的关键字参数,只能是一个
24 '''
25 
26 def fun2(*args1, **args2):
27     print(args1)
28     print(args2)
29 fun2(1, 2, 3, a=4, b=5)
30 # fun2(a=1, b=2, 3, 4, 5) SyntaxError: positional argument follows keyword argument
31 '''
32 def fun3(**args1, *args2):
33     pass
34 以上代码,程序报错,
35 既有个数可变的位置形参,又有个数可变的关键字形参时
36 要求位置形参在前
37 '''

 

 
posted @ 2022-02-26 13:53  Xxiaoyu  阅读(44)  评论(0编辑  收藏  举报