我是靠谱客的博主 细腻小海豚,最近开发中收集的这篇文章主要介绍Python函数的几种传参方式函数函数的参数,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

函数

函数的功能是包裹一部分代码,实现某一个功能,的一段代码。
特点:可以仿佛调用,提高代码的复用性,从而提高效率,是代码结构清晰,便于代码的维护管理。
定义函数的方式:
基本格式

def 函数名():
    print('hello,world')
    pass

定义函数

def func():
    print('你好!谢谢!')

调用函数
函数名+括号

#调用上面的函数
func()
#运行结果
#你好!谢谢!

函数命名:

  1. 字母数字下划线,首字符不能是数字
  2. 严格区分大小写,且不能用关键字
  3. 函数命名尽量做到见名知意,且不使用中文。
    驼峰命名法:
    大驼峰命名法:每个单词首字符大写(类:面向对象)
    例如:savefile =>SaveFile loadfile=>LoadFile
    xiao
    小驼峰命名法:除了第一个单词的首字符小写之外,剩下每个单词首字符大写
    savefile =>saveFILE loadfile = >loadFILE
    还有下划线+单词 :
    savefile = save_file loadfile = load_file
    以上三种不同的命名风格主要是为了区分代码中函数名,变量名,类名等。在代码的执行层面并无差异。
    函数的定义处:
    函数在定义阶段是不执行的,只有到了调用阶段才会执行。
    函数的调用处:
    函数在调用阶段,函数体的代码才会执行。

函数的参数

参数:配合函数内部代码运行必要的值
参数分为:

  1. 形参,形式参数,在函数定义阶段需要写明的变量名。
    位置形参, 默认形参 , 普通收集形参 , 命名关键字形参 , 关键字收集形参
    实参: 普通实参,关键字实参
  2. 实参,实际参数,函数调用阶段,真实参与代码运行的数值。
    实参: 普通实参,关键字实参
    遵循原则:
    实参和形参要一一对应。
  • 位置形参
    示例一:
'''
函数star_arry(row,column)的功能是需要打印行M列的全‘0’矩阵。
行数和列数由调用者来设定。
'''
def star_arry(row , column):
    i = 0
    while i<row:
        j = 0
        while j <column:
            print("0",end=' ')
            j+=1
        print()
        i+=1
star_arry(10,9)

上面这个例子中,行数和列数在我们调用函数时确定,传入两个数字按照位置对应row和column,在函数执行的时候,我们传入的两个实际的数字也就是实参,对应函数内部两个变量的名,相当于我们给函数内部两个变量row和column分别赋值。这种传参方式是实参与形参之间是按照位置严格对应的。

  • 默认形参
    在函数定义处,给形参赋一个默认值,如果函数调用时不传入新的值,函数按默认值运行。
    示例二:
def star_arry(row=10 , column=10):#在此处
	...
	#此处代码与示例一相同
	pass

star_arry()
star_arry(9,7)
示例一中如果不传入参数的话,程序报错,这个程序不传入参数,打印1010列的全零矩阵
有传入数值的话,按传入数值来打印矩阵
  • 普通形参 + 默认形参

函数的定义处
默认形参必须跟在普通形参的身后,顺序是一定的,顺序反掉的话会直接报错。
示例三

def star_arry(row , column=10):
		...
	#此处代码与示例一相同
	pass
star_arry(8)
star_arry(5,7)
此种情况下至少传入一个位置参数。
  • 关键字实参

关键字实参是对具体的某个参数赋值,具体的顺序可以打。
示例四:

def star_arry(row,column,a,b,c):#函数定义处
	...
	#此处代码与示例一相同
	pass
star_arry(column=8,row=7,b = 4,a = 3,c= 1)#函数调用处

值得注意的是函数定义时,和函数调用时参数的位置可以互换,但是形参和实参要对应,不可增加也不可减少。

  • 普通实参 + 关键字实参
    示例五
def star_arry(row,a,b,c,column=10):
		...
		#此处代码与示例一相同
		pass
star_arry(8,1,row=7,b = 4,c= 1)

注意:关键字实参必须跟在普通实参的身后,顺序是一定的

默认参数和关键字实参 在写法上一模一样
一个是在函数的定义处
一个是在函数的调用处

  • 收集参数

收集参数:
*

  1. 普通收集参数: 专门用来收集多余的没人要的普通实参
def func(*args):
	code
*args => arguments(参数)
在args这个参数的前面加上一个*表达普通收集参数,形成一个元组
基本使用
def func(a,b,c,*args):
	print(a,b,c)
	print(args)
	
func(1,2,3,4,5,5,6,7,8)
在func这个函数调用的时候,123分别对应的位置形式参数455678没对应的形式参数,被*args收集成为了一个元组。
#运行结果
1 2 3
(4, 5, 5, 6, 7, 8)

计算任意个数的累加和

def func(*args):
	total = 0
	for i in args:
		total += i		
	print(total)
	
def func(*args):
    total = 0
    for i in args:
        total += i
    print(total)
func(-429,78,352,76,345,234,76,863,274)
#运行结果:
1869
  1. 关键字收集参数 : 专门用来收集多余的没人要的关键字实参
def func(**kwargs):
	code1...
**kwargs => keyword arguments

在kwargs参数的前面加上2个**表达关键字收集参数,形成一个字典

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

func(f=1,g=2,j=3,a=15,b=16,c=17)
#运行结果
15 16 17
{'f': 1, 'g': 2, 'j': 3}
  • 命名关键字参数
    定义命名关键字参数的两种方式:
(1)def func(a,b,*,c) c是命名关键字
(2)def func(*args,c,**kwargs) c是命名关键字参数

在函数调用时,必须使用命名关键字参数来进行赋值
定义方式一

def func(a,b,*,d,c):
	print(a,b)
	print(d)
	print(c)
	
func(1,2,d = 3,c=10)

定义方式二

def func(*args,c,**kwargs):
	print(args)
	print(c)
	print(kwargs)
	
func(1,2,3,4,5,6,a=1,b=2,d=6,c=100)
运行结果
(1, 2, 3, 4, 5, 6)
100**加粗样式**
{'a': 1, 'b': 2, 'd': 6}

关于* 和 ** 的使用方法

 * 和 ** 在函数的定义处,用来做收集操作,打包
 * 和 ** 在函数的调用处,用来做打散操作,解包
def func(a,b,*,c,d):
	print(a,b)
	print(c,d)
	
lst = [1,2]
# *把列表里面的所有元素拿出来,当成参数一个一个赋值给func进行调用
func(*lst,c=3,d=4)


def func(a,b,*,c,d):
	print(a,b)
	print(c,d)
dic = {"c":3,"d":4}
# **把字典里面的所有元素拿出来,拼装成键=值的参数形式,赋值给func进行调用
func(1,2,**dic,) # func( c=3, d=4 )


# *和**的组合
func(*lst,**dic)
strvar = "abc"
print(*strvar)

最后

以上就是细腻小海豚为你收集整理的Python函数的几种传参方式函数函数的参数的全部内容,希望文章能够帮你解决Python函数的几种传参方式函数函数的参数所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部