Python学习笔记之(三)
2014-03-04 14:51
260 查看
函数
在python中,定义一个函数需要使用 def 语句 ,最后面还需一个 :
若想定义一个空函数,缩进函数块内使用 pass 语句。
isinstance函数:python内置函数,用于数据类型检查,返回bool类型
python中的函数有四种参数:必选参数,默认参数,可变参数,关键字参数,当这4种参数一起使用时,必须按照该顺序定义。
默认参数:
默认参数可以简化函数的调用,例:
此处的默认参数为n = 2 ,当使用2次方时就不必写出第二个参数。
当调用有多个默认参数的函数时,若按默认顺序调用不必谢参数名,如果不按顺序或调用部分参数,则需写参数名
注:1.必选参数在前,默认参数在后。2.默认参数需指向不可变对象,若指向可变对象(如list),会导致对象变换,出现逻辑错误。
可变参数:
传入参数的个数是可变的,0个或任意个
如果参数本来就是一个list或tuple:
可使用
或使用*nums
允许传入0个或任意个含参数名的参数,这些关键字参数在函数内部组成一个dict
在python中,定义一个函数需要使用 def 语句 ,最后面还需一个 :
若想定义一个空函数,缩进函数块内使用 pass 语句。
isinstance函数:python内置函数,用于数据类型检查,返回bool类型
>>> def my_abs(x): if not isinstance(x,(int, float)): raise TypeError('bad operand type') if x >= 0: return x else: return -x
python中的函数有四种参数:必选参数,默认参数,可变参数,关键字参数,当这4种参数一起使用时,必须按照该顺序定义。
默认参数:
默认参数可以简化函数的调用,例:
>>> def power(x, n=2): s = 1 while n > 0: s = s*x n = n-1 return s >>> power(2) 4 >>> power(2, 3) 8
此处的默认参数为n = 2 ,当使用2次方时就不必写出第二个参数。
当调用有多个默认参数的函数时,若按默认顺序调用不必谢参数名,如果不按顺序或调用部分参数,则需写参数名
注:1.必选参数在前,默认参数在后。2.默认参数需指向不可变对象,若指向可变对象(如list),会导致对象变换,出现逻辑错误。
可变参数:
传入参数的个数是可变的,0个或任意个
>>> def calc(*numbers): sum = 0 for x in numbers: sum = sum + x*x return sum >>> calc(1,2,3) 14 >>> calc() 0在函数内部,*numbers接收到的是一个tuple
如果参数本来就是一个list或tuple:
可使用
>>> nums = [1,2,3]
>>> calc(nums[0], nums[1]) 5
或使用*nums
>>> calc(*nums) 14关键字参数
允许传入0个或任意个含参数名的参数,这些关键字参数在函数内部组成一个dict
>>> def person(name, age, **kw): print 'name:', name, 'age:', age, 'other:', kw >>> person('x', 30) name: x age: 30 other: {}可扩展函数功能:
>>> person('x', 18, city = 'nanjing', job ='play') name: x age: 18 other: {'city': 'nanjing', 'job': 'play'}参数本来就是dict:
>>> kw = {'city':'nanjing', 'job':'play'} >>> person('x', 18, city = kw['city'], job = kw['job']) name: x age: 18 other: {'city': 'nanjing', 'job': 'play'}
或使用**kw:
>>> person('x', 18, **kw) name: x age: 18 other: {'city': 'nanjing', 'job': 'play'}
递归函数:
递归思想略过不提
递归过深容易造成栈溢出。
原因:由于函数调用是通过栈(stack)这种数据结构实现的,每当调用一个函数,就会加一层栈帧,每当返回一个函数,就减小一个栈帧。
使用尾递归,编译器可进行优化,可以避免栈溢出(python没有优化,还是会溢出)
尾递归即时循环
>>> def fact(n): return fact_iter(1,1,n)
>>> def fact_iter(product, count, max): if count > max: return product else: return fact_iter(product*count, count+1, max)
相关文章推荐
- python学习笔记之语言、调试、语法、变量、表达式
- python学习笔记(七) - 面向对象高级编程
- 【Python学习笔记】Python数据类型和变量
- Bottle: Python Web Framework 学习笔记
- Python-基础学习笔记(六)
- 学习笔记1—在VSCode中召唤Python的正确姿势
- python 学习笔记(2)
- Python学习笔记(数字)
- Python学习笔记_Python基础
- Python学习笔记 - 2.条件执行
- Python学习笔记:GUI基本框架
- python学习笔记23(时间与日期 (time, datetime包))
- ”Python开发简单爬虫“慕课网课程学习笔记1
- 【Python】学习笔记——-2.0、Python基础
- Python学习笔记2:构造序列:列表推导和生成器表达式
- 深度学习所需的python-学习笔记6
- 【Python学习笔记】调用函数
- Python学习笔记———《列表操作》
- Python学习笔记(四十)— 内置模块(9)HTMLParser
- 初识python 学习笔记系列1