(小甲鱼python)函数笔记合集一 函数(I)总结 函数的基本用法 创建和调用函数 函数的形参与实参等等

一、函数(I)总结

1.创建函数
函数是一种仅在调用时运行的代码块。您可以将数据(称为参数)传递到函数中。函数可以把数据作为结果返回。
在 Python 中,使用 def 关键字定义函数:

>>> def myfunc():
	pass #pass空语句,做一个占位符来使用,比如当我们在规划一个程序要实现什么功能的时候,就会使用pass

>>> myfunc()

2.调用函数
调用定义的函数myfunc()

>>> def myfunc():
	for i in range(3):
		print("I love FishC")

>>> 
>>> myfunc()  #调用定义的函数myfunc()
I love FishC
I love FishC
I love FishC
>>>

3.函数的参数
形式参数、实际参数

形式参数:函数调用的时候写的参数的名字(如:name)
实际参数:调用函数的时候传递进去的值(如:Python)

例1:

>>> def myfunc(name):    #name是形式参数
	for i in range(3):
		print(f"I love {name}.") #前面的f表明是f字符串,然后可以替换掉里面的name字段。f指format格式化,可以把{变量}识别

>>> myfunc("Python")    #函数调用的Python是实际参数
I love Python.
I love Python.
I love Python.

例2:
多个参数,

>>> def myfunc(name,times):
	for i in range(times):
		print(f"I love {name}.")

>>> myfunc("Python",5)      #两个实参,打印5次
I love Python.
I love Python.
I love Python.
I love Python.
I love Python.

4.函数的返回值
调用div(x,y)函数

>>> def div(x,y):
	z=x/y
	return z        #return 返回值

>>> div(4,2)
2.0
>>> def div(x,y):
	return x/y          #没有计算,直接返回

>>> div(4,2)
2.0
>>> def div(x,y):
	if y==0:
		return "除数不能为0"
	else:
		return x/y

>>> div(4,2)   
2.0
>>> div(4,0)   
'除数不能为0'

函数中只要执行了return语句,函数就会立刻马上直接的返回,而不会理会后面是否还有其他语句。

>>> def div(x,y):
	if y==0:
		return "除数不能为0"

	return x/y

>>> div(4,2)
2.0
>>> div(4,0)
'除数不能为0'
>>> 

如果一个函数我们没有通过return语句显示地来返回内容,那么它也会自己执行完函数体中的所有语句之后,悄悄的返回一个none值。

>>> def myfunc():
	pass

>>> print(myfunc())
None

课后题:
1.请至少说出使用函数的两个显著优势?
答:Python 函数的主要作用就是打包代码。

有两个显著的好处:

  • 可以最大程度地实现代码重用,减少冗余的代码。
  • 可以将不同功能的代码段进行封装、分解,从而降低结构的复杂度,提高代码的可读性。

2.请问下面代码中,实参是什么?形参是什么?

>>> def myfunc(x, y):
...     print(x + y)
...
>>> a = 3
>>> b = 5
>>> myfunc(a, b)
8

答:从调用角度来看,参数可以细分为形式参数(parameter)和实际参数(argument)。
其中,形式参数是函数定义的时候写的参数名字(x 和 y);实际参数是在调用函数的时候传递进去的值(a 和 b)。
3.一个函数能够在同时返回多个值吗?
答:可以。
解析:它会将多个返回值打包成元组的形式。

>>> def myfunc():
...     return 1, 2, 3
...
>>> myfunc()
(1, 2, 3)

但你不能将代码写成下面这样:

>>> def myfunc():
...     return 1
...     return 2
...     return 3
...
>>> myfunc()
1

因为 Python 一旦执行了 return 语句,就会立刻返回,从而跳出函数体,而不理会后面是否还有其它语句。
4. 请问下面代码,通过调用 funA() 函数,是否能够间接地调用到 funB() 函数,从而打印出 “Hi~” 呢(注意它们定义的顺序,在定义 funA() 函数的时候,funB() 函数仍未定义)?

>>> def funA():
...     funB()
...
>>> def funB():
...     print("Hi~")
...
>>> funA()
# 这里是否会报错呢?

答:不会报错,可以成功调用。

>>> funA()
Hi
>>> 

解析:通常情况下,定义需要在调用之前,不然会引发 name ‘XXX’ is not defined 的异常。不过有一种例外情况,那就是这个例子中演示的,函数之间相互调用……
进一步分析:
当我们在定义 funA() 函数的时候,并没有对其进行调用,函数体中的代码并没有被挨个儿执行,所以此时 funB() 是否存在,并不重要,它就是个符号~
然后在调用 funA() 函数的时候,函数体中的代码才被真正的执行,此时 funB() 函数早就已经被悄悄定义过了,因此代码才不会报错,这就是其中的缘由!
5.我们说函数是一个相对封闭的个体,那么函数是如何与外部通信的呢?
答:大多数情况下,函数是通过参数和返回值与外部进行通信的。
解析:一般来讲,我们设计函数要力求让其独立于外部,通过参数获取外部的值,再通过返回值输出计算后的结果,这样的作法可以非常好地隔离函数对外部的依赖。

题目来自于小甲鱼python函数(I)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值