本节摘要:函数的定义与调用;函数的参数;位置参赛;默认参数;可变参数;关键字参数;命名关键字参数;多种参数组合使用;递归函数;汉诺塔算法实现
文章目录
函数
函数的调用
调用函数,只需写出函数名(输入参数)即可。
如,求绝对值的函数abs
,只有一个参数。可通过Python官方网站查看文档:
添加链接描述
或在交互式命令行通过help(abs)
查看abs
函数的帮助信息。
>>> help(abs)
如图在 help 界面时,想要回到原本书写界面,按q
就可以了,也可以用Ctrl + z
。
调用abs
函数:
>>> abs(100)
100
>>> abs(-20)
20
>>> abs(12.34)
12.34
调用函数时,若输入的参数数量有误,会报错TypeError
,且python会告知你,abs()
有且仅有1个参数,但你给出了两个:
>>> abs(1, 2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: abs() takes exactly one argument (2 given)
若输入的参数类型有误,也会报错TypeError
,并且给出错误信息:str
是错误的参数类型:
>>> abs('a')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: bad operand type for abs(): 'str'
max
函数max()
可以接收任意多个参数,返回最大值。
比较函数cmp(x, y)
需要两个参数,如果x<y,返回-1,如果x==y,返回0,如果x>y,返回1:
>>> cmp(1, 5)
-1
>>> cmp(5, 5)
0
>>> cmp(5, 2)
1
数据类型转换
Python内置的常用函数还包括数据类型转换函数,例如:
int('14')
14
>>> int(3.14)
3
>>> float('3.14')
3.14
>>> str('3.14')
'3.14'
>>> str('88')
'88'
>>> unicode(100)
u'100'
>>> bool(0)
False
>>> bool(1)
True
bool是Boolean的缩写,只有真(True)和假(False)两种取值
bool函数只有一个参数,并根据这个参数的值返回真或者假。
1.当对数字使用bool函数时,0返回假(False),任何其他值都返回真。
>>> bool(0)
False
>>> bool(1)
True
2.当对字符串使用bool函数时,对于没有值的字符串(也就是None或者空字符串)返回False,否则返回True。
>>> bool('')
False
>>> bool(None)
False
>>> bool('good')
True
3.bool函数对于空的列表,字典和元祖返回False,否则返回True。
>>> a = []
>>> bool(a)
False
>>> a.append(1)
>>> bool(a)
True
4.用bool函数来判断一个值是否已经被设置。
>>> x = raw_input('Please enter a number :')
Please enter a number :
>>> bool(x.strip())
False
>>> x = raw_input('Please enter a number :')
Please enter a number :6
>>> bool(x.strip())
True
函数名即指向一个函数对象的引用,可以把函数名赋给一个变量,相当于给这个函数起了一个“别名”:
>>> a = max # 变量a指向max函数
>>> a(8, 2, 5) # 所以也可以通过a调用max函数
8
总结:
调用函数,需根据函数定义,输入正确的参数。如果调用函数过程中出现错误,需要懂得看英文的错误信息。
【练习】
请利用Python内置的hex()
函数把一个整数转换成十六进制表示的字符串:
# -*- coding: utf-8 -*-
n1 = 255
n2 = 1000
hex()
函数用于将10进制整数转换成16进制,返回16进制数,以字符串形式表示。
【交作业】
n1 = 255
>>> hex(n1)
'0xff'
>>> print hex(n1)
0xff
>>> hex(n2)
'0x3e8'
>>> print hex(n2)
0x3e8
>>> print hex(n1), hex(n2)
0xff 0x3e8
函数的定义
函数定义格式:def 函数名(参数):
,在缩进块中编写函数体,函数的返回值用return语句返回。
例一:自定义一个求绝对值的my_abs函数
>>> def my_abs(x):
... if x >= 0:
... return x
... else:
... return -x
自行测试并调用my_abs
>>> print my_abs(-9)
9
返回结果正确。
例二:定义一个求平方的函数
>>> def power(x):
... return x * x
...
>>> power(99) #函数的调用只需要写出函数名( 输入参数)即可
9801
需要注意的是,一旦执行return语句,则函数执行完毕,并将结果返回。
如果没有return
语句,函数执行完毕后也会返回结果,只是结果为None
。return None
可以简写为return
。
例一:
def foo():
print 123
a = 321 # 无return其实是省略了return None
pirnt foo()
其实,这个函数定义相当于
def foo():
print 123
a = 321
return
pirnt foo()
运行得到结果
123
None
例二:
>>> def baobao():
... sx = 1
...
>>> print baobao()
None
例三:
>>> def baobao():
... if 1 == 2:
... return 1
... sx = 1
...
>>> print baobao()
None
例四:
>>> def baobao(isTrue):
... if isTrue:
... return 1
... sx = 1