Python随堂笔记 函数

本文是Python语言基础的随堂笔记,详细介绍了函数的定义、调用,包括必需参数、关键字参数、默认参数和不定长参数的使用。此外,还探讨了函数参数传递的机制,以及匿名函数(lambda)、递归函数、嵌套函数、装饰器和变量作用域(全局、局部、global和nonlocal关键字)的概念和应用。
摘要由CSDN通过智能技术生成

🌴 2022.04.15 下午

前言

🎬本文章是 【Python语言基础】 专栏的文章,主要是上课的随堂笔记与练习
🔗Python专栏 传送门
💻提示:本文的环境配置是Python3的开发环境。目录顺序以当堂内容(教材)为准,所以并非“1、2、3”
📽本节主要内容:学习Python函数的使用

5 函数

5.1 函数定义和调用

🚀 函数定义

函数是组织好的、可重复使用的、用来实现单一或相关联功能的代码段
函数的使用能提高应用的模块性、代码的重用率和可读性

Python提供了许多内建函数,如input()print()等函数,可以直接在程序中使用,当Python提供的内建函数不能满足要求时,需要用户自定义函数

用户自定义函数的一般格式为:

def 函数名([参数1,参数2,])"""函数说明"""
    函数体
def myHello():
  return "Hello, everyone!"
#myHello()函数的返回结果为"Hello, everyone!"

🚀 函数调用

函数定义完成后,就可以在程序中调用了,函数调用时需要指出函数名称,并传入相应的参数
函数调用时传入的参数称为实际参数,简称实参
在默认情况下,函数调用时传入的实参个数、顺序等必须和函数定义时形参的个数、顺序一致
函数调用时的执行顺序如下:

  1. 执行函数调用前的语句
  2. 执行函数调用,运行被调用函数内的语句,并返回相应结果
  3. 执行函数调用后的语句

定义一个求梯形面积函数并调用

#定义函数.
def echelonArea(top,bottom,height):    #3个形参:top上底,bottom下底,height高
   area = 1 / 2 * (top + bottom) * height #计算梯形面积
   return area                              
if __name__ == "__main__":
   t = 3.6; b = 6.2; h = 4.5   
   area1 = echelonArea(t,b,h)        	
   print("area1 =",area1)  
   area2 = echelonArea                      	
   print("area2 =",area2(t,b,h))                
'''
area1 = 22.05
area2 = 22.05
'''

5.2 函数参数

5.2.1 参数传递

定义一个函数Swap(x,y),实参为数字类型。在函数Swap(x,y)中交换2个形参的值,观察函数外面的实参变化情况

#定义函数
def Swap(x,y):                           #2个形参:x、y
   print("交换前:x = %d, y = %d"%(x,y))
   x,y = y,x                                 #交换2个形参(x、y)的值
   print("交换后:x = %d, y = %d"%(x,y))
a = 5; b = 6                                 #定义变量a、b
print("调用前:a = %d, b = %d."%(a,b))
Swap(a,b)                                    #调用函数Swap()
print("调用后:a = %d, b =%d."%(a,b))
'''
调用前:a = 5, b = 6
交换前:x = 5, y = 6
交换后:x = 6, y = 5
调用后:a = 5, b = 6
'''

由此可见,和C++、JAVA同理,形参的改变不会影响实参

定义一个函数changeList(myList),实参为列表。在函数调用中给列表myList添加了一个新元素,观察函数外面的实参变化情况

#定义函数
def changeList(myList):               	
  myList.append(4)                     	
list1 = [1,2,3]                            	           	
print("调用前list1:",list1)
changeList(list1)
print("调用后list1:",list1)
'''
调用前list1: [1, 2, 3]
调用后list1: [1, 2, 3, 4]
'''

不可变类型: 类似 C++ 的值传递,如整数、字符串、元组。如 fun(a),传递的只是 a 的值,没有影响 a 对象本身。如果在 fun(a) 内部修改 a 的值&

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值