百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

大大雷Python零基础课程——第七节:函数

toyiye 2024-07-09 22:44 11 浏览 0 评论


函数是组织好可以重复使用的一个代码块,能够在编程中有效地提高代码复用率。函数可以有参数,也可以没有参数, 函数的参数可以是任意数据类型,甚至可以将一个函数作为参数传给另一个函数。

函数的定义

函数使用def 关键字来定义,后面紧跟函数名和参数,参数需要写在括号内,换行后开始写函数体,就是这个函数需要处理的事情。

下面我们来写一个简单的函数:

def sum(a, b): # 定义一个加法的函数
    return a+b
  
c = sum(1, 3)
print(c)

上面的代码我们定义了一个比较简单的加法的函数,但是你可能会觉得我直接用a+b也可以计算,为什么非要用函数呢? 用下面的例子我们再看一下:

def sum(a, b): # 定义一个加法的函数
    return a+b
  
c = sum('1', '3')
print(c)

上面代码运行的结果是13,这我们想要的吗?这个当然不是我们加法这个函数想要的结果,那么我们可以再修改一下这个函数:

def sum(a, b): # 定义一个整数加法的函数
    try:
        a,b = int(a), int(b)
    except:
        raise Exception('参数必须为整数')
    return a+b
  
c = sum('1', '3')
print(c)

上面的代码我们将参数a和b强制转换成整数,如果转换失败,说明输入的参数不是数字或者只包含数字的字符串。 对于非法的参数,我们就可以做一个异常处理,将报错信息抛出来。

上面的函数就包含了类型转换,和整数相加, 后面我们需要进行整数加法运算的时候直接调用函数就可以了,不需要再写一遍重复的代码。

函数传参

  1. 没有参数的函数
import datetime
def now(): # 获取当前时间
    return datetime.datetime.now()

print(now())

上面的函数就是一个无参函数,获取时间的时候直接调用now()。

  1. 必需参数
    在定义函数的时候,我们可以提前定义好参数,后面调用函数的时候,参数需要按位置顺序填写。
def get_area(width,height): # 计算面积
    return width*height

area = get_area(3, 5)

上面的函数定义了一个计算面积的函数, 参数依次为宽度和高度。调用的时候需要按位置顺序分别填入宽度和高度的值。 那有没有不需要按顺序传入参数的办法呢?当然有,这个就是指定参数名进行传参:

def get_area(width,height): # 计算面积
    return width*height

area = get_area(height=5, width=3)

上面的代码演示了指定参数名进行关键字传参。那再问一个问题,我们能不能将位置传参和指定参数名传参混合使用呢? 我们来试试:

def get_area(width,height): # 计算面积
    return width*height

area = get_area(3, height=5)
print(area)

上面代码能正常运行,说明是可以混合使用的,那我们再把传参的顺序换一下试试:

def get_area(width,height): # 计算面积
    return width*height

area = get_area(height=5, 3)
print(area)

报错了! 是的,我们把参数位置换了之后,运行出错了。 问题就在于,指定参数名的关键字传参一定要放在位置传参的后面

不定长传参

在有些函数中,参数的数量是不固定的,这个时候我们就需要使用不定长传参

def sum(*args):
    result = 0
    for item in args:
        result += item
    return result

print(sum(1,2,3,4,5,6))

上面的函数我们定义了一个不定长参数,函数会将你传入的所有参数进行相加。

除了不定长的位置传参,也可以使用不定长的关键字传参:

def sum(*args, **kwargs):
    result = 0
    for item in args:
        result += item
    if kwargs.get('minus'): # 如果参数有负号,将结果变成负数
        result = result * -1
    return result
print(sum(1,2,3,4,5,6))
print(sum(1,2,3,4,5,6, minus=True))

上面的函数,除了不定长的位置参数,还定义了不定长的关键字参数。 在调用的时候 minus=True可以传进函数也可以不传。 但是会影响最终的结果。

匿名函数

上面我们讲解的函数都是要使用def关键字指定函数名,在python中还有一种匿名函数--lambda ,不需要写函数名,经常用在一些简单逻辑的处理中。

sum = lambda x, y: x+y
print(sum(10, 20))

上面的两个整数相加,代码就精简了很多。 这里sum是一个变量,这个变量指向的是一个函数。

下面我们再使用一个完全不需要名字的例子

print(list(map(lambda x: x*2, [10,20])))

上面我们就使用一行代码完成了将列表中的每个值乘以2的操作。这里就能体现出来当一些简单逻辑通过一个表达式就能完成的时候,使用lambda匿名函数可以非常精简的处理。

练习作业

  1. 编写一个乘法表的函数,参数中需要指定最大值,比如最大值是9,那么需要打印出,1*1 到 9*9之间的乘法表。
  2. 使用匿名函数获取一个数的平方。
    示例 : 参数为3, 输出结果为:9
  3. 使用不定长参数, 获取所有参数的乘积。

相关推荐

「linux专栏」top命令用法详解,再也不怕看不懂top了

在linux系统中,我们经常使用到的一个命令就是top,它主要是用来显示系统运行中所有的进程和进程对应资源的使用等信息,所有的用户都可以使用top命令。top命令内容量丰富,可令使用者头疼的是无法全部...

Linux 中借助 perf 对 php 程序模拟CPU高的案例分析

导语本文是一篇Linux借助工具分析CPU高的优化案例,没有任何干货内容,很详细的展示了优化CPU高的具体步骤,非常适合初中级读者阅读!...

centos漏洞处理方法(centos podman)

centos服务器最近有诸多漏洞,修复命令及对应的漏洞整理后,分享给大家RHSA-2020:1176-低危:avahi安全更新yumupdateavahi-libsRHSA-2017:326...

Linux上的free命令详解(Buffer和Cache)

解释一下Linux上free命令的输出。下面是free的运行结果,一共有4行。为了方便说明,我加上了列号。这样可以把free的输出看成一个二维数组FO(FreeOutput)。例如:FO[2][1]...

linux 命令行之你真的会用吗?--free 基本用法篇

free命令行统计内存使用率及swap交换分区的使用率数据。是由sourceforge负责维护的,在ubuntu上其包名为procps,这个源码包中,除了free还有ps,top,vmstat,ki...

kong api gateway 初体验(konga github)

kongapigateway初体验(firstsight?)。Kong是一个可扩展的开源API层(也称为API网关或API中间件)。Kong运行在任何RESTfulAPI的前面,并通过插件...

在Ubuntu下开启IP转发的方法(ubuntu20 ip)

IP地址分为公有ip地址和私有ip地址,PublicAddress是由INIC(internetnetworkinformationcenter)负责的,这些IP地址分配给了注册并向INIC提...

基于 Kubernetes 的 Serverless PaaS 稳定性建设万字总结

作者:许成铭(竞霄)数字经济的今天,云计算俨然已经作为基础设施融入到人们的日常生活中,稳定性作为云产品的基本要求,研发人员的技术底线,其不仅仅是文档里承诺的几个九的SLA数字,更是与客户切身利益乃...

跟老韩学Ubuntu Linux系列-sysctl 帮助文档

sysctl一般用于基于内核级别的系统调优,man帮助手册如下。...

如何在 Linux/Unix/Windows 中发现隐藏的进程和端口

unhide是一个小巧的网络取证工具,能够发现那些借助rootkit、LKM及其它技术隐藏的进程和TCP/UDP端口。这个工具在Linux、UNIX类、MS-Windows等操作系统下都...

跟老韩学Ubuntu Server 2204-Linux性能管理-uptime指令帮助手册

uptime指令是每个从事Linux系统工作的相关同学必知必会的指令之一,如下是uptime指令的帮助手册。UPTIME(1)...

Openwrt+Rclone+emby+KODI搭建完美家庭影音服务器

特别声明:本篇内容参考了波仔分享,在此表示感谢!上一篇《Openwrt+emby+KODI搭建家庭影音服务器》只适用影音下载到本地的情形,不能播放云盘中的影音,内容较少,缺少了趣味性,也不直观。...

Linux Shell脚本经典案例(linux shell脚本例子)

编写Shell过程中注意事项:开头加解释器:#!/bin/bash语法缩进,使用四个空格;多加注释说明。命名建议规则:变量名大写、局部变量小写,函数名小写,名字体现出实际作用。默认变量是全局的,在函数...

解决 Linux 性能瓶颈的黄金 60 秒

如果你的Linux服务器突然负载暴增,告警短信快发爆你的手机,如何在最短时间内找出Linux性能问题所在?来看Netflix性能工程团队的这篇博文,看它们通过十条命令在一分钟内对机器性能问题进行诊断。...

跟老韩学Ubuntu Server 2204-Linux性能管理-vmstat指令帮助手册

vmstat可查看ubuntlinux的综合性能,是每个从事Linux人员必知必会、需掌握的核心指令之一。vmstat指令帮助手册如下。VMSTAT(8)...

取消回复欢迎 发表评论:

请填写验证码