06函数的基础(定义、传参、lambda匿名函数)

回顾

    1. 条件语句:if elif else , pass
    1. 循环语句:
      1. while 要写终止条件
      1. for 遍历迭代对象
    1. 三种通用操作:
    • break 强制结束循环
    • continue 跳过本次循环
    • else 当循环正常结束就会执行,else 里面的语句
def selFor(iterable):         # 驼峰命名规则 selFor
    for i in iterable:
        print(i)

定义函数

def fun(a):      # def 定义函数关键字
    print('hello',a) # 函数体

传参(5种方法)

不需要传参数
def fun():
    print('hello python')
    print('人生苦短,我用python!')
必备参数
def fun2(a):
    print('必备参数:',a)
fun2('a')
#必备参数:a
可选参数
arg
# *arg
def fun4(*arg):   # 默认将我们传入的参数包装成元组
    print('arg:',arg)
tu = (1,2,3,4,5)
fun4(tu)
#arg:((1,2,3,4,5))
fun4(*tu)
#arg:(1,2,3,4,5)
kwarg
**kwarg
# 传值的时候必须要满足字典的定义: di = dict(a=1)
def fun5(**kwarg): # 默认将我们传入的参数包装成字典
    print('kwarg:',kwarg)
di = dict(a=4)
fun5(a=1,b=2,c=3)
# kwarg:{'a'1,'b':2,'c':3}
fun5(**di)       # 传入字典时必须加上**
# kwarg:{‘a':4}

5种传参混合用时,需要注意的事项:

默认参数,必备参数
def fun6(b,m=2):  # 默认参数必须放到必备参数之后
    print('必备参数:',b)
    print('默认参数:',m)
fun6(1,3)
# 必备参数:1
# 默认参数:3
*arg,默认参数,必备参数
def fun7(b,m=2,*arg):
    print('必备参数:',b)
    print('默认参数:',m)                     
    print('arg:',arg)
fun7(1,2,3,4,5,6,7)
#必备参数: 1
#默认参数: 2
#arg: (3,4,5,6,7)

def fun8(*arg,b,m=2):   # 当*arg写在最前时,后面的参数必须指定
    print('必备参数',b)
    print('默认参数',m)
    print('arg',arg) 

#fun8(1,2,3,4,5,6,7)  报错
fun8(1,2,3,4,5,b=6,m=7)
#必备参数: 6
#默认参数: 7
#arg: (1, 2, 3, 4, 5)

def fun9(*arg,m=2,b):   # 当*arg写在最前时,默认参数可以放到必备参数前面
    print('必备参数',b)
    print('默认参数',m)
    print('arg',arg) 
#fun8(1,2,3,4,5,6,7)  报错

fun9(1,2,3,4,5,b=6,m=7)
#必备参数: 6
#默认参数: 7
#arg: (1, 2, 3, 4, 5)
arg,*kwarg
def fun10(*arg,**kwarg):  # **kwarg ,只能放到最后
    print('arg:',arg)
    print('kwarg:',kwarg)
fun10(1,2,3,4,5,6,7)
#arg:(1,2,3,4,5,6,7)
#kwarg:{}
fun10(1,2,3,4,5,a=6,b=7)
#arg:(1,2,3,4,5)
#kwarg:{'a':6,'b':7}

return

如果函数中没有写return,其实函数运行结束时默认执行了 return None

def fun()
    print('hello')
    print('python')
fun()
#hello
#python

a = fun()
print(a)
# None

return: 返回函数运行的结果
print: 打印输出,只是用来看的

def test_return(a,b):
    if a>b:
        return a
    elif b>a:
        return b
    else:
        return '一样大'

函数结束的标志,只要运行了return,就强制结束了函数,return后面的程序都不会被执行

def test_return(a,b):
    if a>b:
        return a
    elif b>a:
        return b
    else:
        return '一样大'
    print('比较结束')       # 不会被执行
test_return(1,3)
#3

def test_return(a,b):
    if a>b:
        print(a)
    elif b>a:
        print(b)
    else:
        print('一样大') 
    print('比较结束')
test_return(1,3)
#3
#比较结束

return 语句的位置是可选的,不是固定出现再函数的最后,可以自定义在函数中的任何地方

def test_return(a,b):
    return 'zhangge'
    if a>b:
        print(a)
    elif b>a:
        print(b)
    else:
        print('一样大')
test_return(1,3)
#'zhangge'

lambda 匿名函数,没有名字的函数

lambda 简化了函数定义的书写形式,使代码更为简洁,使函数的定义方式更为直观,易理解

lambda的应该场景:

1.有些函数如果只是临时一用,而且它的业务逻辑也很简单时,就没必要用def来定义,这个时候可以用lambda

2.函数都支持函数作为参数,lambda函数就可以应用

#lamdba x(参数) :x+1 (return x+1)
g = lambda x:x+1
g(1)
#2

#传入多个参数
add = lambda x,y:x+y
add(1,2)
#3

#判断偶数?
even = lambda x:x%2==0
even(2)
#True

重点:
1.理解函数的概念和作用
2.熟练掌握函数的定义和调用

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容