原创转载请注明出处:http://agilestyle.iteye.com/blog/2327737
调用函数
# abs()
print(abs(100))
print(abs(-20))
print(abs(12.34))
# max()
print(max(1, 2))
print(max(2, 3, 1, -5))
# int()
print(int('123'))
print(int(12.34))
# float()
print(float('12.34'))
# str()
print(str(1.23))
print(str(100))
print(isinstance(str(1.23), str))
print(isinstance(str(100), str))
# bool()
print(bool(1))
print(bool(''))
Console Output
定义一个空函数 —— pass
# 空函数 —— 如果想定义一个什么事也不做的空函数,可以用pass语句
def nop():
pass
参数检查 —— isinstance()
# 参数检查
def my_abs(x):
if not isinstance(x, (int, float)):
raise TypeError('invalid data type')
if x >= 0:
return x
else:
return -x
print(my_abs(-10))
print(my_abs('test'))
Console Output
返回多个值
import math
# 函数可以同时返回多个值,但其实就是一个tuple
def move(x, y, step, angle=0):
a = x + step * math.cos(angle)
b = y - step * math.sin(angle)
return a, b
r = move(100, 100, 60, math.pi / 6)
print(r)
Console Output
递归函数
# 递归函数
def fact(n):
if n == 1:
return 1
return n * fact(n - 1)
print(fact(1))
print(fact(5))
print(fact(100))
Console Output
Note:
- 使用递归函数的优点是逻辑简单清晰,缺点是过深的调用会导致栈溢出。
- 针对尾递归优化的语言可以通过尾递归防止栈溢出。尾递归事实上和循环是等价的,没有循环语句的编程语言只能通过尾递归实现循环。
- Python标准的解释器没有针对尾递归做优化,任何递归函数都存在栈溢出的问题。