Python基础阶段:函数基本概念和操作
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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)
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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)
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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]()