Python学习笔记:函数

1.基本调用

python 中的函数使用关键字  def 来创建一个函数,正如其他语言中的函数一样,有函数名,参数,以及返回值。

函数的参数不用指定类型,return 可以在任何地方出现,表示函数结束,如果没有返回内容则默认返回值为None。

一个简单的无参数,无返回值的hello world

>>> def hello():
    print('Hello World')

>>> hello()
Hello World

有返回值的

>>> def fun():
	return 111

>>> fun()
111

有参数有返回值的

>>> def fun(a,b,c):
	d = a+b+c
	return d

>>> fun(1,2,3)
6


python中的函数返回值 看起来可以是多个对象

>>> def fun():
	return 'aaa','bbb','ccc'

>>> fun()
('aaa', 'bbb', 'ccc')
>>> x,y,z = fun()
>>> x
'aaa'
>>> y
'bbb'
>>> z
'ccc'
>>> x,y,z
('aaa', 'bbb', 'ccc')

这里函数返回的值看起来像是三个字符串,但本质是一个元组而已,所以其实返回的还只是一个对象。




2.默认参数

函数可以有默认参数,默认参数必须从右到左填写,因为参数是从左往右传入的,若默认参数后面还有参数的话调用时会出现歧义。

若定义参数,但没有传入参数的话会出现异常。

>>> def fun(a,b,c=1):
	return a,b,c

>>> def fun(a,b,c):
	return a,b,c

>>> fun()
Traceback (most recent call last):
  File "<pyshell#28>", line 1, in <module>
    fun()
TypeError: fun() missing 3 required positional arguments: 'a', 'b', and 'c'


但是定义默认参数的话,若无参数传入的话会调用默认参数值,若传入参数的话会根据传入的参数值来操作。

>>> def fun(a=1,b=1,c=1):
	return a,b,c

>>> fun()<span style="white-space:pre">		</span>#默认参数值为1
(1, 1, 1)
>>> fun(2,3,4)<span style="white-space:pre">		</span>#使用传入的参数值
(2, 3, 4)


若默认参数后面还有参数的话就会出现异常。

>>> def fun(a=1,b,c):
	return a,b,c
SyntaxError: non-default argument follows default argument

所以默认参数只能在参数列表中从右到左出现。

>>> def fun(a,b,c=1):
	return a,b,c

>>> fun(1,2,3)
(1, 2, 3)


3.关键字传入参数

python可以根据关键字来传入参数,而不用很死板的只能从左到右一对一的传入。

>>> def fun(a,b,c):
	return a,b,c

>>> fun(1,2,3)<span style="white-space:pre">		</span>#全部默认从左到右传入参数
(1, 2, 3)
>>> fun(b=1,c=3,a=2)<span style="white-space:pre">	</span>#全部根据关键字传入参数
(2, 1, 3)
>>> fun(1,c=2,b=3)<span style="white-space:pre">	</span>#混合使用
(1, 3, 2)



4.函数的定义及使用

python中的函数允许先使用在定义,这与C++ 不同,C++必须先定义后才能使用,否则会报错。

>>> def a():
	print('a')
	b()<span style="white-space:pre">		</span>#先使用

>>> def b():<span style="white-space:pre">		</span>#再定义
	print('b')

>>> a()
a
b
>>> b()
b

但是若是使用b函数,而在下面不去定义b函数的话也会报错的。



5.可变长度的参数

(1).非关键字可变长参数(元组)

在有可变长参数(元组)的情况下,在传入相应的参数后,剩下的所有参数按顺序插入到一个元组中,非关键字可变长参数用*表示。

>>> def fun(a,b,c,*d):
	print(a,b,c,d)

>>> fun(1,2,3)
1 2 3 ()
>>> fun(1,2,3,4,5,6,7,8,9)<span style="white-space:pre">	</span>#传入的作为元组的一部分输出
1 2 3 (4, 5, 6, 7, 8, 9)


(2).关键字变量参数(字典)

关键字变量参数就是可以将字典的键值作为参数进行传入,插入到一个字典中最后输出,用**表示。

>>> def fun(a,b,c,**d):
	print(a,b,c,d)
	
>>> fun(1,2,3)
1 2 3 {}
>>> fun(1,2,3,x=4,y=5,z=6)
1 2 3 {'z': 6, 'y': 5, 'x': 4}<span style="white-space:pre">	</span>#字典是无序的


当然两种格式也可以混合使用

>>> def fun(a,b,c,*d,**e):
	print(a,b,c,d,e)

>>> fun(1,2,3)
1 2 3 () {}
>>> fun(1,2,3,4,5,6,x=7,y=8,z=9)
1 2 3 (4, 5, 6) {'z': 9, 'y': 8, 'x': 7}


6.lambda

用lambda关键字创建匿名函数,匿名是因为不需要用标准的方式来声明,比如用def,然而,作为函数,它们也可以有参数。

一个完整的lambda’语句‘代表了一个表达式,这个表达式的定义体必须和声明放在同一行。

格式:lambda 参数 : 返回内容

>>> a = lambda :print("Hello World")
>>> a()<span style="white-space:pre">		</span>#无参数的
Hello World
>>> a = lambda x,y=3:x+y<span style="white-space:pre">	</span>#有参数,一个参数为默认参数
>>> a(1)
4
>>> a(4,5)
9



7.递归

递归求阶乘

>>> def fun(n):<span style="white-space:pre">			</span>#递归求阶乘
	if n==0 or n==1:
		return 1
	else:
		return n*fun(n-1)

>>> fun(3)
6
>>> fun(4)
24


Fibonacci数列
>>> def fun(n):
	if n==0 or n==1:
		return 1
	else:
		return fun(n-1)+fun(n-2)

>>> for i in range(10):
	print('%d' % fun(i))

1
1
2
3
5
8
13
21
34
55


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值