Python学习笔记(二):函数
2017-10-23 21:11
190 查看
调用函数
abs()
max()
min()
hex() 整数转换成十六进制
数据类型转换
int()
float()
str()
bool()
定义函数
定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回。
def my_abs(x):
if not isinstance(x,(int,float)):
raise TypeError('bad operand type')
if x>=0:
return x
else:
return -x
return None
可以写为return
空函数
def nop():
pass
pass语句可以用作占位符。
参数检查
isinstance()
返回多个值
import math
def move(x, y, step, angle=0):
nx = x + step *math.cos(angle)
ny = y - step *math.sin(angle)
return nx, ny
返回的实际上还是一个单一值,返回的一个tuple
函数的参数
位置参数
函数的形参
默认参数
def power(x=2):
pass
默认是2,可以不填,与默认参数不一样就填参数
默认参数必须指向不可变对象
def add_end(L=None):
if(L==None):
L=[]
L.append('END')
return L
可变参数
1.把一个list或tuple传进来
defcalc(numbers):
sum=0
for n in numbers:
sum=sum+n*n
return sum
calc([1,2,3])
2.参数前加一个*
函数内部接受到一个tuple,使用时可以传递任意数量的参数
defcalc(*numbers):
sum=0
for n in numbers:
sum=sum+n*n
return sum
calc(1,2,3)
关键字参数
可变参数允许传递0个或任意个参数,这些参数在函数内部自动组装成tuple,而关键字参数允许传递0个或任意个含参数名的参数,这些关键字参数在函数内部会自动组装成dict
def person(name, age, **kw):
print('name:', name,'age:', age, 'other:', kw)
命名关键字参数
要限制关键字参数的名字,就可以使用命名关键字。
使用一个特殊分隔符*,*后的参数被视作命名关键字参数
def person(name,age,*,city,job):
print('name:',name,'age:',age,'city:',city,'job:',job)
如果函数定义中已经有一个可变参数,后面的关键字参数就不需要一个特殊分隔符了
命名关键字参数必须要传入参数名,否则就会报错
参数组合
Python中定义函数,可以使用多种参数组合使用,参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。
递归函数
递归函数代替循环,但要注意防止栈溢出
def fact(n):
if(n==1):
return 1
return n*fact(n-1)
尾递归,函数返回时调用自身,并且return不能包含表达式
尾递归调用时,如果做了优化,栈不会增长,因此,无论多少次调用也不会导致栈溢出。
遗憾的是,大多数编程语言没有针对尾递归做优化,Python解释器也没有做优化
def fact(n):
return fact_iter(n,1)
def fact_iter(num,product):
if(num==1):
return 1
return fact_iter(num-1,num*product)
汉诺塔
defmove(n,a,b,c):
if(n==1):
print(a,'-->',c)
else:
move(n-1,a,c,b)
move(1,a,b,c)
move(n-1,b,a,c)
可将B柱视作A柱到C柱的缓冲区(Buffer)
将A柱上的n-1个盘子通过C柱挪到B柱上
将A柱最下面的盘子通过B柱挪到C柱上
将之前的n-1盘子从B柱通过A柱挪到C柱上
abs()
max()
min()
hex() 整数转换成十六进制
数据类型转换
int()
float()
str()
bool()
定义函数
定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回。
def my_abs(x):
if not isinstance(x,(int,float)):
raise TypeError('bad operand type')
if x>=0:
return x
else:
return -x
return None
可以写为return
空函数
def nop():
pass
pass语句可以用作占位符。
参数检查
isinstance()
返回多个值
import math
def move(x, y, step, angle=0):
nx = x + step *math.cos(angle)
ny = y - step *math.sin(angle)
return nx, ny
返回的实际上还是一个单一值,返回的一个tuple
函数的参数
位置参数
函数的形参
默认参数
def power(x=2):
pass
默认是2,可以不填,与默认参数不一样就填参数
默认参数必须指向不可变对象
def add_end(L=None):
if(L==None):
L=[]
L.append('END')
return L
可变参数
1.把一个list或tuple传进来
defcalc(numbers):
sum=0
for n in numbers:
sum=sum+n*n
return sum
calc([1,2,3])
2.参数前加一个*
函数内部接受到一个tuple,使用时可以传递任意数量的参数
defcalc(*numbers):
sum=0
for n in numbers:
sum=sum+n*n
return sum
calc(1,2,3)
关键字参数
可变参数允许传递0个或任意个参数,这些参数在函数内部自动组装成tuple,而关键字参数允许传递0个或任意个含参数名的参数,这些关键字参数在函数内部会自动组装成dict
def person(name, age, **kw):
print('name:', name,'age:', age, 'other:', kw)
命名关键字参数
要限制关键字参数的名字,就可以使用命名关键字。
使用一个特殊分隔符*,*后的参数被视作命名关键字参数
def person(name,age,*,city,job):
print('name:',name,'age:',age,'city:',city,'job:',job)
如果函数定义中已经有一个可变参数,后面的关键字参数就不需要一个特殊分隔符了
命名关键字参数必须要传入参数名,否则就会报错
参数组合
Python中定义函数,可以使用多种参数组合使用,参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。
递归函数
递归函数代替循环,但要注意防止栈溢出
def fact(n):
if(n==1):
return 1
return n*fact(n-1)
尾递归,函数返回时调用自身,并且return不能包含表达式
尾递归调用时,如果做了优化,栈不会增长,因此,无论多少次调用也不会导致栈溢出。
遗憾的是,大多数编程语言没有针对尾递归做优化,Python解释器也没有做优化
def fact(n):
return fact_iter(n,1)
def fact_iter(num,product):
if(num==1):
return 1
return fact_iter(num-1,num*product)
汉诺塔
defmove(n,a,b,c):
if(n==1):
print(a,'-->',c)
else:
move(n-1,a,c,b)
move(1,a,b,c)
move(n-1,b,a,c)
可将B柱视作A柱到C柱的缓冲区(Buffer)
将A柱上的n-1个盘子通过C柱挪到B柱上
将A柱最下面的盘子通过B柱挪到C柱上
将之前的n-1盘子从B柱通过A柱挪到C柱上
相关文章推荐
- Python学习笔记:集合(set)有关函数
- 【python学习笔记】5:在python中写函数
- python核心编程学习笔记-2016-08-13-05-property()函数
- Python学习笔记(五)函数
- [学习笔记]Python 常用函数
- 学习笔记-小甲鱼Python3学习第二十三、二十四讲:函数:这帮小兔崽子、汉诺塔
- Python学习笔记 - 3.函数
- Python 学习笔记(二):时间,函数,异常,面向对象
- 【Python学习笔记】- 函数
- Python学习笔记010——函数文档字符串
- python学习笔记-(7)函数
- python学习笔记之函数及其高级特性
- Python学习笔记 —— 字符串及常用函数
- Python学习笔记——函数参数
- python学习笔记——基础篇(3):函数的定义
- Python3学习笔记4-函数,全局变量&局部变量,内置函数
- Python3学习笔记06-循环设计、循环对象、函数对象、错误处理、动态类型
- python学习笔记:range()函数用法
- Python2.7 学习笔记 (二)—— 函数,模块,正则
- python学习笔记-函数篇