来源:python中国网 时间:2019-09-15

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

  程序层面函数是执行特定任务的一段代码,程序通过将一段代码定义成函数,并为该函数指定一个函数名,之后,就可以用名称来“调用”这个函数。前面我们己经用过一些函数,如len()、id()等。看一个案例:  

 # -*- 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)形参列表:用于定义该函数可以接收的参数。形参可以有多个,多个形参以英文逗号(,)隔开。一旦在定义函数时指定了形参列表,调用该函数时就必须传入到应的参数值,它的值是从外面传入进来的,调用函数时传入的值叫实参。

 # -*- 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)函数的参数可以给定默认值,有默认值的参数必放在没有默认值参数列表的后面;如果参数有默认值,在函数调用的时候可以不填,不填的话就使用默认的值。
 

 # -*- 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)按照形参位置传入的参数被称为位置参数。使用位置参数的方式来传入参数值,必须按照定义函数时指定的顺序来传入;根据参数名来传入参数值,则无须遵守定义形参的顺序,这种方式被称为关键字(keyword)参数。  

 # -*- 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语句,函数的默认返回值是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种

  无参数,无返回值

  无参数,有返回值

  有参数,无返回值

  有参数,有返回值