今天咱们继续学习新一课,调用函数 def 的用法,咱们先来看例子:
def name():
print('xiao xin')
name()
name()
def 的用法规则就是这样,小括号不能省,小括号里可以有内容也可以没有内容,这里我们稍候代入例子来讲,后面还要接冒号,后面的代码就是调用的代码,咱们只用输入 name(),就可以调用上面的代码了。
就是像是收纳箱一样,咱们分类了的东西,放入到了一个name()的箱子里,咱们要用到它时,直接输入箱子的名字name(),就能找出里的东西了。
好了,咱们在这个简单的例子上加一点东西,让它丰富起来:
def name(you):
print(you.title()+' it is time to go home')
name('xiao xin')
这里的you叫作形参,'xiao xin'则为实参,这里实参替换了形参,打印出了结果,这里的实参可以换成任意其它的值,也可以无限次的调用。
不知道有没有把大家绕晕呢?反正我当时学到这里,我一下子就联想到了之前学到的input()了,毕竟机器不与人互动,那就太没意思了,于是我直接修改了一条代码,就得到了我想要的结果:
def name(you):
print(you.title()+' it is time to go home')
name(input('you name'))
上图是代码和结果,我在这里提到这个事,是希望大家把之前讲过的东西拿出来用用,填鸭式的学习很呆,也会慢慢丧失兴趣。
实际上的使用中可能包含多个形参,因此函数调用中也可能包含多个实参。向函数传递实参的方式很多,可使用位置实参,这要求实参的顺序与形参的顺序相同;也可使用关键字实参,其中每个实参都由变量名和值组成;还可使用列表和字典。
我们先来看看位置实参:
def parents(left,right):
print('on the left is '+left)
print('\non the right is '+right)
parents('father','mother')
其实就是一一对应,顺序不能有错,中间用逗句隔开,其它的都和开头一样,没有太多难点。
我们再来看看关键字实参,用它就不用考虑顺序的问题:
def parents(left,right):
print('on the left is '+left)
print('\non the right is '+right)
parents(right='mother',left='father')
有点像赋值的感觉,在关键字实参中一定要准确的知道形参名,不然就会报错了。
如果从最开始就知道其中一个形参对应的实参,我们还可以把它简化一下:
def parents(left,right='mother'):
print('on the left is '+left)
print('\non the right is '+right)
parents('father')
这里要注意的是,要按照顺序,如果我们把 def parents(left,right='mother')
改成 def parents(right='mother',left) ,运行代码就会发现出错,当然我们也可以用关键字来进行指定。
调用函数def 也可以和if 结合使用,现在我们的名字中有个字的,也有三个字的,我们利用def 来试着写一写:
def name(first_name,last_name,middle_name=''):
if middle_name:
name = first_name +' '+ middle_name + ' '+last_name
print(name)
else:
name = first_name+' '+last_name
print(name)
name('yuan','xin','xiao')
name('xiao','xin')
这里有两个细节:1.我没有用到关键字实参,所以我把middle_name放在了最后
2.middle_name=' ' 给了它一个字符串
3.middle_name如果不为空,则为True
其它的应该都好理解了,我就不细讲了。
下面还有def与while、列表以及字典的一块用法,我们下节再讲。