函数定义
使用def定义函数。
def myfunction():
print('my function')
myfunction() #my function
参数
参数定义在函数“()”内,多个参数由“,”隔开。
可以定义默认参数,当没有值传递时使用默认参数。
def sum(num1=0,num2=1):
result = num1 + num2
print(result)
sum(3,5) #8
sum() #1
关键字参数可以通过命名来指定其中的参数。(名字并非位置)
def func(a=1,b=2,c=3):
print('a = ',a,'b = ',b,'c = ',c)
func(3,5) #('a = ', 3, 'b = ', 5, 'c = ', 3)
func(a=8,c=10) #('a = ', 8, 'b = ', 2, 'c = ', 10)
func(b=2,a=0) #('a = ', 0, 'b = ', 2, 'c = ', 3)
可变参数使用“*”定义,可以一次传递多个参数。
def number(*num):
print('个数:',len(num)) #6
print('参数2:',num[1]) #2
number(1,2,3,4,5,6)
返回
返回值使用return。
如果没有写return或return没有搭配其他值,则返回None。
def sum(num1,num2):
result = num1 + num2
return(result)
print(sum(3,5)) #8
函数文档
记录程序的内容使其更容易理解,并且可以通过调用“.doc”查看。
def sum(num1,num2):
'返回数值的和'
result = num1 + num2
return(result)
print(sum(3,5)) #8
print(sum.__doc__) #返回数值的和
局部与全局变量
函数内定义的变量为局部变量。
可以使用global语句在函数内声明修改全局变量。
a=10
def func():
global a
a=5
print(a) #5
func()
内嵌函数
内部函数的作用域都在外部函数之内,故不能在外部函数外调用内部函数
def func():
print('调用func()')
def func1():
print('调用func1()')
func1()
func()
#调用func()
#调用func1()
闭包
def funx(x):
def funy(y):
return x * y
return funy
print(funx(8)(5)) #40
匿名函数
使用lambda表达式,冒号前是变量,冒号后是表达
def ds(x):
return 2 * x + 1
print(ds(5)) # 11
lambda x : 2 * x + 1
g = lambda x : 2 * x + 1
print(g(5)) # 11
内置函数
filter过滤器,返回为True的内容
def odd(x):
return x % 2
temp = range(10)
show = filter(odd,temp)
print(list(show)) #[1, 3, 5, 7, 9]
使用匿名函数,一个语句实现
print(list(filter((lambda x : x % 2 ),range(10)))) #[1, 3, 5, 7, 9]
递归
满足以下两点:
(1)有调用函数自身的行为
(2)有一个正确的返回条件
修改默认递归层数
import sys
sys.setrecursionlimit(1000)
递归实现数字阶乘求解
def factorial(n):
if n == 1:
return 1
else:
return n*factorial(n-1)
print(factorial(5)) #120