Python 所有文章传送门 |
---|
【Python】所有文章传送门 |
目录
- 简述 / 前言
- 1. 函数
- 1.1 函数的定义与调用
- 1.2 函数的形参要怎么排序
- 1.2.1 位置参数
- 1.2.2 默认值参数(可选参数)
- 1.2.3 可变长度参数
- 1.2.4 指定使用形参格式
- 1.2.5 形参一般顺序
- 1.2.6 特别注意
简述 / 前言
这篇开始分享在做项目中用的最多的一个东西:函数,你可以会用别人写好的函数(比如第三方库的某个函数),又或者你会自己写一个函数来完成你要实现的功能,所以这节比较重要,但是内容并不难。鉴于此部分内容较多,所以应该会分成2篇文章分享~
1. 函数
1.1 函数的定义与调用
关键语法:
def 函数名(形参): print(f'你输入的是:{形参}') # return 形参 # 函数可以通过 return 返回值 实参 = '实参' 函数名(实参)
输出:
你输入的是:实参
插一嘴,虽然我们可以用中文来写函数,但是不建议这么做,毕竟不同的电脑有不同环境,有时候不同的解释器解析代码时很容易出错,其次我们的代码要国际化~
1.2 函数的形参要怎么排序
值得注意的是:函数可以没有形参,即没有传入值!
Python参数传递方法是传递对象引用,而不是传递对象的值。
1.2.1 位置参数
实参默认按位置顺序传递给对应的形参,实参和形参的顺序必须严格一致,并且实参和形参的数量必须相同。即:
def CSDN(a, b): print(f'a = {a}') print(f'b = {b}') print() CSDN(1, 2) CSDN(b=2, a=1) # 通过关键字参数乱序传入实参
输出:
a = 1 b = 2 a = 1 b = 2
值得注意的是,虽然说是位置参数,但是默认情况下可以通过 关键字参数 来不按顺序传入实参。但是并不是什么情况下都可以这么用的,特殊情况见【1.2.4 指定使用形参格式】~
1.2.2 默认值参数(可选参数)
如果一个函数希望用到一个参数,但是这个参数基本上不会变化,那么可以通过设置默认值参数,这样在调用函数时就不用再传入这个实参了。即:
def CSDN(a, b=2024): print(f'a = {a}') print(f'b = {b}') print() CSDN(1) CSDN(1, 2)
输出:
a = 1 b = 2024 a = 1 b = 2
1.2.3 可变长度参数
在形式参数名前加 1个* 或 2个** 。
- *args 用来接受多个位置参数并将其放在一个元组中。
- **kwds 接受多个关键参数并存放到字典中。
- 这类参数必须位于形参列表的最后位置。
示例:
def CSDN(a, b=2024, *args, **kwds): print(f'a = {a}') print(f'b = {b}') print(f'args = {args}') print(f'kwargs = {kwds}') print() CSDN(1, 2, 3, 4, 5, name='小邓在森林', age=18)
输出:
a = 1 b = 2 args = (3, 4, 5) kwds= {'name': '小邓在森林', 'age': 18}
1.2.4 指定使用形参格式
在形参中,文末可以加入这两个符号:/, *。
位置 含义 形参1, …, 形参m, /, … 形参1~m都是位置参数,即只能通过顺序位置传入参数,不能使用关键字参数传值 …, /, 形参1, …, 形参m, *, … 形参1~m即是位置参数,也是关键字参数,即可以通过顺序位置传入参数,也可以使用关键字参数传值,但是要注意的是:这个形参必须使默认值参数 …, *, 形参1, …, 形参m 形参1~m都是关键字参数,即只能使用关键字参数传值 示例:
def CSDN(a, b=2024, /, c=0, d=-1, *, e, f=2025): print(f'a = {a}') print(f'b = {b}') print(f'c = {c}') print(f'd = {d}') print(f'e = {e}') print(f'f = {f}') CSDN(0, 0, 0, d=0, e=0, f=0)
输出:
a = 0 b = 0 c = 0 d = 0 e = 0 f = 0
1.2.5 形参一般顺序
不考虑这两个符号:/, * 的情况下,形参一般顺序为:位置参数、关键字参数、可变长度参数。
1.2.6 特别注意
-
如果传递给函数的实参是可变序列,那么在函数中修改的操作会覆盖到原可变序列。比如传入的是一个数组,哪怕你的形参与实参数组的名字不一样,它们映射的还是同一个数组地址,那么在函数体中修改数组的值,函数外的数组也会改变。可看下面示例:
def list_change(l1): l1[0] = 5 print(f'函数体中改变后的数组为:{l1}') l = [1, 2, 3] print(f'原数组为:{l}') list_change(l) print(f'原数组为:{l}')
输出:
原数组为:[1, 2, 3] 函数体中改变后的数组为:[5, 2, 3] 原数组为:[5, 2, 3]
-
如果形参命名和可变长度中的 **kwds 的键重名了,那么就要加上符号 /。
示例:
def CSDN(name, **kwds): print('name' in kwds) CSDN('小邓在森林', **{'name': '小邓在森林'})
输出:
Traceback (most recent call last): File "D:\MyCode\Python_Code\PyCharm\CSDN.py", line 32, in
CSDN('小邓在森林', **{'name': '小邓在森林'}) TypeError: CSDN() got multiple values for argument 'name' 示例(加上符号 /):
def CSDN(name, /, **kwds): print('name' in kwds) CSDN('小邓在森林', **{'name': 2024})
输出:
True
-
猜你喜欢
- 14天前(希尔顿2021活动)希尔顿集团618盛夏大促开启
- 14天前(安徽民宿发展报告)首届安徽省乡村民宿创意设计大赛启动
- 14天前(四川推进世界重要旅游目的地建设工作)四川推进世界重要旅游目的地建设
- 14天前(重庆恐龙化石遗址)重庆黔江恐龙化石抢救性发掘新闻发布会举行
- 14天前(新西兰航空官方网站)新西兰航空85周年焕新启航 全方位客舱升级,飞「悦」快意时光
- 14天前(曼谷丽思卡尔顿公寓价格)曼谷丽思卡尔顿酒店盛大启幕,开创泰国奢华雅致新纪元
- 14天前(纳米比亚旅游报价)纳米比亚旅游局2024年中国推介会圆满落幕
- 14天前(武隆旅游门票)炸了!519中国旅游日武隆甩出王炸福利,59.9元通玩6大景点?!
- 14天前(2025年安徽省“百场黄梅唱响百家景区”示范展示启动)2025年安徽省“百场黄梅唱响百家景区”示范展示启动
- 14天前(芜宣机场国际航班)新华丝路:芜宣机场开通至越南首都河内的国际货运航线
网友评论
- 搜索
- 最新文章
- (2020广州车展哈弗)你的猛龙 独一无二 哈弗猛龙广州车展闪耀登场
- (哈弗新能源suv2019款)智能科技颠覆出行体验 哈弗重塑新能源越野SUV价值认知
- (2021款全新哈弗h5自动四驱报价)新哈弗H5再赴保障之旅,无惧冰雪护航哈弗全民电四驱挑战赛
- (海南航空现况怎样)用一场直播找到市场扩张新渠道,海南航空做对了什么?
- (visa jcb 日本)优惠面面俱到 JCB信用卡邀您畅玩日本冰雪季
- (第三届“堡里有年味·回村过大年”民俗花灯会活动)第三届“堡里有年味·回村过大年”民俗花灯会活动
- (展示非遗魅力 长安启源助力铜梁龙舞出征)展示非遗魅力 长安启源助力铜梁龙舞出征
- (阿斯塔纳航空公司)阿斯塔纳航空机队飞机数量增至50架
- (北京香港航班动态查询)香港快运航空北京大兴新航线今日首航
- (我在港航“呵护”飞机 每一次安全着陆就是最好的荣誉)我在港航“呵护”飞机 每一次安全着陆就是最好的荣誉
- 热门文章