您的位置:首页 > 编程语言 > Python开发

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柱上 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python python入门 函数