余晖落尽暮晚霞,黄昏迟暮远山寻
本站
当前位置:网站首页 > 编程知识 > 正文

Python参数的那些事, 老铁们要多加练!

xiyangw 2023-10-09 16:13 35 浏览 0 评论

小伙伴们,Python的函数定义起来简单,但是参数类型就比较多了,难免会迷糊其中。今天,咱们就来认识Python的参数家族,看他们之间有什么区别吧!


(一):首先是必不可少的形参和实参。形参是函数定义的时候的参数,实参是调用函数时传递的具体参数。比如:

def add(x, y): # x和y是形参
       return x + y                                                                                                                    
add(1, 2) # 1和2是实参然后是关键字参数与顺序参数。

关键字参数让你在调用函数时直接指定参数名,而顺序参数要严格按照形参的顺序。比如:

def person(name, age):
			print(f'姓名:{name} 年龄:{age}')                                                                                        
person(age=20, name='Tom') # 关键字参数,可以指定参数名
person('Jack', 25) # 顺序参数,要按顺序传入还有不定长参数与默认参数。
#不定长参数用*定义,可以接受多个参数;默认参数在形参定义时直接指定默认值。例如:
def add(*nums): # 不定长参数 *nums
sum = 0
 				for n in nums:
        			sum += n
		  	return sum 
add(1, 2, 3) # 添加3个参数也可以
add(1, 2) # 添加2个参数也行 

def info(name, age=18): # age是默认参数,默认为18
			print(f'姓名:{name} 年龄:{age}')                                                                                         
info('Tom') # 使用默认值 
info('Jack', 20) # 也可以传入参数覆盖默认值,明白了吗?

Python的各种参数类型虽然名词多,但概念其实不难理解。关键是要通过编写代码的方式不断实践与练习。朋友,动手试试用这些参数定义一些简单的函数吧!如果遇到问题也不要气馁,翻阅教程或搜索问题可以解决大部分疑惑。加油!理解参数只是Python之旅的第一步。更多有趣的特性等你去发现。

'''
(二):除了前面提到的形参、实参、关键字参数、顺序参数、不定长参数和默认参数外,
  Python还有字典参数。字典参数用**定义,可以接受多个键值对作为参数。例如:
  '''
def person(**info):
 			print(info)                                                                                                                          
person(name='Jack', age=20, gender='男')
# 输出:{'name': 'Jack', 'age': 20, 'gender': '男'}在函数内部,字典参数会被转换为一个字典,
  #键为参数名,值为参数值。我们可以按键来访问相应的值。
#所以,结合前文,Python的参数类型主要有:- 形参与实参:函数定义和调用时的参数
#顺序参数与关键字参数:调用函数时的参数传入方式
#默认参数:函数定义时的参数默认值
# 不定长参数(*):可以接受多个参数
#字典参数(**):将多个键值对参数转换为字典以一个综合示例结束

今天的内容:  
def person(name, age, *, gender='男', **others):
			print(f'姓名:{name}')
			print(f'年龄:{age}')
			print(f'性别:{gender}')
			print(f'其他信息:{others}')
person('Jack', 20, gender='女', hobby='音乐', address='北京') 

# 输出:
# 姓名:Jack
# 年龄:20
# 性别:女
# 其他信息:{'hobby': '音乐', 'address': '北京'}这样的一个函数定义,既有顺序参数、默认参数,又有关键字参数和字典参数,涵盖了Python各种参数类型的运用,是比较典型的例子。

希望通过今天的加强版内容,能够进一步巩固你对Python参数的理解。如果仍有不太明白的地方,记得通过编写代码进行实践与总结。字典参数作为Python的参数最后一讲,也意味着我们对参数类型的学习告一段落。让我们继续前行,开启Python的新篇章!

(三):Python的参数类型除了前面提到的形参、实参、顺序参数、关键字参数、默认参数、不定长参数和字典参数外,还有几个需要了解的:

#1. 可变参数:用*定义,可以将多个参数收集为元组使用。例如:
def add(*nums):
			sum = 0
 			for n in nums:
     				sum += n
 			return sumadd(1, 2, 3) # nums为(1, 2, 3);
add(1, 2, 3)   # nums为(1, 2, 3)
2. 关键字可变参数:用**定义,可以将多个关键字参数收集为字典使用。例如:
def person(**info):
			print(info)         
person(name='Jack', age=20)
# info为{'name': 'Jack', 'age': 20}

3. 命名关键字参数:在*后的参数,必须用参数名传入。例如:
def person(name, age, *, gender):
			print(f'姓名:{name} 年龄:{age} 性别:{gender}')                    
person('Jack', 20, gender='男') 
# 必须传入gender参数
4. 仅限位置参数:如果在*之前的参数,那么只能按照位置顺序传入,不能使用关键字参数。例如:
def add(x, y, *, z):
			return x + y + z                                                                                                                 
add(1, 2, z=3) # 正确
add(x=1, y=2, z=3) # 错误,x和y是仅限位置参数 
5. 嵌套函数:Python支持在函数内部再定义函数,内部函数可以访问外部函数的变量。例如:
def outer():
			x = 1
			def inner():
      			print(x) # 可以访问outer函数的变量x
			inner()                                                                                                                
outer() # 1

除此之外,Python还有匿名函数(lambda)、偏函数(partial)、装饰器(decorator)等高级技巧。但对于初学者来说,重点首先需要理解基本的参数类型,然后慢慢掌握其它高级知识。希望通过今天的内容能够进一步满足你对Python参数的好奇心。现在,你可以对Python的参数类型了如指掌了吧!如果还有不理解的地方,记得多练习,思考不同的参数类型在实际代码中的应用,通过综合运用来加深理解。让我们继续前行,从基础入手,逐步探索Python的奥秘!期待你的等更多发现与分享。

相关推荐

排序算法--归并排序_归并排序例题讲解

原理如图所示(先分割再合并):归并排序代码工作原理:1、申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列2、设定两个指针,最初位置分别为两个已经排序序列的起始位置3、比较两个指针所...

八大排序算法-归并排序_归并排序 算法

算法思想归并排序分为三个步骤:1.分解:将数列分解成n个子数列。(如果是将数列分成2个子数列则为2路归并)2.治理:对每个子数列进行排序操作3.合并:将两个排好序的子数列进行合并生成新的数列算法实现P...

高级排序之归并排序、希尔排序_希尔排序和归并排序区别

前言继上次排序算法简单排序算法之冒泡、插入和选择排序-Java实现版后,本文学习高级排序算法——归并排序、希尔排序,快速排序将在后续更新。本文实现代码调用方法,部分来自前一个文章:简单排序算法之冒泡、...

Excel办公应用:按合并单元格排序的三大方法

1.按姓名对科目排序重点:在"C2"中输入公式=IF(A2<>"",1,C1+1),然后下拉填充。2.按姓名添加连续序号(方法一)重点:选择"A2:A11"单元格区域,在编辑栏中输入公...

快速排序 Vs. 归并排序 Vs. 堆排序——谁才是最强的排序算法

知乎上有一个问题是这样的:堆排序是渐进最优的比较排序算法,达到了O(nlgn)这一下界,而快排有一定的可能性会产生最坏划分,时间复杂度可能为O(n^2),那为什么快排在实际使用中通常优于堆排序?昨天刚...

归并排序思路图解 #归并排序_归并排序百度百科

排序算法1.图解。OK,让它排一下。看好了,要开始排了。能看出来像递归吗?肯定算法难,但是这个次数非常的多,不用管次数。这个是帝规,就是递归。这是并,这是并,这是两个有序数,组合成一个最后的大的有序数...

排序算法学习——归并排序_归并排序算法稳定吗

我们先看归并排序的定义归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(DivideandConquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每...

动画|经典的归并排序究竟怎么玩儿?

作者|菠了个菜责编|郭芮由于LeetCode上的算法题很多涉及到一些基础的数据结构,为了更好的理解后续更新的一些复杂题目的动画,推出一个新系列——《图解数据结构》,主要使用动画来描述常见的数据...

Excel中,多列数据统一排名,Rank函数直接搞定

Rank实现多列联合排序排序,那太简单啦,Excel中,升序降序,一个按键就可以。但,那是针对单列情况,若需要联合多列数据进行排序呢?如下图所示,需要对1、3、5列进行统一排序,咋弄嘞?联合排序案例先...

【数据结构与算法】归并排序_数据结构中归并排序

归并排序是建立在归并操作的一种高效的排序方法,该方法采用了分治的思想,比较适用于处理较大规模的数据,但比较耗内存,今天我们聊聊归并排序排序思想一天,小一尘和慧能坐在石头上,眺望着远方师傅,我听山下的柳...

C++基础算法:归并排序_经典排序算法-----归并排序(c语言实现)

归并排序(MergeSort)是建立在归并操作上的一种有效,稳定的排序算法,该算法是采用分治法(DivideandConquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列。...

马士兵说之归并排序_马士兵教育的内推是真的

大家对于排序应该是挺熟悉的吧,马士兵老师特意为排序出了一波视频,当然文章是转自博客园的,马士兵老师的视频观看请点击下方的了解更多概要本章介绍排序算法中的归并排序。内容包括:1.归并排序介绍2.归并...

C++快速排序和归并排序_c++快速排序sort

快速排序每一轮挑选一个基准元素(随机选择,编程时一般选取第一个),并让比它大或小的元素移动到基准元素的两边,把数列拆解成了两个部分。而后对这两部分分别进行快速排序。时间复杂度:O(nlogn),辅助空...

经典的排序算法——归并排序_归并排序算法步骤

归并排序(MergeSort)是一种基于分治策略的高效排序算法。它将原始数组不断地分割成两个子数组,直到每个子数组只剩下一个元素为止(即基本有序),然后再通过合并已排序的子数组来最终得到完全有序的大...

归并排序_归并排序c++实现

归并排序概念:归并排序中涉及到一个概念就是分而治之,总序列化成小序列,将小序列排序好,利用排序好的小序列,再归并排序成原来要排序的序列。所以排序前先要分:functiondivide(arr){...

取消回复欢迎 发表评论: