o5,函数与lambda函数

巨人的肩膀,函数

函数由以下几个部分组成
def 函数名称(参数):
在缩进块里面编写函数体,用return返回值
函数一旦执行到return是就会结束这个函数
类型属于对象,变量是没有类型的
如果没有return语句在函数执行完毕后会返回结果为None

def p(str):
    print(str,end=' ')
    print('a god boy')
x='hi'

p(x)

>>>hi
   a god boy

缺省参数,在定义参数时如果有定义好的参数,那么在调用参数时这些被设定好的参数就会被当成默认值
ps:默认参数务必指向不变对象!

def p(str='emmmm'):
    print(str,end=' ')
    print('a god boy')

p()

>>>emmmm a god boy

如果无法确认将会输入具体多个参数,可以使用*加在参数前面表示,在被调用时这些被输入的参数会自动组装成一个元组
当你打算输入一个列表或者元组时,在调用输入参数时在列表/元组的名称前加一个*就可以数例输入参数

def f(*n):
    for p in n:    
        print (p,end=' ')
f(10,2,3)

>>>10 2 3

如果你写了一个函数def1并保存在了abstest.py文件,在该文件目录下启动解释器
那么你可以通过

form abstest inport ads1

来导入函数

关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。

def p(str):
    print(str,end=' ')
    print('a god boy')
x='hi'

p(x)
print(str)

>>>hi  a god boy
   <class 'str'>

使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。

def p(str1,str2):
    print(str1,end=' ')
    print('a god boy, and',str2)
x='hi'
y='my friend'

p(str2=y,str1=x)

>>hi a god boy, and my friend

命名参数,可以不按顺序直接对参数赋值。

def p(str1,str2):
    print(str1,end=' ')
    print('a god boy, and',str2)

p(str2='hi',str1='my friend')

>>hi a god boy, and my friend

变量在函数中是有作用范围的,分为局部变量和全局变量
访问权限决定于这个变量在哪里赋值。
定义在函数内部的变量拥有局部作用域,该变量称为局部变量。
定义在函数外部的变量拥有全局作用域,该变量称为全局变量。
局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。
如果想在函数内部修改外部变量,可以用globalnonlocal

x='hi'
def p():
    global x
    print(x,end=' ')
    x='a god boy'
    print(x)

p()

>>>hi a god boy

lambda函数

lambda函数,即匿名函数。即,不再使用def语句定义的函数。
而且,lambda函数实际上是一个表达式,函数体比def简单。
lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。
lambda 函数没有所谓的函数名 (function_header),这也是它为什么叫匿名函数。

sumary=lambda a,b: a+b
print(sumary(25,55))

>>>80
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值