在python中、正确的函数定义格式为_Python函数的定义与实现

1. 函数的介绍

函数是 实现具有特定功能的代码块

Python中预制了许多内置函数,也可以根据自己的需求创建自定义的函数

隐藏实现功能的细节

代码的复用

提高可读性,便与调试

def 函数名(形参1, 形参2...):

要运行的代码块(函数体)

return 返回的数据(返回值)

函数名要有描述性,建议使用下划线的格式: 动作_描述()

在函数体内定义的变量是局部变量,只能作用于该函数

2. 形参和实参

2.1 形参/实参介绍

# 定义一个简单的问候函数

def print_hello(username):

print("hello,{}".format(username))

# 调用函数,传入参数

print_hello("world")

-- run --

hello,world

以上示例中,变量 username是一个形参 :函数完成其工作所需的一项信息,在调用函数中,值 "world"是一个实参 :实参是调用函数时传递给函数的信息,将实参传递给函数 print_hello() ,这个值被存储在形参 username 中

函数定义中可能包含多个形参,因此函数调用中也可能包含多个实参,接下来会介绍向函数传递实参的方式

2.2 位置实参

位置实参:要求实参的顺序与形参的顺序对应

定义:def 函数名(形参1, 形参2, 形参3):

调用:函数名(实参1, 实参2, 实参3)

位置实参的顺序很重要,如果实参的顺序与形参不相同,最终的函数结果可能出乎意料

# 定义一个宠物信息函数

def pet_describe(pet_type, pet_name):

"显示宠物类型和名字"

print("我的宠物是一只{},它的名字是{}".format(pet_type, pet_name))

# 实参与形参顺序相同

pet_describe("猫", "大橘")

# 实参与形参的顺序不同

pet_describe("大橘", "猫")

-- run --

我的宠物是一只猫,它的名字是大橘

我的宠物是一只大橘,它的名字是猫

2.3 关键字实参

关键字实参:每个实参都由变量名和值组成

定义:def 函数名(形参1, 形参2, 形参3):

调用:函数名(形参2=实参2, 形参3=实参3, 形参1=实参1)

关键字实参是传递给函数的 名称-值 对,直接在实参中将名称和值关联起来,因此无需考虑函数调用中的实参顺序

# 接着用上面位置实参的示例

def pet_describe(pet_type, pet_name):

"显示宠物类型和名字"

print("我的宠物是一只{},它的名字是{}".format(pet_type, pet_name))

# 明确指出了各个实参对应的形参,无需关注参数顺序

pet_describe(pet_type="猫", pet_name="大橘")

pet_describe(pet_name="大橘", pet_type="猫")

-- run --

我的宠物是一只猫,它的名字是大橘

我的宠物是一只猫,它的名字是大橘

使用关键字实参时,务必准确的指定函数定义中的形参名

2.4 混合传参

使用位置实参与关键字实参混合使用的方式

使用混合传参时,关键字参数必须在位置参数后面

# 位置参数要放在最前面

def pet_describe(pet_type, pet_name, age):

"显示宠物类型和名字"

print("我的宠物是一只{},它的名字是{},今年{}岁".format(pet_type, pet_name, age))

pet_describe("猫", age=1, pet_name="大橘")

-- run --

我的宠物是一只猫,它的名字是大橘,今年1岁

2.5 限制位置实参

定义:def 函数名(形参1, *, 形参2, 形参3):

调用:函数名(实参1, 形参2=实参2, 形参3=实参3)

星号 * 代表之后所有参数传参时 必须使用关键字传参

# *号之后的都必须使用关键字传参法,否则报错

def pet_describe(pet_type, *, pet_name, age):

"显示宠物类型和名字"

print("我的宠物是一只{},它的名字是{},今年{}岁".format(pet_type, pet_name, age))

pet_describe("猫", "大橘", 1)

-- run --

Traceback (most recent call last):

File "D:\Python\imooc\2.Python函数与模块\2.1.函数的定义与实现\2.1.1.function\test.py", line 5, in

pet_describe("猫", "大橘", 1)

TypeError: pet_describe() takes 1 positional argument but 3 were given

# 类型错误:pet_describe()接受1个位置参数,但给出了3个

2.6 设置参数的默认值

定义:def 函数名(形参=默认值):

在定义函数时,可以根据需要给指定的形参设置默认值

在调用函数中如果给该形参提供了实参,则使用指定的实参值,否则使用形参的默认值

设置默认值时,在形参列表中必须 先列出没有默认值的形参 ,再列出有默认值的形参 ,这让Python依然能够正确的解读位置实参

# 给设置了默认值的形参指定实参时,也可以用位置实参

def pet_describe(pet_name, age, pet_type="猫"):

"显示宠物类型和名字"

print("我的宠物是一只{},它的名字是{},今年{}岁".format(pet_type, pet_name, age))

pet_describe("大橘", 1)

pet_describe("大白", 0.5, "狗")

-- run --

我的宠物是一只猫,它的名字是大橘,今年1岁

我的宠物是一只狗,它的名字是大白,今年0.5岁

定义:def 函数名(形参=''):

通过给形参设置空字符串的默认值后,实参就变成可选的了,这样使用函数就只需要在必要时才提供额外的信息

# 姓 + 名 + 中间名(可选)组成完整的名字

def get_formatted_name(first_name, last_name, middle_name=''):

"返回完整的姓名"

if middle_name:

full_name = "{} {} {}".format(first_name, middle_name, last_name)

else:

full_name = "{} {}".format(first_name, last_name)

return full_name.title()

print(get_formatted_name("jimi", "hendrix"))

print(get_formatted_name("john", "hooker", "lee"))

-- run --

Jimi Hendrix

John Lee Hooker

2.7 使用序列传参

调用:函数名(*序列名)

序列不是Python中的某一种数据类型,而是一种数据结构的统称,如: 列表、元组、数字序列、字符串等 都称为序列,具体请移步 Python序列

# 定义一个简单的数学计算函数

def calc(a, b, c):

d = (a + b) * c

return d

# 位置传参

print(calc(1, 5, 10))

# 使用列表序列传参

num_list1 = [2, 4, 6]

print(calc(*num_list1))

-- run --

60

36

# 函数内定义了遍历语句,所以列表元素是依次传入,不需要加*

def greet_users(names):

"问候列表中的每个用户"

for name in names:

print("Hello,{}".format(name))

username = ["张三", "李四", "王五"]

greet_users(username)

-- run --

Hello,张三

Hello,李四

Hello,王五

2.8 使用字典传参

调用:函数名(**字典名)

使用字典传参时,类似于关键字传参,字典key的排列顺序无需对应形参的顺序,但是两者的名称、数量必须一致

# 定义一个简单员工信息函数

def fun_dict(name, hiredate, tel, dept):

print("{p1}隶属于{p4},电话:{p3},入职如期:{p2}".format(p1=name, p2=hiredate, p3=tel, p4=dept))

# 字典传参,key的名称要和形参对上,key的数量也要和形参数一致

dict1 = {'name':'张三','hiredate':'2020-06-27','dept':'技术部','tel':13012345678}

fun_dict(**dict1)

-- run --

张三隶属于技术部,电话:13012345678,入职如期:2020-06-27

3. 函数的返回值

3.1 函数中的return

参数是函数的输入数据,而返回值则是函数的输出结果

return 不是必须的,return语句 执行后,函数将中断执行

return解释.png

无return的函数.png

return与print区别.png

上述回答来自知乎用户“sqybi”,个人觉得通俗易懂,就摘录下来了,感谢大佬的解惑!

# 示例1:print

def print_hello():

print("hello")

print_hello()

str1 = print_hello()

print(str1)

-- run --

hello

hello

None

# 示例2:return

def print_hello():

return "hello"

print_hello()

print(print_hello())

str2 = print_hello()

print(str2)

-- run --

hello

hello

上述示例中,print是将结果打印在标准输出(屏幕)上,所以直接调用函数名就能执行打印;return是将结果保存至内存,打印时需要借助print函数

使用print的函数赋值时,由于没有返回值,仅有打印屏幕的操作,所以赋值变量返回的是 None ;而使用return的函数赋值时,将保存在内存中的返回值赋值给变量,所以赋值变量有返回值

3.2 返回值包含多个数据

在函数内定义嵌套字典,调用函数时使用不同的索引就可以获取多个返回数据

# 定义一个包含公司内信息的嵌套字典函数(仅列举部分信息)

def get_detail_info():

dict1 = {

"employee": [

{"name": "张三", "salary": 3000},

{"name": "李四", "salary": 4000}

],

"device": [

{"id": "88888888", "title": "xx笔记本"},

{"id": "66666666", "title": "xx台式机"}

],

"...": [{}, {}],

"......": [{}, {}]

}

return dict1

# 获取员工张三的薪资信息

d = get_detail_info()

sal = d.get("employee")[0].get("salary")

print(sal)

# 获取xx台式机设备的id号

dev = d.get("device")[1].get("id")

print(dev)

-- run --

3000

66666666

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/507607.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机连接交换机配置命令,[计算机]交换机配置命令.doc

[计算机]交换机配置命令交换机配置命令集锦1、 进入全局配置模式1、Switch-3548 > enablePassword : ********Switch-3548 # config tSwitch-3548 (config) #2、 启用交换机的HTTP Server2、Switch-3548 (config) # ip http server3、 配置主机名3、Switch-3548 (config) # …

二维码编码规范解读

1 QR码符号的结构 QR 码符号的结构如下: 1.1 定位图案 Position Detection Pattern是定位图案,用于标记二维码的矩形大小。这三个定位图案有白边叫Separators for Postion Detection Patterns。之所以三个而不是四个意思就是三个就可以标识一个矩形了…

最早单机的计算机操作系统,川农《计算机操作系统(本科)》19年12月在线作业【满分答案】...

可做奥鹏全部院校作业论文!答案请添加qq:599792222 或 微信:1095258436川农《计算机操作系统(本科)》19年12月在线作业【满分答案】试卷总分:100 得分:100一、单选题 (共 20 道试题,共 100 分)1.在单一处理机上执行程序,多道程序…

pythonopencv提取圆内图像_python – 使用OpenCV从图像中提取多边形给定...

使用cv2.fillConvexPoly以便您可以指定2D点阵列并定义一个蒙版,该蒙版填充由这些点定义的形状在蒙版中为白色.如果多边形中定义的点是凸的(因此名称为fillConvexPoly),则应该进行一些公平的警告.然后我们可以将其转换为布尔蒙版,并使用它来索引图像以提取出您想要的像素.下面的…

二维码的纠错码原理及如何纠错(1)

本文将通过例子来说明两个方面的内容: (1)如何构建纠错码? (2)有了纠错码之后如何纠错? 1 如何构建纠错码? 直接上例子,“hello world” 利用二维码的编码原理&#xf…

浙江省二级计算机vfp,浙江省计算机2级vfp程序调试真题集.doc

程序填空(改错)题:在考生文件夹的paper 子文件夹中,已有文件Modify.prg,请自己打开文件,在标记&&之前填写所缺代码、调试、保存,并完成以下功能1、显示指定表中的全部字段名,并由用户输入显示表信息…

利用自己构建的网络进行鼾声识别

1 目前的工作 1.1 数据 5692条3s且采集率为8000hz的鼾声与6824条3s且采集率为8000hz的其他类音频。通过FFT频谱转换为300个(30,513,1)的矩阵。训练集与测试集的比例为9:1。数据集来源为google开源的数据集。 1.2 模型 图1. The proposed deep neural network arc…

计算机组成码距,计算机组成原理:2.3.2 纠错码原理.ppt

2.3.2 纠错码的基本原理;重复码;;n4时;译码失败:译码器根据接收到的信号无法作出明确判断;纠错码如何纠正错误?;2.3.3 几个基本概念;许用码组和禁用码组;错误图样;汉明距离和重量;最小码距;分组码 分组码一般可用(n,k)表示。其中,k是每组二进…

企业微信加密消息体_用企业微信小程序发送消息

在企业开发中,经常会碰到一些消息要及时推送到企业员工的手中。so 下面来说怎么向企业微信中的员工发消息。本人只是记录下开发过程,详细参考https://work.weixin.qq.com/api/1.准备注册企业微信公司获取企业ID新开企业微信应用获取应用的Agentid&#x…

二维码的纠错码原理及如何纠错(2)

下面进一步介绍二维码纠错相关的编码矩阵 1 范德蒙德(Vandermonde)矩阵 1.1 定义及特性 法国数学家 Alexandre-Thophile Vandermonde 在十八世纪提出了行列式的概念, 用来解决线性方程组问题, 其中一个关键是范德蒙德(Vandermonde) 矩阵, Vandermonde…

北师大计算机组成原理离线作业,北师大网络教育 离线作业 计算机组成原理(一、二、三)...

《计算机组成原理》作业(一)一、CPU:Central Processing Unit 中央处理单元 执行存放在主存储器中的程序即机器指令.CPU是由控制器和运算器.PC:Personal Computer 个人电脑 能独立运行、完成特定功能的个人计算机 IR:Immediate Rendering 直接…

3dsmax导出html,3dsmax导出gltf格式插件

【实例简介】3dsmax导出gltf格式插件,里面包括插件,插件使用说明,插件功能介绍;【实例截图】【核心代码】3dsmx_to_gltf格式插件└── 3dsMax to gltf 2├── 3ds Max│ ├── CHANGELOG.md│ ├── Max2Babylon│ │ …

NCCIP会议笔记

华南理工大学蔡毅:多智能体通信,识别边界。是否可以用于鼾声识别 天津大学张鹏教授 哈尔滨工业大学 HFUT:俞奎 张长青

计算机创新课,计算机教学课程模式与创新论文

计算机教学课程模式与创新论文摘要:作为大学生通识教育的重要组成部分,计算机基础课程是提高学生信息素养的关键途径。随着互联网技术的不断发展,大学计算机课程教学面临诸多新的挑战,因此需要创新、改革目前的教学模式&#xff0…

New directions in automated traffic analysis论文解读

1 论文主要idea 完整性:没有进行特征提取,保留原始数据包;固定大小:对不同类型的数据包进行统一格式编码,使得编码后的向量大小一致(见图3)将一些与目标任务不一致的字段去掉,如操作…

拉力测试软件界面,电脑拉力机/电脑控制拉力试验机软件操作界面与功能

1、电脑控制软件能实现自动读取抗拉强度、屈服强度、断裂强度、弹性模量、延伸率等检测数据,公式编辑能自动计算试验过程中任一指定点的力、应力、位移、变形等数据结果。对试验过程的控制和数据处理符合相应金属材料与非金属材料国家标准的要求。2、 控制方式&…

NSA-LDL论文修改建议20211026BRT

repair --> 增强,丰富, The kkk-nearest neighbor algorithm enhances the feature representation of the target sample by obtaining neighbors. Most of them take account of label correlation which plays an importance role in LDL. –>…

计算机找不到wf连接,笔记本wifi功能消失了 电脑wifi连接没了 电脑的wifi不见了...

笔记本wifi功能消失了 电脑wifi连接没了 电脑的wifi不见了2019-11-08 11:14:40 来源:网络扫码可以:1.在手机上浏览2.分享给微信好友或朋友圈解决方法:1、鼠标右键单击电脑桌面右下方的文件夹图标。2、进入文件夹后,在左边列表里&…

SWPU第一届APP程序设计大赛筹备工作

1 竞赛网址 http://main.corntree.net/champion/index 2. 选题讨论 关于竞赛的题目,目前几个想法: 1、私密相册 2、打印机 3、贴图(制作表情包) 4、聊天截图拼接并抹掉头像 5、手机加速 6、浏览器 7、 IOS Widgets 游戏相关&am…

计算机二级考试都怎么考,计算机二级都考什么 怎么考

满意答案luluthe...2013.08.26采纳率:45% 等级:11已帮助:8894人关于二级考试科目:与去年相同,二级一共七个科目。二级科目分成两类,一类是语 言程序设计(C、C、Java、Visual Basic、Delphi),…