使用函数是真正开始编程的第一步,函数y=f(x)我们并不陌生,对x进行一顿操作得到一个值y。给不同的x,进行相同的操作,得到相应的y值。

程序层面函数是执行特定任务的一段代码,将一段代码定义成函数并为该函数指定一个函数名,之后就可以用名称来“调用”这个函数。

前面我们己经用过一些函数,如len()、id()等。这些是python生来就有的函数称为内置函数。

除了python的内置函数,我们在编程中还可以自定义函数,在编程中我们大量使用的还是自定义函数,先看一个入门案例:

# -*- coding: utf-8 -*-
# 定义一个函数,能够完成打印一句话
def printInfo():
print('人生苦短,我用Python')
printInfo()
printInfo()
printInfo()
D:python3installpython.exe D:/python/py3script/python66.py
人生苦短,我用Python
人生苦短,我用Python
人生苦短,我用Python
Process finished with exit code 0

定义函数和调用(定义了函数直接写函数名就是调用):

使用def语句定义一个函数,def语句后面跟着函数的名称,然后是一对小括号,括号里面可以填写函数需要的参数,最后是冒号结束,然后下一行缩进开始写函数体的内容。完整的函数写法如下:

def 函数名(形参):

代码块

return 返回值

1.声明函数必须使用def关键字。

2.函数名:从语法角度来看,函数名是一个合法的标识符即可(变量的命名规范一样);从可读性角度来看,函数名应该由一个或多个有意义的单词组合而成,

3.形参:用于定义该函数可以接收的参数,函数可以有参数也可以无参数。

1)形参可以有多个,多个形参以英文逗号(,)隔开。

2)定义函数时指定了形参,调用该函数时就必须传入对应的参数值(或者说给对应的形参赋值)

3)形参和函数外界无任何关系,函数内部通过形参名字使用形参,调用函数时给形参传值,此时这个值叫实参。

# -*- coding: utf-8 -*-
def sum(num1, num2,):
print('两数的和是')
print(num1 + num2 )
sum(1,10) #调用函数
D:python3installpython.exe D:/python/py3script/python66.py
两数的和是
11
Process finished with exit code 0

4.函数的参数默认值

1)在定义函数的时候参数可以给定默认值,有默认值的参数必放在没有默认值参数列表的后面。

2)如果参数有默认值,在函数调用的时候可以不填,不填就使用默认的值。

2)如果参数有默认值,在函数调用的时候也可以重新赋值。

# -*- coding: utf-8 -*-
def sum(start, end, step=1):
num_list = range(start, end, step)
print(num_list,len(num_list))
total = 0
for i in num_list:
total += i
if step == 1:
print("从%d加到%d是%d" % (start, end-1, total))
elif step == 2:
print("从%d到%d奇数相加是%d" % (start, end - 1, total))
sum(1,10)
sum(1,10,step=2)
D:python3installpython.exe D:/python/py3script/python66.py
range(1, 10) 9

从1加到9是45

range(1, 10, 2) 5

从1到9奇数相加是25

Process finished with exit code 0

5.函数位置参数与关键字参数

1)不通过参数名字而是直接在对应位置传入参数值被称为位置参数。

2)使用位置参数的方式来传入参数值(给形参赋值),必须按照定义函数时指定的形参顺序来传入。

3)根据参数名来传入参数值被称为关键字(keyword)参数。

4)使用关键字参数的方式来传入值(给形参赋值),则无须关注定义的形参顺序。

# -*- coding: utf-8 -*-
# 定义一个函数
def star_people(body , girl):
print("body: ", body)
print("girl: ", girl)
return body,girl
# 根据位置传入参数
star_people('刘恺威', '赵丽颖')
# 根据关键字参数来传入参数
star_people(body = '刘恺威', girl = '赵丽颖')
# 使用关键字参数时可交换位置
star_people(girl = '赵丽颖', body = '刘恺威')
# 部分使用关键字参数,部分使用位置参数
star_people('刘恺威',girl ='赵丽颖')
D:python3installpython.exe D:/python/py3script/python66.py
body: 刘恺威
girl: 赵丽颖
body: 刘恺威
girl: 赵丽颖
body: 刘恺威
girl: 赵丽颖
body: 刘恺威
girl: 赵丽颖
Process finished with exit code 0

6.return返回值

想要在函数中把结果返回,需要在函数中使用return,return语句可以返回所有的数据类型,可以返回一个或多个值。如果没有写return语句,函数的默认返回值是None。

# -*- coding: utf-8 -*-
def sum(num1, num2,):
# 用res变量保存两数之和
res = num1 + num2
# return
return res
# 必须用变量接受return返回的值
result = sum(1,10)
print(result)
def add(num1, num2,):
# 用res变量保存两数之和 但是没有return
res = num1 + num2
result = add(1,10)
print(result)
def do(num1, num2,):
# 用res1变量保存两数之和 但是没有return
res1 = num1 + num2
# 用res2变量保存两数之差 但是没有return
res2 = num1 - num2
return res1,res2
result1,result2 = do(1,10)
print(result1,result2)
D:python3installpython.exe D:/python/py3script/python66.py
11
None
11 -9
Process finished with exit code 0

7.函数根据有没有参数,有没有返回值,可以相互组合,一共有4种

无参数,无返回值

无参数,有返回值

有参数,无返回值

有参数,有返回值