#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教程