函数

函数

函数的定义

def fun_name([args]):
	function
	[return xxx]

创建和调用

def calc(a,b)
	c = a + b
	return c
	
result = calc(10,20)
print(result)

函数的参数传递

就是说在你调用时候给出的实际参数,会与开始定义函数的形式参数一一对应(一般靠位置确定)

但是也可以靠这样传递,不过不推荐

result2 = calc(b=10,a=20)
print(result2)

函数的返回值

函数返回多个值的时候,结果为元组。

例:给一串数字10,28,39,34,23,44,53,55;将其分为一组全奇数,一组全偶数。

>>> def fun(num):
	odd=[] #存奇数
	even=[] #存偶数
	for i in num:
		if i%2:
			odd.append(i)
		else:
			even.append(i)
	return odd,even
>>> print(fun([10,28,39,34,23,44,53,55]))

([39, 23, 53, 55], [10, 28, 34, 44])
>>> print(bool(10))
True
>>> bool(-1)
True
>>> bool(0)
False

函数的返回值

若函数没有返回值,可以省略return不写

函数的返回值,如果是1个,直接返回类型

函数的返回值,如果是多个,返回的结果为元组。

>>> def fun1():
	print("hello!")
hello!	
>>> def fun2():
	return 'hello'
>>> res = fun2()
>>> print(res)
hello
>>> def fun3():
	return 'hello','world'
>>> print(fun3())
('hello', 'world')

函数的参数定义

函数定义默认值参数

>>> def fun(a,b=10):
	print(a,b)
#函数的调用
>>> fun(100)
100 10
>>> fun(20,30)
20 30
def print(self,*args,sep=' ',end='\n',)
#print函数的原始定义
>>> print('hello',end='\t')
>>> print('world')
hello world
//此时两个print之间的距离就不再是换行了,而是直接一个分隔符的距离。

个数可变的位置参数

  • 定义函数的时候,可能无法实现确定传递的位置实际参数的个数的时候,用这个
  • 使用*定义个数可变的位置形参
  • 结果为一个元组
>>> def fun(*args):
		print(args)
>>> fun(10)
(10,)
>>> fun(10,30)
(10, 30)
>>> fun(10,20,30)
(10, 20, 30)
>>> def fun(*args):
	print(args)
	print(args[0])
>>> fun(10)
(10,)
10
>>> fun(20,30)
(20, 30)
20

个数可变的关键字形参

  • 定义函数的时候,可能无法实现确定传递的位置实际参数的个数的时候,用这个
  • 使用**定义个数可变的位置形参
  • 结果为一个字典
>>> def fun1(**args):
	print(args)
	
>>> fun1(a=10)
{'a': 10}
>>> fun1(a=20,b=30,c=40)
{'a': 20, 'b': 30, 'c': 40}
def print(self,*args,sep=' ',end='\n',)
print('hello','world','java')
      
hello world java
#例如print函数的参数的个数就是可变。
注意点
#以下代码,程序会报错,个数可变的位置参数,只能是一个
def fun1(*arg1,*arg2)
	pass
#以下代码,程序会报错,个数可变的关键字参数,只能是一个
def fun2(**arg1,**arg2)
	pass
#若同时有位置形参和关键字形参,把位置形参放在第一位
def fun3(*arg1,**arg2)
	pass
def fun(a,b,c):
	print('a=',a)
	print('b=',b)
	print('c=',c)

fun(10,20,30) //位置传参
list1 = [11,22,33]
fun(list1)//xxx 因为这个时候列表只能算一个元素
fun(*list1) //bingo

fun(a=100,c=300,b=200) //关键字传参
dic={'a':111,'b':222,'c':333}
fun(dic) //xxx
fun(**dic) //bingo,关键字传参成功,就是在函数调用的时候把每个键值对转换成关键字传递了
posted @ 2022-09-06 22:36  Dinesaw  阅读(46)  评论(0编辑  收藏  举报