(二)Python基础知识-函数

1、定义一个函数

Python 定义函数使用 def 关键字,一般格式如下:

def 函数名(参数列表):
    函数体

2、无返回值函数案例

  • 定义一个无返回值的函数showResult
def showResult(s):
    print("显示:", s)
  • 调用函数showResult
showResult("测试")
  • 输出结果
显示: 数据

3、有返回值函数案例

  • 定义一个有返回值的函数getResult
# 获取结果函数
def getResult(num1, num2):
    return num1 + num2
  • 调用函数getResult
#其中str(int)是python自带的转换成字符串函数
print("返回结果:"+ str(getResult(10, 21)))
  • 输出结果
返回结果:31

4、引用类型与基本数据类型传参的函数的案例

  • 定义一个传入不可变对象实例参数的函数changeBool
def changeBool(a):
    a = True
    print("changeBool函数内值:", a)
  • 调用函数changeBool
b = False
changeBool(b)
print("changeBool函数外值:", b)
  • 输出结果
changeBool函数内值: True
changeBool函数外值: False

可以看到b的值并不会发生改变。


在看下面一个案例:

  • 定义一个# 传入可变对象实例参数的函数changeList
def changeList(val):
    val.append(["1", "2", "3", "4"])
    print("changeList函数内值:", val)
    return
  • 调用函数changeList
myList = ["5", "6"]
changeList(myList)
print("changeList函数外值:", myList)
  • 输出结果
changeList函数内值: ['5', '6', ['1', '2', '3', '4']]
changeList函数外值: ['5', '6', ['1', '2', '3', '4']]

可以看到myList 的值已经发生改变。
原因就在于基本类型和引用类型存储区别

5、匿名函数

所谓匿名,意即不再使用 def 语句这样标准的形式定义一个函数。python 使用 lambda 来创建匿名函数。

  • 定义一个有返回值的匿名函数sum
#求和
sum = lambda arg1, arg2: arg1 + arg2
  • 调用函数getResult
#其中str(int)是python自带的转换成字符串函数
print("匿名函数求和计算结果:"+str(sum(15,12)))
  • 输出结果
匿名函数求和计算结果:27

6、灵活传参方式的函数

调用函数时参数位置可以调换,只要调用时的参数命名与函数参数名一致即可自动对应,如showUserInfo;
可在方法的参数位置设置参数默认值如showUserInfo2,其中的age不传时默认值为18,传参数age时,则为age实际传递的值;
调用函数时,可以设置可设置不定长参数,如showAction。

# 不设置默认值函数
def showUserInfo(age, name):
    print("年龄:" + str(age))
    print("姓名:" + name)
    return

# 设置默认值函数
def showUserInfo2(name, age=18):
    print("年龄:" + str(age))
    print("姓名:" + name)
    return

# 不定长参数
def showAction(arg1,*vartuple):
    print(arg1,end=",")
    for var in vartuple:
        print(var,end=",")
    return
  • 调用函数showUserInfo、showUserInfo2、showAction
print(" ")
showUserInfo(age=30, name="小明")
print(" ")
showUserInfo(name="小红", age=40)

print(" ")
showUserInfo2(name="小黑");
print(" ")

showUserInfo2(name="小黑", age=2);

print("")
showAction("参数1","不定长参数1","不定长参数2","不定长参数3")
print("")
  • 输出结果
年龄:30
姓名:小明
 
年龄:40
姓名:小红
 
年龄:18
姓名:小黑
 
年龄:2
姓名:小黑

参数1,不定长参数1,不定长参数2,不定长参数3

7、完整代码

# 显示结果函数
def showResult(s):
    print("显示:", s)


# 获取结果函数
def getResult(num1, num2):
    return num1 + num2


# 传入不可变对象实例参数
def changeBool(a):
    a = True
    print("changeBool函数内值:", a)


# 传入可变对象实例参数
def changeList(val):
    val.append(["1", "2", "3", "4"])
    print("changeList函数内值:", val)
    return


# 不设置默认值函数
def showUserInfo(age, name):
    print("年龄:" + str(age))
    print("姓名:" + name)
    return


# 设置默认值函数
def showUserInfo2(name, age=18):
    print("年龄:" + str(age))
    print("姓名:" + name)
    return

# 不定长参数
def showAction(arg1,*vartuple):
    print(arg1,end=",")
    for var in vartuple:
        print(var,end=",")
    return

#匿名函数 求和
sum = lambda arg1, arg2: arg1 + arg2

print("====开始执行====")
showResult("数据")

print("返回结果:"+ str(getResult(10, 21)))

b = False
changeBool(b)
print("changeBool函数外值:", b)

myList = ["5", "6"]
changeList(myList)
print("changeList函数外值:", myList)

# 这种方式传参,参数名必须和方法参数名相同,否则不会输出
changeList(val=["7", "8"])

print(" ")
# 变量名位置可以切换,只要保证与函数的变量名称相同即可
showUserInfo(age=30, name="小明")
print(" ")
showUserInfo(name="小红", age=40)

print(" ")
# 缺少参数时,会自动使用默认的参数
showUserInfo2(name="小黑");
print(" ")
# 有参数时,会自动使用传递的参数
showUserInfo2(name="小黑", age=2);

print("")
showAction("参数1","不定长参数1","不定长参数2","不定长参数3")
print("")

print("匿名函数求和计算结果:"+str(sum(15,12)))

print("====执行结束====")

8、总结

与Java相比函数的调用非常灵活,使用也并不复杂。
缺点是,可能出BUG的机率会比较大,所以要特别细心。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值