# -*- coding: UTF-8 -*-
#函数参数
‘‘‘
定义函数可以用必选参数,默认参数,可变参数,关键字参数和命名关键字参数,参数定义顺序为必选参数,默认参数,可变参数,关键字参数和命名关键字参数
函数调用的时候,会自动按照参数位置和参数名把对应参数传递进去
注意点:
1.必选参数在前,默认参数在后
2.默认参数要用不可变对象,如果是可变对象,运行会有逻辑错误
3.*arg是可变参数,args接受的是一个tuple
4.**kw是关键字参数,kw接收的是一个dict
‘‘‘
def function(a,b,c=0,*args,**kw):
print ‘a =‘,a,‘b =‘,b,‘c =‘,c,‘args =‘,args,‘kw =‘,kw
A = function(1,2)
B = function(1,2,3,‘a‘,‘b‘)
C = function(1,2,3,‘a‘,‘b‘,city=‘foshan‘,company=‘bgy‘)
#递归函数
def cal(n):
if n == 1:
return 1
return n * cal(n-1)
D = cal(500)
print D
‘‘‘
使用递归函数需要注意防止栈溢出。在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出。
解决递归调用栈溢出的方法是通过尾递归优化,事实上尾递归和循环的效果是一样的,所以,把循环看成是一种特殊的尾递归函数也是可以的。
尾递归是指,在函数返回的时候,调用自身本身,并且,return语句不能包含表达式。这样,编译器或者解释器就可以把尾递归做优化,使递归本身无论调用多少次,都只占用一个栈帧,不会出现栈溢出的情况。
‘‘‘
函数定义及参数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了函数定义及参数相关的知识,希望对你有一定的参考价值。
以上是关于函数定义及参数的主要内容,如果未能解决你的问题,请参考以下文章