【python】函数定义 参数 调用

python中定义函数

定义函数时,需要确定函数名和参数个数;

如果有必要,可以先对参数的数据类型做检查;

函数体内部可以用return随时返回函数结果;

函数执行完毕也没有return语句时,自动return None

函数可以同时返回多个值,但其实就是一个tuple


函数定义
Python中,定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回。
</pre><pre name="code" class="python">def f(x):
         if x>0:
                 print('P')
         else:
                 print('n')
         return

#对参数类型进行检查
def f(x):
         if not isinstance(x,(int,float)):
                 raise TypeError('bad operand type')
         if x>0:
                 print('P')
         else:
                 print('n')
         return

如果想定义一个什么事也不做的空函数,可以用pass语句,pass语句什么都不做,用来作为占位符,比如现在还没想好怎么写函数的代码,就可以先放一个pass,让代码能运行起来。缺少了pass,代码运行就会有语法错误。

def nop():
    pass
if age >= 18:
    pass


函数返回值

Python函数的返回值是一个tupletuple可以包含多个值,python可以有多个返回值。
>>> def sub_sum(x,y):
               sub=x-y
               sums=x+y
               return sub,sums
>>> sub_sum(4,2)
(2, 6)

函数别名

#函数名其实就是指向一个函数对象的引用,完全可以把函数名赋给一个变量,相当于给这个函数起了一个别名
>>> mm=abs
>>> mm(-1)
1

函数参数

Python的函数定义非常简单,但灵活度却非常大。除了正常定义的必选参数外,还可以使用默认参数、可变参数和关键字参数,使得函数定义出来的接口,不但能处理复杂的参数,还可以简化调用者的代码。

定义默认参数

默认参数可以简化函数的调用。设置默认参数时,有几点要注意:

一是必选参数在前,默认参数在后,否则Python的解释器会报错

二是如何设置默认参数。当函数有多个参数时,把变化大的参数放前面,变化小的参数放后面。变化小的参数就可以作为默认参数。

三是有多个默认参数时,调用的时候,既可以按顺序提供默认参数,也可以不按顺序提供部分默认参数。当不按顺序提供部分默认参数时,需要把参数名写上。

>>> def pows(x,y=2):
         s=1
         whiley>0:
                   s=s*x
                   y=y-1
         returns
 
>>> pows(9)
81
>>> pows(9,3)
729<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"> </span>

需注意,定义默认参数要牢记一点:默认参数必须指向不变对象。如:

>>>def Lp(l=[]):
       l.append('END')
       return l
>>>Lp()
['END']
>>>Lp()
['END','END']
>>>Lp()
['END', 'END', 'END']

原因解释如下:

Python函数在定义的时候,默认参数L的值就被计算出来了,即[],因为默认参数L也是一个变量,它指向对象[],每次调用该函数,如果改变了L的内容,则下次调用时,默认参数的内容就变了,不再是函数定义时的[]了。

所以,定义默认参数要牢记一点:默认参数必须指向不变对象!

对上边例子的修改:

>>>def lp(l=None):
       if l is None:
              l=[]
       l.append('END')
       return l
 
>>>lp()
['END']
>>>lp()
['END']
>>>lp()
['END']
 

定义可变参数 

可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple如对未知个数的元素求和

>>>def Sum(*s):
       sums=0
       for i in s:
              sums=sums+i
       return sums
 
>>>Sum(2,3,4,5,6,7,8,8)
43

定义关键字参数。键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict

>>> def Sinfor(**kw):
       print(kw)
       return
>>> Sinfor(a='1',b='2',c='3')
{'c': '3','b': '2', 'a': '1'}
 

参数组合

Python中定义函数,可以用必选参数、默认参数、可变参数和关键字参数,这4种参数都可以一起使用,或者只用其中某些,参数定义的顺序必须是:必选参数、默认参数、可变参数和关键字参数。

#定义函数接收多种参数类型
deffunc(a,b,c=0,*args,**kw):
       print (a,b,c)
       print (args)
       print (kw)
       return
#调用函数  参数先满足最前边的使用
>>>func(1, 2, c=3)
1 23
()
{}
#*args 参数表示可变参数个数
>>>func(1, 2, 3, 'a', 'b')
1 23
('a','b')
{}
#**kw接收dict类型的参数
>>>func(1, 2, 3, 'a', 'b', x=99)
1 23
('a','b')
{'x':99}
#可以定义args和kw 调用函数
>>>args=('a','b','c','d')
>>>kw={'x':1,'y':2,'z':3}
#直接将 tuple 和dict 作为参数传递给函数进行调用
>>>func(1,2,3,*args,**kw)
1 23
('a','b', 'c', 'd')
{'z':3, 'y': 2, 'x': 1}
#在省略前边的参数时,会用后边的参数补到前边的参数中
>>>func(*args,**kw)
a bc
('d',)
{'z':3, 'y': 2, 'x': 1}
 

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值