python基础—day8 函数
函数的创建和调用
定义一个函数
你可以定义一个由自己想要功能的函数,以下是简单的规则:
- 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。
- 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。
- 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
- 函数内容以冒号 : 起始,并且缩进。
- return [表达式] 结束函数,选择性地返回一个值给调用方,不带表达式的 return 相当于返回 None。
- def 函数名(参数列表):
- 函数体
默认情况下,参数值和参数名称是按函数声明中定义的顺序匹配起来的。
函数参数的传递
def fun(arg1,arg2):
print('arg1=',arg1)
print('arg2=',arg2)
arg1=100
arg2.append(10)
print('arg1=',arg1)
print('arg2=',arg2)
n1=11
n2=[22,33,44]
print(n1)
print(n2)
fun(n1,n2) #将位置传参
print(n1)
print(n2)
"""
11
[22, 33, 44]
arg1= 11
arg2= [22, 33, 44]
arg1= 100
arg2= [22, 33, 44, 10]
11
[22, 33, 44, 10]"""
"""在函数调用过程中,进行参数的传递
如果是不可变对象,在函数体的修改不好影响实参的的值 arg1的修改为100,不会影响n1的值
如果是可变对象,在函数体的修改会影响实参的值
arg2的修改,append(10),会影响n2的值
"""
#*为不定长参数,**为字典参数,*args放在左边,**kwargs放在右边
'''def fun1(*args):
print(args)
sum = 0
for i in args:
sum += i
print(sum)
fun1(1,2,3,4,5)'''
def print_fun(*args,**kwargs):
#print(args)
#for i in args:
print(kwargs)
for j in kwargs:
print('{}:{}'.format(j,kwargs[j]))
print_fun(height=180,job='IT',hoboy='girls')
函数的返回值
def fun(num):
odd=[] #存奇数
even=[] #存偶数
for i in num :
if i%2:
odd.append(i)
else:
even.append(i)
return odd,even
#函数的调用
lst=[10,29,34,23,53,55]
print(fun(lst)) #返回一个元组,([29, 23, 53, 55], [10, 34])
"""
函数的返回值
(1)如果函数没有返回值,【函数执行完璧之后,不需要给调用处提供数据】 return 可以省略不写
(2)函数的返回值,如果是一个。直接返回类型
(3)函数的返回值,如果是多个,返回结果为元组
"""
def fun1():
print('hello')
fun1() #hello
def fun2():
return 'hello'
res = fun2()
print(res) #hello
def fun3():
return 'hello','world'
print(fun3()) #('hello', 'world')
函数的参数定义






*关键字形参


变量的作用域



global

递归函数

def fac(n):
if n == 1:
return 1
else:
return n * fac(n-1)
print(fac(6))
#720
斐波那契数列
def fib(n):
if n == 1:
return 1
elif n == 2 :
return 1
else:
return fib(n-1)+fib(n-2)
#斐波那契数列第6位上的数字
print(fib(6))
#输出这个数列的前6位上数字
for i in range(1,7):
print(fib(i))
内置函数

filter(function, iterable)
参数
- function -- 判断函数。
- iterable -- 可迭代对象。
返回值
返回一个迭代器对象
实例
以下展示了使用 filter 函数的实例:
过滤出列表中的所有奇数:
#使用内置函数来完成简化
from functools import reduce
def add(x,y):
return x*y
print(reduce(add,range(1,6)))
#lambda函数
print(reduce(lambda x,y: x*y,range(1,6)))

浙公网安备 33010602011771号