关于从自定义函数中的各大知识点及其案例

本文详细探讨了Python自定义函数的各种知识点,包括函数定义、调用、参数类型(无参数、位置参数与默认参数、不定长参数)、多个值返回、多函数配合中的变量作用域和函数嵌套。通过实例介绍了如何在实际编程中应用这些概念,如抽奖小练习、工作量计算器和向上取整数的计算方法。
摘要由CSDN通过智能技术生成

关于从自定义函数中学到的知识点

函数的定义

# 函数名:1. 名字最好能体现函数的功能,一般用小写字母和单下划线、数字等组合
#      2. 不可与内置函数重名(内置函数不需要定义即可直接使用)
def math(x):
# 参数:根据函数功能,括号里可以有多个参数,也可以不带参数,命名规则与函数名相同
# 规范:括号是英文括号,后面的冒号不能丢
    y = 3*x + 5
# 函数体:函数的执行过程,体现函数功能的语句,要缩进,一般是四个空格
    return y
# return语句:后面可以接多种数据类型,如果函数不需要返回值的话,可以省略

函数的调用

举个例子:

def math(x):
    y =  x ** 2 + x
    return y

y=math(10)
print(y)
print(math(10))

那么该怎么调用函数呢,让它发挥作用呢?很简单,就是输入函数名和参数所对应的值=,这个过程在函数里叫作参数的传递(pass)。

同时还有一种无参数的调用,下面将

比如说刚刚的例子,我们希望计算出当x = 10时y的结果,注意看第五、六行的代码,然后直接运行。

math(10)的意思是将整数10赋值给参数x并运行该函数。函数执行完毕后最终返回了y的值即110,然后将这个结果赋值给变量a,再用print()将变量a打印出来。
当然,也可以只用一行代码print(math(10))来表示同样的意思。

参数类型

无参数

def opening():
    print('总有一种味道能温暖你~')
    print('深夜食堂正式开业啦!')
    print('欢迎来自五湖四海的你前来品尝!')
   
opening()
--------------------------------------------------
总有一种味道能温暖你~
深夜食堂正式开业啦!
欢迎来自五湖四海的你前来品尝!

我们可以看到,这里定义了一个opening()函数,但是括号里没有带参数,原因是这个函数的功能是打印出固定的三句话,不需要参数的参与。

需要强调的是,即便是没有参数,我们在调用函数的时候也不能省略括号,如此例中的opening()。

在这个例子里,也不需要return语句,原因是这个函数直接在屏幕打印出内容,不需要返回值。事实上,没有return语句的函数,Python也会在末尾隐性地加上return None,即返回None值。

换句话说,有时候我们需要的只是函数的执行过程(比如打印内容),有时我们需要函数执行完毕的返回结果。

位置参数与默认参数

那接下来,我们来看看有多个参数的情况。
在开业初期,为了吸引人流,你采取的策略是顾客可以任意点菜。但因为人手不足,所以只能为每个人提供一份开胃菜和一份主食和一份甜点。如果写成函数的形式,这个函数就会有三个参数

def menu(appetizer, course, dessert = '绿豆沙'):
    print('一份开胃菜:' + appetizer)
    print('一份主食:' + course)
    print('一份甜品:' + dessert)


menu('话梅花生','牛肉拉面')
print('')
menu('话梅花生','牛肉拉面','银耳羹')
#银耳羹对应参数dessert
-------------------------------------------------
一份开胃菜:话梅花生
一份主食:牛肉拉面
一份甜品:绿豆沙

一份开胃菜:话梅花生
一份主食:牛肉拉面
一份甜品:银耳羹

一个萝卜一个坑,因为前两个位置参数已经有对应的值传递,Python会自动将’银耳羹’传递给参数dessert,替换了默认参数的默认值。

不定长参数

后来呢,盛夏来袭,你觉得卖烧烤是个不错的主意。但问题是每个人点的烤串数量都不同,你也不能限定死数量,这时候【不定长参数】就能派上用场,即传递给参数的数量是可选的、不确定的。

它的格式比较特殊,是一个星号*加上参数名,它的返回值也比较特殊,我们来看看下面的例子。

def menu(*barbeque):
    return barbeque

order = menu('烤鸡翅','烤茄子','烤玉米')
#括号里的这几个值都会传递给参数barbeorder
print(order)
print(type(order))
-------------------------------------------
('烤鸡翅', '烤茄子', '烤玉米')
<class 'tuple'>

你会发现函数返回的是这样的结果:(‘烤鸡翅’, ‘烤茄子’, ‘烤玉米’),我们用type()函数可以知道这种数据类型叫作元组(tuple)。

元组的写法是将数据放在小括号()中,它的用法和列表用法类似主要区别在于列表中的元素可以随时修改,但元组中的元素不可更改

和列表一样,元组是可迭代对象,这意味着我们可以用for循环来遍历它,这时候的代码就可以写成:

def menu(*barbeque):
    for i in barbeque:
        print('一份烤串:' + i)

menu('烤香肠', '烤肉丸')
print(
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hello world !

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值