1 def print_twice(arg):
2 """
3 打印两次
4 :param arg:
5 :return:
6 """
7 print(arg)
8 print(arg)
9 return arg
10
11 res = print_twice('hello word')
12 print(res)
13
14
15 # 需求:写一个函数,接受两个数,返回这两数的和
16 def my_sum(x, y): # 普通参数
17 print('x=', x, 'y=', y)
18 res = x + y
19 return res
20
21 add = my_sum(1, 2) # 位置参数,传入的实参按照顺序形式一一对应
22 add1 = my_sum(x=1, y=2) # 关键字参数,以形参名=实参名的方式传输
23 add2 = my_sum(y=2, x=1) # 不按照顺序的
24 print(add)
25
26
27 # 需求:写一个函数,接收两个数和一个四则运算符号,返货这两个数运算结果
28 def my_func(x, y, method='+'): # 为默认参数,默认参数放在普通参数后面
29 print('x=', x, 'y=', y, 'method=', method)
30 if method == '+':
31 ress = x + y
32 elif method == '-':
33 ress = x - y
34 elif method == '*':
35 ress = x * y
36 elif method == '/':
37 ress = x / y
38 else:
39 ress = '符号错误'
40 return ress
41
42 add_data = my_func(1, 2, '-')
43 print(add_data)
44
45
46 # 需求:写一个函数返回接受的所有数的和
47 def my_func2(x, *args): # 位置动态参数,将函数接收到的多余的位置参数当作一个元组给args
48 print(args)
49
50 my_func2(1, 2, 3, 4)
51
52
53 def my_func3(**kwargs): # 关键字动态参数,将函数接收到的多余的关键字参数当作一个字典给akwargs
54 print(kwargs)
55
56 my_func3(x=1, y=2, z=3)
57 # {'x': 1, 'y': 2, 'z': 3}
58
59
60 def my_func4(y, **kwargs): # 关键字动态参数,将函数接收到的多余的关键字参数当作一个字典给akwargs
61 print(kwargs)
62
63 my_func4(x=1, y=2, z=3)
64 # {'x': 1, 'z': 3}
65
66
67 def my_func5(x, y, method='+'): # 为默认参数,默认参数放在普通参数后面
68 print('x=', x, 'y=', y, 'method=', method)
69 if method == '+':
70 ress = x + y
71 elif method == '-':
72 ress = x - y
73 elif method == '*':
74 ress = x * y
75 elif method == '/':
76 ress = x / y
77 else:
78 ress = '符号错误'
79 return ress
80
81 add_data = [1, 2, '-'] # 列表
82 print(type(add_data))
83 res = my_func5(*add_data) # 将序列的元素按照位置参数的方式传入函数
84 # => res = my_func(1, 2, '-')
85 print(res)
86
87 add_data1 = {'x': 1, 'y': 2, 'method': '-'} # 字典
88 res1 = my_func5(add_data1['x'], add_data1['y'], add_data1['method'])
89 # =>res = my_func(x = 1, y = 2, method = '-') 字典键值对{键:值}
90 print(res1)
91
92 res2 = my_func5(**add_data1) # 将字典中的元素按照关键字参数形式传入参数
93 # =>res = my_func(x = 1, y = 2, method = '-')
94 print(res2)