python函数

函数

功能:包裹一部分代码 实现某一个功能 达成某一个目的
特点:可以反复调用,提高代码的复用性,提高开发效率,便于维护管理
函数基本格式:
函数的定义:
def 函数名():
code1
code2
函数的调用:
函数名()
函数命名规则:
字母数字下划线,首字符不能为数字
严格区分大小写,且不能使用关键字
函数命名有意义,且不能使用中文哦
驼峰命名法:
(1) 大驼峰命名法:每个单词的首字符大写 (类:面向对象) MyCar
(2) 小驼峰命名法:除了第一个单词的首字符小写之外,剩下每个单词首字符大写

函数的参数

参数:配合函数运算的值
参数:
(1)形参:形式参数,在函数的定义处
(2)实参:实际参数,在函数的调用处
形参: 普通形参(位置) , 默认形参 , 普通收集形参 , 命名关键字形参 , 关键字收集形参
实参: 普通实参,关键字实参
遵循原则:
形参和实参要一一对应
1.def s_star(hang,lie): #hang和lie是普通形参
s_star(10,10) #10,10是实际参数
2.def s_star(hang=10,lie=10): #hang,lie身上有默认值,是默认形参
s_star() #在函数调用时:
s_star(3,8) 如果给予实参,那么直接使用实际参数
s_star(4) 如果没有给予实参,那么使用参数默认自带的值
3.普通形参 + 默认形参
def s_star(hang,lie=10): #默认形参必须跟在普通形参的身后,顺序是
一定的
4.关键字实参
关键字实参是对具体的某个参数赋值,具体的顺序可以打乱
def s_star(hang,a,b,c,d,lie=10):
s_star(c=3,d=4,lie=5,hang=4,a=1,b=2)
5.普通实参 + 关键字实参
关键字实参必须跟在普通实参的身后,顺序是一定的
def s_star(hang,a,b,c,d,lie=10):
s_star(5,1,c=2,d=3,lie=10,b=5)

区分默认形参和关键字实参

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

收集参数

(1)普通收集参数:专门用来收集多余的没人要的普通实参
def func(*args):
code
args =>arguments(参数)
在args 这个参数的前面加上一个
表达普通收集参数,形成一个元组

例: 可以计算任意个数的累加和
def func(*args):
	total=0
	for i in args:
		total+=i
	print(total)
func(1,2,3,4,5,6,90)

(2)关键字收集参数:专门用来收集多余的没人要的关键字实参
def func(**kwargs):
code
kwargs =>keyword arguments
在kwargs参数的前面加上2个
表达关键字收集参数,形成一个字典

例:任意个数字符串的拼接

"""
班长:宋云杰
班花:刘彩霞
班草:刘子涛
吃瓜群众:牧树人,晏国彰,刘聪
"""
def func(**kwargs):
	print(kwargs)
	# 定义一个字典,存放每一位同学的身份
	dic = {"monitor": "班长", "class_flower": "班花", "class_grass": "班草"}
	strvar1 = ""
	strvar2 = ""

	# 遍历字典中的键值对
	for k, v in kwargs.items():
		print(k, v)  # monitor 宋云杰  class_flower 刘彩霞 class_grass 刘子涛 ....
		# 判断键是否在字典当中,如果在,获取对应的身份,拼装成字符串
		if k in dic:
			strvar1 += dic[k] + ":" + v + "\n"  # 班长 + ":" + 宋云杰 + '\n'
		else:
			strvar2 += v + ","

	# 去掉右边多余的\n和,形成最后的效果
	print(strvar1.strip())
	print("吃瓜群众:" + strvar2.rstrip(","))
func(monitor="宋云杰", class_flower="刘彩霞", class_grass="刘子涛", eatgua1="牧树人", eatgua2="晏国彰", eatgua3="刘聪")

命名关键字参数

定义命名关键字参数的两种方式:
(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)

关于* 和 ** 的使用方法

  • 和 ** 在函数的定义处,用来做收集操作,打包
  • 和 ** 在函数的调用处,用来做打散操作,解包
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)

当所有参数都在一起的时候,按照什么顺序定义呢?
参数定义的顺序:普通参数 -> 默认参数 -> 普通收集参数 -> 命名关键字参数 -> 关键字收集参数
收集到所有的实参: def func(*args,**kwargs)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值