ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## 函数 [TOC] >[info] #### 基础系统函数 ~~~ >>>abs(-10) # 10 取绝对值 >>>cmp(x,y) #就需要两个参数,如果x<y,返回-1,如果x==y,返回0,如果x>y,返回1 >>>int("10"), float("1.25"),str(123), unicode(100),bool(1), >>>int(float("12.2")) #浮点型转整型 ~~~ * 函数相当于一个别名,可以赋值给某变量 ~~~ >>>a = abs >>>a(-99) 99 ~~~ >[info] #### 定义函数 * 标准定义函数,以冒号:开始 ~~~ def calc(x): return x ~~~ >[info] #### 使用函数默认值 ~~~ def add(a, b=10) : return a + b print add(10) #相当于10+10 def dec(a, b = 1, c = 2): return a - b - c print dec(10, c=3) #使用默认值可以不按顺序来,相当于10-1-3 = 7 ~~~ * 常见问题 ~~~ def add_end(L = []): L.append("A") return L print add_end() print add_end() print add_end() ['A'] ['A', 'A'] ['A', 'A', 'A'] ~~~ * 如何解决呢? ~~~ def add_end(L = None): if L is None: L = [] L.append("A") return L print add_end() print add_end() print add_end() ['A'] ['A'] ['A'] ~~~ >[info] #### 可变参数 * 加*变成可变参数 * 可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple ~~~ def calc(*numbers): sum = 0 for n in numbers: sum = sum + n * n return sum >>> calc(1, 3, 5, 7) 84 >>> nums = [1, 2, 3] >>> calc(*nums) 14 ~~~ >[info] #### 关键字参数 * 用两个**表示 * 关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict ~~~ def person(name, age, **kw): print 'name:', name, 'age:', age, 'other:', kw ~~~ ~~~ >>> person('Bob', 35, city='Beijing') name: Bob age: 35 other: {'city': 'Beijing'} ~~~ >[info] #### 参数组合 * 参数定义的顺序必须是:必选参数、默认参数、可变参数和关键字参数。 ~~~ def func(a, b, c=0, *args, **kw): print 'a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw ~~~ ~~~ >>> func(1, 2, 3, 'a', 'b', x=99) a = 1 b = 2 c = 3 args = ('a', 'b') kw = {'x': 99} ~~~ >[info] 小结 * 默认参数一定要用不可变对象,如果是可变对象,运行会有逻辑错误! * *args是可变参数,args接收的是一个tuple; * **kw是关键字参数,kw接收的是一个dict。