关于Python函数的定义和参数
作者:灰勒塔德 发布时间:2021-05-08 20:37:28
什么是函数?
以前我们学过数学函数都知道,函数就是一种映射的表现形式,一个自变量会有与其相对应的因变量,但是Python中的函数跟数学上是不一样的,Python中的函数我们可以理解成是一种具有功能的包装块,也就是封装具有某一种功能的代码块。其性质是一段封装好的,可以重复使用的代码,提取保存起来,然后一个独一无二的名字,只要知道名字就可以调用该函数
Python中的函数定义
定义函数需要用 def 关键字实现
#定义函数
def 函数名():
函数体(即该函数的具体功能的代码/代码块)
#调用函数
函数名()# 执行函数内的代码
对比一下C语言,我在C语言定义函数是要标明函数的类型的,比如void类型、int类型、指针类型等等……与其相对应的类型要有返回值;而在Python中不需要这么麻烦,直接def+函数名就行了,其返回值是可以自己去定义的,可以这么说吧def 关键字包含了所有类型的函数,返回值可以为int、float、bool等等……
使用原则:缩进法则
示例:
#定义函数
def hello():
print('hello word')
#调用函数
hello()
#输出结果:hello word
注意事项:
函数名的命名方式和变量是一致的
函数:不能漏写
函数内的缩进必须一致
函数必须先定义再调用
函数内容不能为空
学过C语言这些注意事项应该都懂的,就不多说了...
函数的参数(带参数的函数)
(1)定义
参数的分类:
形式参数:没有实际数据,只是先占个位置 --> 定义时使用
实际参数:有实际数值,在使用时取代形参 --> 调用时使
使用过程:
def 函数名(形式参数/形参):
函数体(即该函数的具体功能的代码/代码块)
函数名(实际参数/实参)
在使用的时候,真正起作用的是实参,而形参只是在函数定义的时候进行的所有方式
(2)必须参数(又叫位置参数)
从名字就可以看出,这一类参数形参和实参的位置要相对应,并且类型还有一致的。
示例1:
def fun(name):
print(f'我的名字叫{name}')
a=input('输入:')
fun(a)
示例2:
def lisadd(li,li1):
li.insert(1,li1)
print(li)
lis=['蔡徐坤','只因']
lis1=[]
for i in range(0,5):
a=input('enter')
lis1.append(a)
if a=='0':
break
lisadd(lis,lis1)
(3)默认参数
概念:在函数定义的时候, 就一经写好参数值了, 在后期调用函数的时候 , 就可以不进行传参 , 如果在调用函数的时候也将该参数进行传递的化 , 那么原本的参数值将会被覆盖掉。
注意事项:定义默认参数一定要把默认参数放在位置参数的后面,否则就会报错
示例1:
def fun(r,pi=3.14):
s=pi*r**2
print(s)
R=int(input('输入你的半径:'))
fun(R)
#输入 3
#输出 28.26
示例2:
def fun(r,pi=3.14):
s=pi*r**2
print(s)
R=int(input('输入你的半径:'))
fun(R,4)
#输入 3
#输出 36
这里可以看出我自行输入一个实参,结果这个实参会把原来的默认参数的值给覆盖掉,输出结果也是不一样的。
(4)关键字参数
概念:就是指使用形式参数的名字来确定输入的参数值,不再需要与形参的位置完全一致,只要将参数名写正确
格式:参数名 = 参数值
注意事项:当关键字与其他参数一起出现时 ,关键字参数必须在最后 , 传递的参数 , 必须是除位置参数外的其他参数。
def ff(name,age,num):
print(f'''
--------个人信息----------
名字:{name}
年龄:{age}
学号:{num}
-----------end-----------
''')
ff(name='小sao',num=220064015,age=18)
#输出结果:
'''
--------个人信息----------
名字:小sao
年龄:18
学号:220064015
-----------end-----------
'''
#如果这样的话就会报错
ff(name='小sao',18,num=220064015)
是因为关键字参数再必须参数的前面,所以报错
(5)可变长参数
5.1单星号可变
作用:一个形参可以接收多个参数值
方式:在参数名前面加上一个 *, 该参数就是可变参数 , 就可以接收多个参数值, 也可以没有。 接收的实参必须是位置参数的形式
注意事项:该参数接收多余的参数值 , 全部保存到元组当中
def ff(name,age,*other):
print(name,age)
print(other)
ff('Jack',19,'Amy',18,'ww',88)
5.2双星号可变
方式:在参数名前面加上一个 ** , 该参数就是可变参数 , 就可以接收多个参数值, 也可以没有。 接收的实参必须是关键字参数
该参数接收到的参数值 , 以字典的形式保存 , 其中 , 参数名保存为键(key) , 参数值保存为(value)
注意事项:该参数接收多余的参数值 , 全部保存到字典当中
def ff(**p):
print(p)
ff(name='Jack',num=18,hj=99)
#输出结果:{'name': 'Jack', 'num': 18, 'hh': 99}
来源:https://blog.csdn.net/m0_73633088/article/details/128988475


猜你喜欢
- WEB开发者不光要解决程序的效率问题,对数据库的快速访问和相应也是一个大问题。希望本文能对大家掌握MySQL优化技巧有所帮助。1. 优化你的
- 前言相信大家都玩过斗地主,规则就不再介绍了。直接上一张朋友圈看到的残局图:这道题我刚看到时,曾尝试用手工来破解,每次都以为找到了农民的必胜策
- 如何做一个只能从本站点才能访问的页面?可以用与防止盗链<%if left(Request.ServerVariables(&
- 最近有提关于下拉选项过多的时候,希望输入关键词,可以搜索内容的需求,但是之前项目太赶,所以也就没有来得及做,因为希望用原生js写一些内容,所
- 我想此时不妨使用字符串参数来帮助我们解决这种情况,利用字符串分割的方法将一个参数分割成数个参数来解决。下面我们看一个例子: 假设现在给你一个
- 环境管理管理 Python 版本和环境的工具p:非常简单的交互式 python 版本管理工具。官网pyenv:简单的 Python 版本管理
- 在python中,总的来说有三种大的模式打开文件,分别是:a, w, r当以a模式打开时,只能写文件,而且是在文件末尾添加内容。当以a+模式
- 本文实例讲述了Python实现绘制双柱状图并显示数值功能。分享给大家供大家参考,具体如下:# -*- coding:utf-8 -*-#!
- 由于GTID的优势,我们需要将传统基于file-pos的复制更改为基于GTID的复制,如何在线变更成为我们关心的一个点,如下为具体的方法:目
- logging模块介绍Python的logging模块提供了通用的日志系统,熟练使用logging模块可以方便开发者开发第三方模块或者是自己
- Paramiko 是由 Python 语言编写的一个扩展模块,提供了基于 SSHv2 协议 (包括客户端和服务端)的多种功能实现。通常被用来
- 我就废话不多说了,大家还是直接看代码吧~b = torch.zeros((3, 2, 6, 6))a = torch.zeros((3, 2
- MySQL 修改密码实例详解许久不用MySQL了,今天打开HediSQL连接mysql时发现root密码忘记了,修改密码操作捣鼓了一阵子,记
- 目录背景目的拆分前流程设计目录结构设计存在的问题拆分后流程设计目录结构设计解决的问题关键代码总结其他实现方式背景由于之前的数据库防火墙产品与
- 展示:一般情况下序列化得到的外键的内容只是id:...{ fields: { uat_date: "2015-07-
- aspjpeg版本:v1.801 将pic.jpg打上logo.png,可根据图片大小对水印图做适当调整 &
- 首先,假设我们有如下餐厅数据集:import pandas as pddf = pd.DataFrame({ 'rest
- 最小二乘法大部分的最小二乘法公式推导,都是使用的 代价函数偏导 的方式来求得的,在这里首先展示如何通过代价函数求偏导的方式得到最小二乘公式,
- 网上asp加密字符的MD5很多,也很普遍,因为受到asp语言本身的限制,对文件进行md5介绍的文章很少,本文通过2种方式来谈谈如何通过asp
- Go语言在进行文件操作的时候,可以有多种方法。最常见的比如直接对文件本身进行Read和Write; 除此之外,还可以使用bufio库的流式处