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 函数的实例:

过滤出列表中的所有奇数:

def is_odd(n):
  return n % 2 == 1
tmplist = filter(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
newlist = list(tmplist)
print(newlist)
 
 
 

 

#使用内置函数来完成简化

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)))

 

posted @ 2021-05-25 18:33  旧巷里有酒香  阅读(152)  评论(0)    收藏  举报