函数定义及参数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了函数定义及参数相关的知识,希望对你有一定的参考价值。

# -*- 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语句不能包含表达式。这样,编译器或者解释器就可以把尾递归做优化,使递归本身无论调用多少次,都只占用一个栈帧,不会出现栈溢出的情况。
‘‘‘


以上是关于函数定义及参数的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段8——声明函数

Visual Studio 自定义代码片段在方法定义的参数列表中不起作用

Python基础篇_函数及代码复用

python 函数参数及参数解构

function函数——函数的定义及参数

Delphi7:快捷键