函数

函数

1,定义和使用

1
2
3
4
5
6
def 函数名(参数):
       
    ...
    函数体
    ...
    返回值

函数的定义主要有如下要点:

  • def:表示函数的关键字
  • 函数名:函数的名称,日后根据函数名调用函数
  • 函数体:函数中进行一系列的逻辑计算,如:发送邮件、计算出 [11,22,38,888,2]中的最大数等...
  • 参数:为函数体提供数据
  • 返回值:当函数执行完毕后,可以给调用者返回数据。

调用运行:可以带参数也可以不带参数

函数命名规则:

-函数名必须以下划线或者字母开头,可以包含任意字母数字下划线的组合,不能使用任何的标点符号

-函数名是区分大小写的

-函数名不能是python 内部保留字

-带参数

def test(x):
'''
y = 2 * x + 1
:param x: 整数数字
:return: 返回计算结果
'''
y = 2 * x + 1
return y
print(test(4))======>结果是:9

-不带参数

def test():
'''
y = 2 * x + 1
:param x: 整数数字
:return: 返回计算结果
'''
x = 4
y = 2 * x + 1
return y
print(test())========结果是:9

2,使用函数的好处:

- 减少代码量

- 保持一致性,易维护

- 可扩展性

3, 过程

过程是没有返回值的函数

1)函数没有返回值(返回值数=0),返回None

2) 返回值数=1(有一个返回值),返回object

3) 返回值数>1(有多个返回值),返回tuple(元祖)

例如:

def test01():
msg = "hi"
print(msg)==========>没有返回值,所以print(t1)值是None


def test02():
msg = "what is your name"
print(msg)
return msg=========>返回值是msg,所以print(msg)值是 what is your name


def test03():
msg = "what is your name"
print(msg)
return 1, 2, {1:2, 33: 44}, [23, 34]=====>多个返回值,所以返回值是元祖
(1, 2, {1:2, 33: 44}, [23, 34])

t1 = test01()
t2 = test02()
t3 = test03()
print(t1)
print(t2)
print(t3)

4,函数参数

1)位置参数 (注意,传参数时需对应。如:test(x, y, z) 参数应该对应输入3个

def test(x, y, z):
'''
a = x + y + z
:param x: 整数数字
:param y: 整数数字
:param z: 整数数字
:return: 返回计算结果
'''
a = x + y + z
return a
print(test(1, 2, 3))=====>结果是:6

2)关键字参数

def test(x, y, z):
'''
a = x + y + z
:param x: 整数数字
:param y: 整数数字
:param z: 整数数字
:return: 返回计算结果
'''
a = x + y + z
return a
test(x = 1, y = 2, z = 3)
print(test(x = 1, y = 2, z = 3))======>结果是: 6

3)位置参数与关键字参数混用时,位置参数必须在关键字参数左边。例如print(test(1,2,z=3)

一个形参只能一次传一个值,不能传多个值

4)默认参数

def test(x, y, z,type = 3): =====>type是默认参数。写参数时可以不写type
'''
a = x + y + z
:param x: 整数数字
:param y: 整数数字
:param z: 整数数字
:return: 返回计算结果
'''
a = x + y + z + type
return a
test(1, 2, 3)
print(test(1, 2, 3))=======>结果是: 9

5)参数组

-*args

接收多个参数,并把它放成列表的形式

*args除了不能传入关键字参数(例如:x=2)和**字典外,其他的都可以传

- **kwargs

接收多个参数,并把它放成字典的形式

**kwargs 只能接收关键字参数,如果接收字典的话,需要在字典前加上**

def test(**kwargs):
print(kwargs)#{'name': 34}
a = test(**{'name':34})
print(a)#None 函数没有返回值,所以默认None

 **kwargs :一般放键值对 (例如: a=3,b=3)

*args 一般放(例如:1,2,3等具体参数)

*args 必须放在**kwargs前边。

原文地址:https://www.cnblogs.com/wode110/p/14425453.html