python函数理解,python 深入理解函数

源代码:

def main(w_face,w_body):

return("我的身材:"+face(w_face)+body(w_body))

#main('青青','子衿')

print(main('青青','子衿'))

def face(name):

return(name+'脸蛋')

def body(name):

return(name+'身材')

报错:

line 2, in main

return("我的身材:"+face(w_face)+body(w_body))

NameError: name 'face' is not defined

遵循函数先定义,后调用的原则,改动如下:

正解:

def face(name):

return(name+'脸蛋')

def body(name):

return(name+'身材')

def main(w_face,w_body):

return("我的身材:"+face(w_face)+body(w_body))

#main('青青','子衿')

print(main('青青','子衿'))

#》》我的身材:青青脸蛋子衿身材

结语:类比C语言:函数的实参是“单向值”传递给形参。

return的一个特别的用法,我们看到前面所有的return语句,都是返回1个值,如果要返回多个值,我们该怎么办呢?

看这段代码:

def face(name):

return name + '的脸蛋'

def body(name):

return name + '的身材'

print('我的身材:'+face('古天乐') +' + ' + body('孔明'))

在这段代码中,我们定义了两个函数,每个return语句分别返回关于“脸蛋”和“身材”的值。如果要一次性返回这两个值,我会这样做,先看代码:

def lover(name1,name2):

face = name1 + '的脸蛋'

body = name2 + '的身材'

return face,body

a=lover('古天乐','孔明')

print('我的身材:'+a[0]+' + '+a[1])

#》》我的身材:古天乐的脸蛋 + 孔明的身材

为什么要这样写,第7行代码是啥意思?怎么看上去像是列表?你大概有这样的疑惑了吧?

我们先来看看,一次性返回的两个值,是什么数据类型。

def lover(name1,name2):

face = name1 + '的脸蛋'

body = name2 + '的身材'

return face,body

a=lover('古天乐','孔明')

print(a)

#》》('古天乐的脸蛋', '孔明的身材')

是 (‘古天乐的脸蛋’, ‘孔明的身材’) 这样一个元组,对不对?

事实上,Python语言中的函数返回值可以是多个,而其他语言都不行,这是Python相比其他语言的简便和灵活之处。

一次接受多个返回值的数据类型就是元组

而元组与列表其实都是数据的“序列”,元组取某个位置的值的操作,与列表是一模一样的,即tuple[]。也是因此,我们会这样去写代码:

def lover(name1,name2):

face = name1 + '的脸蛋'

body = name2 + '的身材'

return face,body

a=lover('古天乐','孔明')

#此时return的值为元组 a = ('古天乐的脸蛋', '孔明的身材')

print('我的身材:'+a[0]+' + '+a[1])

#》》我的身材:古天乐的脸蛋 + 孔明的身材

最后需要再强调的是,没有return语句的函数会默认返回None值。观察结果。

#第一个函数

def fun():

a ='I am coding'

print(fun())

#第二个函数

def fun():

a='I am coding'

return a

print(fun())

#》》

None

I am coding

第一个函数因为没有return语句,返回None值,所以打印出None。

此外,return还有一个“副作用”:一旦函数内部遇到return语句,就会停止执行并返回结果。

def fun():

return 'I am coding.'

return 'I am not coding.'

print(fun())

#》》I am coding.

函数内部遇到第一个return就会返回,所以只会打印出’I am coding’。

ebe7da380611d2c1d58eec58641e4456.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值