python 函数图解_Python函数说明(一)

一、函数

函数定义:函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可

在不同的机器语言中,函数名字的叫法不尽相同。在BASIC中叫做subroutine(子过程或子程序),在Pascal中叫做procedure(过程)和function,在C中只有function,在Java里面叫做method。

函数形式:

def func(kwargs,*kwargs,**kwargs):#函数名func()

......#函数内的操作

pass#函数内的操作

调用函数:func()即可。

kwargs:用于单一的变量的传递

*kwargs:用于元组的传递,并且可以传递多个参数,可以用于参数个数不确定的传递

**kwargs:用于字典的传递,并且可以传递多个参数,可以用于参数个数不确定的传递

比如:

def test(kwargs,*kwargs1,**kwargs2):print(kwargs)print(kwargs1)print(kwargs2)

test("long")

test("long","love","you")

test("long","love","you",who = "long",what = "love",whom = "you")

test("long",who = "long",what = "love",whom = "you")

打印的结果为:

long

()

{}#传递了kwargs,*kwargs以及**kwargs其他为空

long

('love', 'you')

{}#传递了kwargs和*kwargs,**kwargs空

long

('love', 'you')

{'who': 'long', 'whom': 'you', 'what': 'love'}#传递了kwargs,*kwargs以及**kwargs

long

()

{'who': 'long', 'whom': 'you', 'what': 'love'}#传递了kwargs,**kwargs,kwargs为空

二、函数参数传递

一般的调用函数都会对变量进行参数的传递,完成程序的执行操作。

对于单一变量的函数中,需要保持实参与实参一一对应,进行传递。或者指定对应的参数来操作。比如:

deftest(x,y):print(x)print(y)

test(2,3)

test(y=3,x=4)

2

3

4

3

当然这两者也可以结合,但是必须要保证:关键字的参数传递在其他类型传递之后。

test(4,y=3)

test(y=3,4)#error

第二项,系统会报错:positional argument follows keyword argument

三、局部变量与全局变量

在子程序中定义的变量称为局部变量,在程序的一开始定义(第一级)的变量称为全局变量。

全局变量作用域是整个程序,局部变量作用域是定义该变量的子程序。

当全局变量与局部变量同名时:

在定义局部变量的子程序内,局部变量起作用;在其它地方全局变量起作用。

四、递归函数

递归函数可以理解为自己的函数在函数体内调用自己本身,使用自调用。

defcalc(n):print(n)if int(n/2) >0:return calc(int(n/2))print("---->",n)

calc(10)

结果:10

5

2

1

----> 1

在使用递归函数时,需要注意以下几点:

1. 必须有一个明确的结束条件

2. 每次进入更深一层递归时,问题规模相比上次递归都应有所减少

3. 递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值