Python(10)函数
admin
2024-04-13 07:33:56
0

文章目录

  • 创建和调用函数
  • 函数的参数
    • 形式参数和实际参数
    • 关键字参数和位置参数
    • 默认参数
    • 收集参数
    • 变量的解包
  • 函数的返回值
  • 作用域
  • 函数嵌套

函数的主要作用: 打包代码

最大程度实现代码的重用减少冗余代码

将不同代码进行封装、分解从而降低结构复杂度,提高代码可读性

创建和调用函数

# 创建
def my_func():pass# 调用
my_func()

函数的参数

def my_func(name, times):for i in range(times):print(f"我喜欢{name}")my_func(name="python", times=5)

形式参数和实际参数

形式参数(形参)

  • name和times

实际参数(实参)

  • "python"和5

关键字参数和位置参数

我们在传参的时候不仅可以这样

number = div(x=6, y=0)

还可以这样

number = div(6, 0)

那么可以混着用么?

# 这样是可以的
number = div(6, y=0)# 但这样不行
number = div(x=6, 0)

关键字参数必须在,位置参数后面

默认参数

我们可以定义一个求圆面积的函数是这样的

def func(r,pai):print(2*pai*r)

我们都知道 pai 是3.1415926…

那么我们可以不可以让这个参数默认为 3.14 呢,如果需要要精细那么再让用户自己传入.

def func(r, pai=3.14):print(2 * pai * r)# 可以传
# func(3, 3.1415926)# 也可以不传
func(3)

收集参数

有时候我们不知道用户要输入多少参数

例如:print

这时我们就需要使用到我们的收集参数

def func(*args):print(args, type(args))  # (1, 2, 3, 4) func(1, 2, 3, 4)

我们发现,传入这么多值其实用的元组的打包性质

字典形式的收集参数

def func(**kwargs):print(kwargs)  # {'a': 1, 'b': 2, 'c': 3}func(a=1, b=2, c=3)

变量的解包

收集参数就是 打包操作

那么我们 传入的时候还有一个变量解包操作

def func(a, b, c, d):print(a, b, c, d)  # 1 2 3 4f = (1, 2, 3, 4)
g = {'a': 1, "c": 3, "b": 2, "d": 4}
func(*f)
func(**g)

函数的返回值

例如:

  • sum()函数回返回求和后的结果
  • len()函数回返回一个元素的长度

我们需要使用 return 让我们的自定义函数实现返回

实现一个除法的函数

  1. 实现基本的除法
  2. 除数不能为0
def div(x, y):if y == 0:return "除数不能为0"else:return x / ynumber = div(x=6, y=1)print(number)

return后代码将不会在继续向下执行,这样代码就可以简化成

def div(x, y):if y == 0:return "除数不能为0"return x / ynumber = div(x=6, y=1)print(number)

在想想我们学过的三目运算,代码就可以简化成这样

def div(x, y):return x / y if y != 0 else "除数不能为0"number = div(x=6, y=0)print(number)

如果我们不写return 那么函数也会返回一个 None

作用域

变量或函数起作用的范围

全局变量

变量定义的位置不在任何函数中

a = 0   # 全局变量def func():print(a)func()

我们想修改全局变量时,可能不如我们所意

a = 0  # 全局变量def func1():a = 1  # 局部变量print(a)  # 输出的是局部变量 1func1()
print(a)  # 输出的是全局变量 0

我们可以使用 global 从而实现我们修改的目的

a = 0  # 全局变量def func1():global aa = 1print(a)func1()
print(a)

局部变量

def func1():b = 1   # 局部变量def func2():print(b)    # NameError: name 'b' is not definedfunc1()
func2()

函数嵌套

  1. 函数内的函数,无法在外部被调用
  2. 函数内定义的变量,可以使用nonlocal关键字进行修改
def func1(x):print(x)def func2():nonlocal xx = 5print(x)func2()print(x)func1(1)

相关内容

热门资讯

住宅底商改办公室及展厅消防要求... 住宅底商改办公室及展厅消防要求规范这个要有逃生能力,消防器栓等,必须要消防要求比较高,有一些出入通道...
老年大学该开展哪些教育课程能提... 老年大学该开展哪些教育课程能提升老年人的智力?老年大学,应该开设数学计数课程。因为,许多老人每天对生...
以前的动漫讲得是一个小女孩是个... 以前的动漫讲得是一个小女孩是个金鱼,和一个小男孩相爱的故事很感人,有点像美人鱼的故事 叫什么 《悬...
古代神话故事中的龙和凤是关系? 古代神话故事中的龙和凤是关系?古代神话有三族,分别是龙,麒麟,凤凰。龙腾于四海,管理幸运布雨;麒麟管...
找一部已经完本的小说,讲的是一... 找一部已经完本的小说,讲的是一个人穿越到平行世界后盗版金庸小说的故事开头好像讲的是他在火车上睡着了醒...
自己设计自己造,游客来了也说妙... 自己设计自己造,游客来了也说妙!叶县“老家康台”蝶变出圈 顶端新闻记者 孙超 实习生 张祎 几年前,...
暗黑破坏神2[肋骨粉碎者](六... 暗黑破坏神2[肋骨粉碎者](六尺棍)该如何升级?例如如何升级,强化还有各位大虾,应该用什么宝石之类来...
广东粤东潮剧院携《龙井渡头》亮... 2025年7月18日晚,浙江省台州市黄岩区九峰公园内气氛热烈,来自揭阳的民营院团——广东粤东潮剧院携...
我现在开始堕落了 很自卑 我现在开始堕落了 很自卑其实我觉得你不必自悲,来自农村怎么啦?难道农村人就比城里人差吗?我也自来农村...
新加坡华侨投资基金管理有限公司... 在地缘问题波动阴影下,约旦旅游业却交出一份亮眼成绩单。最新数据显示,二零二五年上半年约旦旅游收入达三...
老鼠吃猫,真奇怪。 徒劳无功,... 老鼠吃猫,真奇怪。 徒劳无功,苦奔波。 是什么生肖蛇,人心不足蛇吞象,白白扒高往,所有辛苦奔波都枉费...
内蒙旅游攻略自驾游五日游预算多... 我一直向往着内蒙古的辽阔草原和蓝天白云,梦想着能亲自驾车穿越这片神奇的土地,感受那份只属于草原的自由...
菏泽的历史文化介绍 菏泽的历史文化介绍要详细的我在完成社会实践菏泽是春秋末年的鲁国,传说中的舜曾出生于此. 也是以前的燕...
喝酒可以改变一个人的性情吗? 喝酒可以改变一个人的性情吗?喝酒可以改变人的性情,只不过喝酒改变的是易怒、暴躁,沾火就着,不易平息这...
《火蓝刀锋》有没有第二部? 《火蓝刀锋》有没有第二部?我也想有第二部啊不过现在没听说要拍
一个人的声音可以传多远 一个人的声音可以传多远正常情况下,有效距离为200米左右.这个问题有点复杂.声音的传播速度为340米...
反向播放的电视剧:《古相思曲》... 反向播放的电视剧:《古相思曲》?反扒御含向播放的电视剧:《古相思曲》第14集往前看是男主视角,第1集...
请问翅膀扇动的声音,用什么拟声... 请问翅膀扇动的声音,用什么拟声词形容?嗡嗡扑楞扑楞1楞扑楞是一种鸟扇动翅膀时发出的声音2蜂鸟在快速扇...
全国初雪地图登场,今年的初雪为... 全国初雪地图登场,今年的初雪为何这么早?主要是受台风、气流和寒潮的影响,在三者的相互作用和相互影响之...
传奇盛世未知暗殿改成多少战力了 传奇盛世未知暗殿改成多少战力了  传奇盛世通天怎么打?通天多少战力可以通关?  传奇盛世中,1.2W...