#Python答疑#

Python中函数定义错误类型 python定义函数规则_默认参数

一. 函数的定义

1. 函数的定义的格式

def 函数名(参数):

pass

return 表达式

2. 函数名命名规则: 字母、数字和下划线组成,和变量命名规则一致

return 后面可以返回任意表达式,但不能是赋值语句

3. 函数调用:

函数名(参数)

4. return 和 print 的区别,return是函数的返回值,返回值可以赋值给变量,而print只是打印出来

实例:判断是否大于8,有2种方法

方法一

li = [2, 3, 8, 9, 12]
for i in li:
print(True if i > 8 else False)

方法二 定义一个 fun()的函数名

def fun(li):
for i in li:
print(True if i > 8 else False)
fun([2, 3, 8, 9, 12])

输出结果:

False
False
False
True
True

二. 函数的调用

1. 函数参数

函数定义之后,那函数里面可以传入哪些对象呢?

第一种 必备参数:

def func(x):
pass

第二种 默认参数:

def func(x, y=None):
pass

第三种 不定长参数:

def func(*args, **kwargs):
pass

2. 参数的调用:

位置参数

关键字参数

3. 在python中参数无类型,参数可以接受任意对象,只有函数中代码才会对参数类型有限制

4. 函数参数调用

第一种 必备参数:

def func(x):
print(x)
func(1)

第二种 默认参数:

def func(x, y=None):
print(x)
print(y)
func(1)
func(1, 2)

第三种 不定长参数(动态参数):

def func(*args, **kwargs):
print(args)
print(kwargs)
func(2, 3, 8, a=6, b=8, c=9)
func(*(2, 3, 8), **{'a': 6, 'b': 8, 'c': 9})

*args, **kwargs ,星号是关键字, args,kwargs是变量名,规范。

调用函数时,所有传入的 多余的 位置参数都会被args接收生成一个元组。

调用函数时,所有传入的 多余的 关键字参数都会被kwargs接收生成一个字典。

总结:

1.必备参数:在函数调用的时候,必备参数必须要传入。

2.默认参数:在函数调用的时候,默认参数可以不传入值,不传入值时,会使用默认参数

3.不定长参数(动态参数):在函数调用的时候,不定长参数可以不传入,也可以传入任意长度。其中定义时,元组形式可以放到参数最前面,字典形式只能放到最后面

实例1 默认参数的形参与实参

def sum(y, a, b, c=8888):
result = a + b + c
print("a:", a)
print("b:", b)
print("c:", c)
print(result)
sum(25, b=64, c=80, a=36)

输出结果:

a: 36
b: 64
c: 80
180

解析:1. a, b, c形式参数,简称形参,函数没有调用时,它没有任何意义,调用时,它必须传入参数,所以也叫必须参数。

2. def sum(a, b, c=8888): # c=8888默认参数,不传入实参时,形参默认为8888,但是,你如果传入实参,它也能接收。注意:默认参数一定要写在必须参数的后面,语法规则。

3. sum(b=11, c=22, a=33) # b=11, c=22, a=33关键字参数,函数参数会通过关键字去找,不需要一一对应。注意:关键字参数和位置参数一起使用时,关键字参数必须要写在位置参数的后面,这是语法要求。

实例2 动态参数 *args

def sum(a, *args):
print(a)
print(args)
print(type(args))
sum(5, 6, 7, 8, 9)
输出结果:
5
(6, 7, 8, 9)

实例3 return与print的区别

def sum(a, *args):
result = 0
for i in args:
print(i)
result += i
print("result:", result)
return result
sum(5, 6, 7, 8, 9)
输出结果:
6
7
8
9
result: 9

解析:return 和 print 的区别,return是函数的返回值,返回值可以赋值给变量,而print只是打印出来。

实例4 动态参数

def sum1(f, **kwargs):
print(f)
print(kwargs)
print(type(kwargs))
sum1(a=5, c=6, b=7, f=8, g=9)
输出结果:
8
{'a': 5, 'c': 6, 'b': 7, 'g': 9}

实例5 动态参数args, **kwargs的使用

第一种:单独使用*args

def f1(*args):
print(args, type(args))
f1(123, 456)
输出结果:
(123, 456) 
第二种单独使用 **kwargs
def f2(**kwargs):
print(kwargs, type(kwargs))
f2(k1=123, k2=456)
输出结果:
{'k1': 123, 'k2': 456} 
*args, **kwargs混合使用:
def f3(p, *args, **kwargs):
print(p, type(p))
print(args, type(args))
print(kwargs, type(kwargs))
f3(11, 22, 33, k1=432, k2=256)
输出结果:
11 
(22, 33) 
{'k1': 432, 'k2': 256} 
实例6 动态参数传入列表
def f1(*args):
print(args, type(args))
li = [101, 220, 666]
f1(li, 255)
f1(*li, 255)
输出结果:
([101, 220, 666], 255) 
(101, 220, 666, 255) 
实例7 动态参数传入字典
def f2(**kwargs):
print(kwargs, type(kwargs))
dic = {'k1': 123, 'k2': 456}
f2(**dic)
输出结果:
{'k1': 123, 'k2': 456}

解析: 形参,必须参数,默认参数,*args,**kwargs。实参,位置参数,关键字参数。

编制by伟森leung 喜欢本文章的可以请关注伟森leung,后续有更多python方面的知识分享。

标签: 形参与实参、python 函数定义、函数调用、 python教程