Python基础阶段:函数基本概念和操作

  1 # 文件的大小, 会变大
  2 # 代码的冗余度比较大, 重用性比较差
  3 # 代码的可维护性比较差
  4 
  5 # def pFunc():
  6 #     print(1)
  7 #     print(12)
  8 #     print(3)
  9 #     print(14)
 10 #     print(55)
 11 #     print(16)
 12 #     print(7)
 13 #     print(18)
 14 #     print(9)
 15 #
 16 #
 17 # pFunc()
 18 #
 19 #
 20 # pFunc()
 21 
 22 
 23 # def test():
 24 #     print(2 ** 1)
 25 #     print(2 ** 2)
 26 #     print(2 ** 3)
 27 
 28 
 29 # def test2(num):
 30 #     num = 3
 31 #     print(num ** 1)
 32 #     print(num ** 2)
 33 #     print(num ** 3)
 34 #
 35 # test2(3)
 36 
 37 
 38 
 39 # def mySum(num1, num2):
 40 #     print(num1)
 41 #     print(num2)
 42 #     print(num1 + num2)
 43 #
 44 # # mySum(4, 5)
 45 #
 46 #
 47 # mySum(num2=5, num1=6)
 48 
 49 
 50 # def mySum(num1, num2, num3):
 51 #     print(num1 + num2 + num3)
 52 #
 53 # mySum(4, 5, 6)
 54 
 55 
 56 # mySum(num2=5, num1=6)
 57 # def mySum(*t):
 58 #     print(t, type(t))
 59 #     result = 0
 60 #     for v in t:
 61 #         print(v)
 62 #         result += v
 63 #     print(result)
 64 #
 65 # mySum(4, 5, 6, 7)
 66 
 67 
 68 
 69 # def mySum(**kwargs):
 70 #     print(kwargs, type(kwargs))
 71 #
 72 #
 73 # # mySum(1, 2, 3)
 74 # mySum(name="sz", age=12)
 75 # def mySum(a, b, c):
 76 #     print(a + b + c)
 77 #
 78 #
 79 
 80 # def mySum(a, b, c, d):
 81 #     print(a + b + c + d)
 82 #
 83 #
 84 # def test(*args):
 85 #     print(args)
 86 #
 87 #     # 拆包
 88 #     print(*args)
 89 #     # mySum((1, 2, 3, 4))
 90 #     # mySum(args[0], args[1], args[2], args[3])
 91 #
 92 #     mySum(*args)
 93 #
 94 # test(1, 2, 3, 4)
 95 
 96 # def mySum(a, b):
 97 #     print(a)
 98 #     print(b)
 99 #
100 #
101 # def test(**kwargs):
102 #     print(kwargs)
103 #
104 #     # 拆包操作
105 #     # 应该使用 ** 进行拆包操作
106 #     # print(**kwargs)
107 #     # a=1, b=2
108 #     mySum(**kwargs)
109 #     # mySum(a=1, b=2)
110 #
111 # test(a=1, b=2)
112 
113 
114 
115 #
116 # result = sorted([1, 3, 2, 5, 4], reverse=True)
117 # print(result)
118 
119 
120 
121 # def hit(somebody="豆豆"):
122 #     print("我想打", somebody)
123 
124 
125 # def hit(somebody):
126 #     print("我想打", somebody)
127 # hit()
128 
129 
130 
131 
132 
133 # def change(num):
134 #     print(id(num))
135 #     # print(num)
136 #     num = 666
137 #     print(id(num))
138 #
139 #
140 # b = 10
141 # print(id(b))
142 # change(b)
143 # print(b)
144 
145 
146 
147 # def change(num):
148 #     print(id(num))
149 #     num.append(666)
150 #     print(id(num))
151 #
152 #
153 # b = [1, 2, 3]
154 # print(id(b))
155 # change(b)
156 # print(b)
概念&装包拆包
 1 # ------------------------函数的返回值-------------------------------
 2 
 3 
 4 # def mySum(a, b):
 5 #     result = a + b
 6 #
 7 #     return result
 8 #     return 666
 9 #     print("xxx")
10 #     # print(result)
11 #     # print(a + b)
12 #
13 # res = mySum(6, 7)
14 # print(res)
15 
16 # 针对于计算的结果, 不一定想要打印, 就比如, 我要乘以4, 或者  除以5, 外界的业务逻辑来的,
17 print()
18 
19 
20 # def caculate(a, b=1):
21 #     """
22 #     计算两个数据的和, 以及差
23 #     :param a: 数值1, 数值类型, 不可选, 没有默认值
24 #     :param b: 数值2, 数值类型, 可选, 默认值: 1
25 #     :return: 返回的是计算的结果, 元组 : (和, 差)
26 #     """
27 #     he = a + b
28 #     cha = a - b
29 #     return (he, cha)
30 #
31 #
32 # # res = caculate(6, 7)
33 # # he, cha = caculate(6, 7)
34 # # print(he)
35 # # print(cha)
36 #
37 # # help(caculate)
38 #
39 #
40 #
41 # import functools
42 # newFunc = functools.partial(caculate, a=3)
43 # result = newFunc()
44 # print(result)
返回值
  1 # ----------------------------函数的高级使用-----------------------------------
  2 
  3 # 1. 偏函数
  4 #
  5 # def test(a, b, c, d=1):
  6 #     print(a + b + c + d)
  7 #
  8 # # test(1, 2, 3)
  9 #
 10 # # def test2(a, b, c=5, d=1):
 11 # #     test(a, b, c, d)
 12 #
 13 #
 14 # # test2(1, 2)
 15 #
 16 # import functools
 17 #
 18 # newFunc = functools.partial(test, c=5)
 19 # print(newFunc, type(newFunc))
 20 #
 21 # newFunc(1, 2)
 22 
 23 
 24 # numStr = "100010"
 25 # result = int(numStr, base=2)
 26 # print(result)
 27 #
 28 # # 在往后的一段时间内, 我都需要把一个二进制的字符串, 转换成为对应的十进制数据
 29 # import functools
 30 # int2 = functools.partial(int, base=2)
 31 # print(int2(numStr))
 32 
 33 
 34 
 35 # 2. 高阶函数
 36 
 37 
 38 
 39 
 40 # a, b 形参, 变量
 41 # 传递数据, 就是指, 给变量赋值
 42 
 43 # 函数本身, 也可以作为数据, 传递给另外一个变量
 44 # def test(a, b):
 45 #     print(a + b)
 46 #
 47 #
 48 #
 49 # print(test)
 50 # print(id((test)))
 51 #
 52 # test2 = test
 53 # test2(1, 2)
 54 
 55 # l = [{"name": "sz", "age": 18}, {"name": "sz2", "age": 19}, {"name": "sz3", "age": 18.5}]
 56 #
 57 # def getKey(x):
 58 #     return x["name"]
 59 #
 60 # result = sorted(l, key=getKey)
 61 # print(result)
 62 
 63 
 64 # def caculate(num1, num2, caculateFunc):
 65 #     result = caculateFunc(num1, num2)
 66 #     print(result)
 67 #
 68 #
 69 # def sum(a, b):
 70 #     return  a + b
 71 #
 72 # def jianfa(a, b):
 73 #     return  a - b
 74 #
 75 # caculate(6, 2, jianfa)
 76 
 77 
 78 
 79 # 返回函数
 80 
 81 
 82 
 83 
 84 # def getFunc(flag):
 85 #     # 1. 再次定义几个函数
 86 #     def sum(a, b, c):
 87 #         return a + b + c
 88 #     def jian(a, b, c):
 89 #         return a - b - c
 90 #
 91 #     # 2. 根据不同的flag值, 来返回不同的操作函数
 92 #     if flag == "+":
 93 #         return sum
 94 #     elif flag == "-":
 95 #         return jian
 96 #
 97 #
 98 #
 99 # result = getFunc("-")
100 # # print(result, type(result))
101 # res = result(1, 3, 5)
102 # print(res)
103 
104 
105 
106 # 匿名函数
107 
108 
109 # result = (lambda x, y : x + y)(1, 2)
110 #
111 # print(result)
112 #
113 # newFunc = lambda x, y : x + y
114 # print(newFunc(4, 5))
115 
116 
117 #
118 # l = [{"name": "sz", "age": 18}, {"name": "sz2", "age": 19}, {"name": "sz3", "age": 18.5}]
119 #
120 # # def getKey(x):
121 # #     return x["name"]
122 #
123 # # result = sorted(l, key=getKey)
124 # result = sorted(l, key=lambda x: x["age"])
125 # print(result)
126 
127 
128 # 闭包
129 
130 
131 # def test():
132 #     a = 10
133 #     def test2():
134 #         print(a)
135 #
136 #     return test2
137 #
138 #
139 # newFunc = test()
140 # newFunc()
141 
142 
143 
144 # print("---------------------123-------------------------")
145 
146 # def line_config(content, length):
147 #
148 #     def line():
149 #         print("-"*(length // 2) + content + "-"*(length // 2))
150 #     return line
151 #
152 #
153 # line1 =  line_config("闭包", 40)
154 #
155 #
156 # line1()
157 # line1()
158 # line1()
159 # line1()
160 #
161 # line2 = line_config("xxxx", 80)
162 #
163 # line2()
164 # line2()
165 # line2()
166 
167 
168 
169 
170 
171 
172 # def test():
173 #     num = 10
174 #     def test2():
175 #         nonlocal num
176 #         num = 666
177 #         # print(a)
178 #         print(num)
179 #
180 #     print(num)
181 #     test2()
182 #     print(num)
183 #
184 #     return test2
185 #
186 #
187 #
188 # result = test()
189 
190 # result()
191 
192 
193 
194 
195 
196 # def test():
197 #     a = 1
198 #     def test2():
199 #         print(a)
200 #     a = 2
201 #
202 #     # a = 2
203 #
204 #     return test2
205 #
206 # newFunc = test()
207 #
208 # newFunc()
209 
210 # 函数, 什么时候,才会确定, 内部, 变量标识, 对应的值
211 # 当函数被调用的时候, 才会真正的确定, 对应的值, 到底是什么, 之前,, 都是以普通的变量标识名称而存在
212 # def test():
213 #     print(b)
214 #
215 # print("xxxx")
216 # test()
217 
218 
219 
220 
221 
222 
223 
224 
225 
226 
227 
228 
229 
230 # def test():
231 #     funcs = []
232 #     for i in range(1, 4):
233 #         def test2():
234 #             print(i)
235 #         funcs.append(test2)
236 #     return funcs
237 #
238 # newFuncs = test()
239 #
240 # print(newFuncs)
241 #
242 # newFuncs[0]()
243 # newFuncs[1]()
244 # newFuncs[2]()
245 
246 
247 #
248 # def test():
249 #     funcs = []
250 #     for i in range(1, 4):
251 #         def test2(num):
252 #             # num = 1
253 #             def inner():
254 #                 print(num)
255 #             return inner
256 #         funcs.append(test2(i))
257 #     return funcs
258 #
259 # newFuncs = test()
260 #
261 # print(newFuncs)
262 #
263 # newFuncs[0]()
264 # newFuncs[1]()
265 # newFuncs[2]()
高级使用

猜你喜欢

转载自www.cnblogs.com/easyone/p/9440842.html