python中函数和函数式编程

python中函数和函数式编程

1. 如何定义函数

  • 定义函数
    def func(x,y,z=v,*args,**kwargs)
  • 对于参数
      1.参数没有类型,python不做类型检查
      2.不支持重载,python不会区分参数名字和个数
      3.多个同名函数时,后一个会覆盖前一个
      4.位置参数和关键字参数
    

2.位置参数和关键字参数

请看例子:

 def funx(x,y,z):
 	print(x,y,z) 
 funx(1,'Hello',True)  #位置参数
 funx(z='he',y='is',x='boy') #关键字参数
运行结果:
F:\untitled2\venv\Scripts\python.exe F:/untitled2/chinese/demo1.py
1 Hello True
boy is he

3.函数

*,**支持任意你输入的数
需要注意:
在定义函数时,*和**是收集参数( def fun(*args,**kwargs),arge,kwargs这2个量可以变,不过一般习惯使用这2个量)
  • 对于 * :
     用元组收集不匹配的位置参数
    
  • 对于 ** :
    用字典收集不匹配的位置参数
    
在调用函数时,*和**是对参数解包(fun(*args,**kwargs)
  • 对于 * :
     把一个集合打散成多个参数
    
  • 对于 ** :
    把一个字典打散成多个独立的关键字参数
    
实例:
def fun(x,y,z,*args,**kwargs)print(x,y,z)
	print(args)
	print(kwargs)
# 函数调用
fun(1,3,4,5,6,7,4,2)
fun(1,2,3,a=1,b='adc',c='HELLO')

#fun(1,3,4,5,6,7,4,2)
1 3 4
(5, 6, 7, 4, 2)
{}
# x=1,y=3,z=4,*args保留元组。即(5, 6, 7, 4, 2),*kwargs保留字典,而未输入字典有关的量,故{}
#fun(1,2,3,a=1,b='adc',c='HELLO')
1 2 3
()
{'a': 1, 'b': 'adc', 'c': 'HELLO'}
#X=1,Y=2,Z=3,*args保留元组,除去x,y,z剩下的数。即(),*kwargs保留字典即{'a': 1, 'b': 'adc', 'c': 'HELLO'}
说明:
  • x=[1,2,3] fun(x[1],x[2],x[3])可以输出1,2,3.
  • x=[1,2,3] fun(x) 会报错,但是可以改为fun(*x),同样可以输出结果.
  • y={'a':1,'b':'abc','c':'HELLO' fun(y) 会报错,但是可以改为fun(**y)

4.函数定义及调用样式

定义函数语法说明
def func(a,b)常规参数
def func(a=1,b=‘abc’)默认参数
def func(,a,b,*args)用元组收集除a,b的位置参数
def func(a,b,**kwargs)用字典收集的关键字参数
def fun(*args,**kwargs分别收集位置参数和关键字参数
调用函数语法说明
func(a,b)按照位置进行匹配
func(name=value’)按照关键字(变量名)匹配
func(*list)把list 打散,作为位置参数传递
func(**dict)把字典打散,作为关键字参数传递
fun(*args,**kwargs位置参数和关键字参数分别传递
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值